Skip to main content

Local development

Processes

You usually run four terminals:

#ServiceCommand / notes
1Postgresdocker compose up postgres (or -d in background).
2APIpnpm --filter api dev on port 4000 (default).
3EmulatorsAuth, Firestore, Functions — ports from firebase.json.
4Dashboardpnpm --filter web dev — Vite, default 5173 (or next free port).

Load root .env in shells that run the API and emulators so API_SERVICE_TOKEN, DATABASE_URL, and Firebase settings resolve.

Emulator ports (non-default)

From the main repo’s firebase.json (subject to change):

ServiceTypical port
Auth9299
Firestore8080
Functions5011
Emulator UI4600

The web app is configured for local Firebase via VITE_* variables — see .env.example.

Useful commands

pnpm typecheck
pnpm build

Database migrations:

DATABASE_URL='postgresql://recurfy:recurfy@localhost:5432/recurfy' \
pnpm --filter @recurfy/db exec prisma migrate dev --name <change-name>

Marketing & docs sites

From the monorepo root:

pnpm --filter marketing dev
pnpm --filter docs start

See the repository README for the canonical layout and URLs (www.recurfy.com, docs.recurfy.com, app.recurfy.com).