Documentation
Everything you need to go from clone to customers.
Quick start
Five steps from a fresh clone to a running app. The full walkthrough lives in docs/getting-started.md and docs/first-2-hours.md.
1. Install
Clone the repo and install dependencies. Node 20+ and pnpm 9+ are the only prerequisites (plus Docker for the zero-config local database).
pnpm install2. Bootstrap the database
One command: creates .env, starts Postgres in Docker, writes DATABASE_URL and an auth secret, applies migrations, and seeds demo data. Bring your own Postgres by setting DATABASE_URL first - the script adapts.
pnpm db:setup3. Brand it
Every user-facing string lives in packages/config/src/site.ts. Pricing tiers and credit packs live in pricing.ts. No component edits needed.
packages/config/src/site.ts4. Pick your modules
Flip modules on or off in one registry file, then validate that dependencies still line up.
pnpm --filter web validate:modules5. Run it
Start the dev server and sign up - auth, billing, teams, and the admin panel are already wired.
pnpm devModules
Features ship as modules with a single on/off flag. This table reflects the live registry - what you see enabled here is what this deployment is running.
| Module | What you get | Status |
|---|---|---|
| Core | Auth, billing, user settings, transactional email | Enabled |
| Blog & Docs | MDX blog, documentation pages, and changelog | Enabled |
| Waitlist Mode | Replace the app with a coming-soon page and email capture | Enabled |
| Teams & Multi-tenancy | Organisations, invitations, RBAC, per-seat billing | Enabled |
| Admin Panel | Superadmin dashboard, user management, impersonation, audit log | Enabled |
| Usage-Based Billing | Credit packs, metered feature usage, credit ledger | Enabled |
| AI Features | Prompt interface, AI proxy, credit tracking, history panel | Enabled |
| Directory Listing | Public listing directory with category filters and featured slots | Enabled |
| Job Board | Public job board with type filters, featured posts, and salary display | Enabled |
Components
Source-owned UI primitives in packages/ui - change them freely, no library updates to wait on.
Buttons, badges & inputs
Variants come from class-variance-authority.
Alert component
Deployment
Pushing to main runs CI, applies database migrations, and deploys to Vercel - see .github/workflows/deploy.yml. Set four repository secrets and it works for your fork too:
VERCEL_TOKEN # vercel.com/account/tokens
VERCEL_ORG_ID # vercel project settings
VERCEL_PROJECT_ID # vercel project settings
DATABASE_URL # production Postgres (migrations run before deploy)Self-hosting instead? next build + next start behind any Node host works - Railway, Fly.io, and a plain VPS are covered in docs/getting-started.md.