CityCare is a civic engagement platform that empowers citizens to report issues in their community, track complaint progress, and collaborate with local authorities to improve their neighborhoods.
- Raise Complaints — Submit detailed reports with descriptions, images.
- Track Status — Monitor your complaint’s progress in real time.
- Department Routing — Complaints are automatically assigned to relevant departments (roads, sanitation, power, etc.).
- Officer Dashboard — Dedicated portal for municipal officers to view and resolve complaints.
- User Dashboard — View submitted complaints, and check updates.
- Authentication — Secure login via email/password and Google Sign-In.
- Responsive UI — Modern, mobile-friendly interface built with Tailwind CSS and Lucide Icons.
- Media Uploads — Upload images to Cloudinary for better issue documentation.
- Map Integration — Pin complaint locations using Leaflet maps.
- Admin Dashboard - Unified Dashboard for accepting or rejecting officers request, and to view to total, pending, resolved complaints.
citycare/
├── client/ # React frontend
│ ├── src/
│ ├── public/
│ └── ...
├── server/ # Go Fiber backend
│ ├── cmd/
│ ├── pkg/
│ │ ├── handlers/
│ │ ├── models/
│ │ ├── routes/
│ │ └── db/
│ └── ...
├── docker-compose.yml
└── README.md
Client:
Server:
- Go (Fiber framework)
- GORM — ORM for PostgreSQL
- PostgreSQL
- Cloudinary — Media storage
- JWT Authentication
- Google OAuh
Deployment:
- Dockerized (Frontend + Backend + PostgreSQL)
- Hosted on Render (backend) and Vercel (frontend)
- Nginx reverse proxy
- PostgreSQL hosted on NeonDB
- Clone CityCare
- cd CityCare
docker compose up -- build
cd server
go mod tidy
go run cmd/main.go
cd client
npm install
npm run dev
To run this project, you will need to add the following environment variables to your .env file
JWT_SECRET=
RESEND_API_KEY=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
DATABASE_URL=
APP_BASE_URL=http://localhost:8000/ #used by resend to send mail
VITE_GOOGLE_CLIENT_ID = #please generate one from the google cloud console
VITE_API_BASE_URL = http://localhost:8000
VITE_GOOGLE_CLIENT_ID =
VITE_API_BASE_URL = http://localhost:8000





