Local Development Setup
This guide will help you set up CivStart for local development.
Prerequisites
- Node.js: 20.x or higher
- pnpm: 9.12.0 or higher
- Docker: For local PostgreSQL and Redis
- Git: For version control
Initial Setup
1. Clone the Repository
git clone https://github.com/SuperAppsLLC/CivStart.git
cd CivStart
2. Install Dependencies
pnpm install
3. Environment Configuration
Create .env.local files for each application:
Backend (apps/backend/.env.local)
# Database
DATABASE_URL="postgresql://civstart:password@localhost:5432/civstart_dev"
# Redis
REDIS_URL="redis://localhost:6379"
# Clerk
CLERK_SECRET_KEY="your_clerk_secret_key"
CLERK_PUBLISHABLE_KEY="your_clerk_publishable_key"
# AI/ML
GOOGLE_GEMINI_API_KEY="your_gemini_api_key"
PINECONE_API_KEY="your_pinecone_api_key"
# URLs
FRONTEND_URL="http://localhost:3000"
BACKEND_URL="http://localhost:3001"
Frontend (apps/frontend/.env.local)
NEXT_PUBLIC_API_URL="http://localhost:3001"
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="your_clerk_publishable_key"
CLERK_SECRET_KEY="your_clerk_secret_key"
Admin (apps/admin/.env.local)
NEXT_PUBLIC_API_URL="http://localhost:3001"
NEXT_PUBLIC_ADMIN_CLERK_PUBLISHABLE_KEY="your_admin_clerk_publishable_key"
ADMIN_CLERK_SECRET_KEY="your_admin_clerk_secret_key"
4. Start Docker Services
pnpm docker:up
This starts:
- PostgreSQL on port 5432
- Redis on port 6379
5. Run Database Migrations
pnpm --filter=@repo/database db:migrate:dev
6. Seed the Database (Optional)
pnpm reset:local
This will:
- Clear all data
- Sync from Airtable
- Create 50 test accounts
- Generate AI matches
Running the Applications
Start All Applications
pnpm dev
This starts:
- Backend: http://localhost:3001
- Frontend: http://localhost:3000
- Admin: http://localhost:3002
Start Individual Applications
# Backend only
pnpm --filter=@civstart/backend dev
# Frontend only
pnpm --filter=@civstart/frontend dev
# Admin only
pnpm --filter=@civstart/admin dev
Available Scripts
Development
pnpm dev- Start all apps in dev modepnpm build- Build all appspnpm lint- Lint all packagespnpm format- Format code with Prettier
Database
pnpm db:generate- Generate Prisma clientpnpm db:migrate:dev- Run migrationspnpm db:studio- Open Prisma Studiopnpm reset:local- Reset and seed database
Docker
pnpm docker:up- Start Docker servicespnpm docker:down- Stop Docker servicespnpm docker:logs- View Docker logspnpm docker:reset- Reset Docker volumes
Testing
Run Tests
# All tests
pnpm test:all
# Backend tests only
pnpm --filter=@civstart/backend test
# Frontend tests only
pnpm --filter=@civstart/frontend test
Test Coverage
pnpm test:check-coverage
Troubleshooting
Port Already in Use
If ports 3000, 3001, or 3002 are in use:
# Find and kill processes on ports
lsof -ti:3000 | xargs kill -9
lsof -ti:3001 | xargs kill -9
lsof -ti:3002 | xargs kill -9
Database Connection Issues
- Ensure Docker is running:
docker ps - Check database logs:
pnpm docker:logs:db - Reset database:
pnpm docker:reset
Prisma Client Issues
If you encounter Prisma client errors:
pnpm --filter=@repo/database db:generate