Prerequisites
Before you start, make sure you have:- Node.js 24+ — download here
- pnpm 10+ — install with
npm install -g pnpm - A Neon Postgres database — create one
- A Supabase project — create one (for authentication)
- Upstash Redis — caching and rate limiting
- Vercel Blob — CSV file storage
- Inngest — background job processing
- Anthropic API key — AI-powered CSV column mapping
The app degrades gracefully if any of these are missing, but all four are required for full functionality.
1. Clone and Install
2. Configure Environment Variables
Copy the example files and fill in your values:apps/api/.env — backend configuration:
Generate an encryption key with:
apps/web/.env — frontend configuration:
See the Environment Variables page for the full list of configuration options.
3. Set Up the Database
Push the Drizzle schema to your Neon database:4. Start Development
Run all apps in dev mode with a single command:5. Verify It Works
- Open http://localhost:3000 in your browser
- Sign up or log in through Supabase Auth
- Try importing a CSV file or creating a contact manually
- Check the dashboard for stats and recent activity
Useful Commands
What’s Next?
Architecture Overview
Understand how the monorepo is structured and why.
Contributing Setup
Detailed development environment setup for contributors.