A volunteer management platform for connecting volunteers with civic initiatives.
- Backend: Golang + Gin framework (REST API)
- Frontend: React + Vite + React Router
- Database: PostgreSQL + Redis
- Auth: JWT with dual support (email/password + Google OAuth)
- Email: Mailgun integration
- Infrastructure: GCP (Cloud Run, Cloud SQL, Memorystore)
-
Prerequisites:
- Docker & Docker Compose
- Go 1.21+
- Node.js 18+
- Terraform (for infrastructure)
-
Setup:
# Clone and start services git clone <repo-url> cd CivicWeave # Start local development environment make dev-up # Initialize database make db-migrate # Seed admin user make db-seed
-
Access:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Admin Portal: http://localhost:3000/admin
make dev-up # Start all services
make dev-down # Stop all services
make db-migrate # Run database migrations
make db-seed # Seed initial data
make test # Run tests
make lint # Run linters/
├── backend/ # Golang API server
├── frontend/ # React SPA
├── infrastructure/ # Terraform configs
├── shared/ # Shared types/schemas
└── docker-compose.yml
-
Set up new GCP project:
make setup-gcp
This creates a new GCP project, enables APIs, and generates secure configuration.
-
Update API keys in
infrastructure/terraform/terraform.tfvars:- Mailgun API key and domain
- Google OAuth client credentials
-
Deploy infrastructure:
make deploy-infra
-
Build and deploy applications:
make build-push make deploy-app
See infrastructure/terraform/README.md for detailed deployment instructions.
- Create feature branch from
main - Make changes
- Test locally with
make test - Submit pull request
MIT