Prerequisites
Before you start, make sure you have:- Node.js 24+ — check with
node -v - pnpm 10+ — install with
corepack enableornpm install -g pnpm - Accounts on Neon, Supabase, Upstash, and Vercel (free tiers work fine)
Step-by-Step Setup
1. Clone and Install
pnpm install also configures local git hooks automatically via pnpm prepare — you’ll get pre-commit linting and pre-push checks out of the box.
2. Configure Environment Variables
Copy the example files and fill in your values:3. Set Up the Database
Push the Drizzle schema to your Neon database:drizzle-kit push. Always use this command instead of running drizzle-kit directly.
4. Start Development
Run everything at once (web, API, email preview, Inngest dev server):5. Verify It Works
- Open http://localhost:3000 — you should see the login page
- Open http://localhost:3001/api/docs — the Scalar API reference should load
- Run the test suite to confirm everything is wired up:
Useful Commands
| Command | What it does |
|---|---|
pnpm dev | Start all apps in dev mode |
pnpm build | Build everything |
pnpm test | Run all unit tests (Vitest) |
pnpm lint | Check formatting and lint rules (Biome) |
pnpm lint:fix | Auto-fix lint and formatting issues |
pnpm typecheck | Run TypeScript type checking |
pnpm --filter @folksbase/db db:studio | Open Drizzle Studio (database GUI) |
pnpm --filter @folksbase/web storybook | Run Storybook on port 6006 |
Monorepo Structure
packages/. The two apps (web and api) are independent deployments — never import directly between them.
Next Steps
- Read the Code Style guide before writing code
- Check the Testing page for how to write and run tests
- See Git Conventions for commit format and PR rules