Local Setup
Clone, install, fill in the environment, run the app and the tests on your own machine.
Prerequisites
Node 20 or newer, npm (the repository tracks package-lock.json; do not use Bun or pnpm here), Git, and access to the repository, Vercel, Supabase and Clerk.
Steps
Clone and install
git clone https://github.com/shaun-mo/impacthub.git
cd impacthub
npm installCreate the environment file
cp .env.example .env.localFill in the values from Vercel (Settings, Environment Variables) or from each service's dashboard. .env.local is ignored by Git and must stay so. Names only ever go in .env.example.
Run the app
npm run devOpen http://localhost:3000. The sign-in page uses the Clerk instance your keys point at.
Run the gate
npx tsc --noEmit
npm testEvery change passes both before it is pushed.
Which Services to Point At
Use the Clerk development instance and a development Supabase project for anything that writes. Pointing at production is possible for read-only work but every write goes to real members, so do not.
Clerk webhooks need a public address to reach your machine. Run a tunnel (for example ngrok http 3000) and add the tunnel URL as a webhook endpoint in the development Clerk instance.
Useful Commands
| Command | What it does |
|---|---|
npm run dev | Development server with hot reload |
npm run build | Production build, the same as Vercel runs |
npm test | Vitest, every lib/**/*.test.ts |
npm run lint | ESLint, including the design-system lint rules |
npx tsc --noEmit | Type check |
npm run role -- --email x --role admin | Change a role from the command line |
npm run nexus:sync | Bulk sync members to Nexus |
npm run reseed:profiles | Re-fill profiles from application answers (gaps only) |
Scripts under scripts/ run with npx tsx --env-file=.env.local scripts/<name>.ts.
This Docs Site
cd docs-site
npm install
npm run devOpen http://localhost:3333. Pages are MDX under docs-site/content/docs/; the sidebar is docs-site/config/docs.ts.

