A comprehensive volunteer management system built with Next.js, Prisma, and PostgreSQL.
- Node.js 18+
- Docker Desktop - Download and Install Docker
- IMPORTANT: Docker Desktop must be running before starting the database
- On Windows/Mac: Open Docker Desktop application
- On Linux: Ensure Docker service is running (
sudo systemctl start docker)
CRITICAL FIRST STEP: Make sure Docker is running!
- Windows/Mac: Open Docker Desktop application and wait for it to start
- Linux:
sudo systemctl start docker - Verify Docker is running:
docker --versionshould return version info
git clone <repository-url>
cd VolunteerEngine
npm installCreate a .env file in the project root:
# Database connection (pre-configured for our Docker setup)
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/volunteerEngine_dev"
# Authentication secret (generate new one below)
AUTH_SECRET="your-generated-secret-key-here"Generate AUTH_SECRET:
- macOS/Linux:
openssl rand -base64 32 - Windows: Use generate-secret.vercel.app/32
Run these commands in order:
# Start PostgreSQL database with Docker (requires Docker to be running!)
npm run db:up
# Push database schema to create tables
npm run db:push
# Seed database with test data (users, events, etc.)
npm run db:seednpm run devOpen http://localhost:3000 to view the application.
- Solution: Start Docker Desktop application or
sudo systemctl start dockeron Linux
- Check: Is Docker running?
docker psshould show the volunteer_engine container - Fix: Run
npm run db:upto start the database
- Cause: Another PostgreSQL instance is running
- Fix: Stop other PostgreSQL instances or change port in
docker-compose.yml
npm run db:up # Start PostgreSQL with Docker
npm run db:down # Stop PostgreSQL container
npm run db:push # Update database schema
npm run db:seed # Add test data
npm run db:studio # Open database viewer (http://localhost:5555)Our docker-compose.yml creates:
- PostgreSQL 16 database server
- Database:
volunteerEngine_dev - Username/Password:
postgres/postgres - Port:
5432 - Data persistence: Survives container restarts
For testing purposes, use these pre-configured accounts:
- Email:
admin@test.com - Password:
admin-pass - Access: Full admin dashboard and user management features
- Email:
volunteer@test.com - Password:
vol-pass - Access: Volunteer dashboard and profile management features
Run the test suite:
npm test # Run all tests
npm run test:coverage # Run tests with coverage reportFor authentication/registration setup: https://nextjs.org/learn/dashboard-app/adding-authentication