Install dependencies:
npm install
Create a single root env file:
cp .env.example .env
Fill
.envwith your Supabase project values:VITE_SUPABASE_URL=https://your-project.supabase.coVITE_SUPABASE_PUBLISHABLE_KEY=your-supabase-publishable-keyVITE_API_URL=http://localhost:4010SUPABASE_URL=https://your-project.supabase.coSUPABASE_PUBLISHABLE_KEY=your-supabase-publishable-keySUPABASE_SERVICE_ROLE_KEY=your-supabase-service-role-keyCLIENT_ORIGIN=http://localhost:5173PORT=4010OPENROUTER_API_KEY=your-openrouter-api-keyOPENROUTER_MODEL=arcee-ai/trinity-large-preview:free
OPENROUTER_API_KEYis server-only. Do not expose it via aVITE_*variable.Link your hosted Supabase project and push the repo migration:
npx supabase login npx supabase link --project-ref <your-project-ref> npx supabase db push
Optionally seed 20 demo builders plus projects into your hosted Supabase project:
npm run seed:demo -w server
In the Supabase dashboard, enable Email auth under Authentication if it is not already enabled.
Start the app:
npm run dev
Run both services from the repo root:
npm run dev- Client:
http://localhost:5173 - API:
http://localhost:4010
If Vite starts on a different port such as 5174, update CLIENT_ORIGIN in the root .env to match it before testing profile saves.
npm run lint
npm run test
npm run test:e2enpm run test:e2e expects E2E_EMAIL and E2E_PASSWORD to be set for a verified Supabase test user.