CivicConnect is a full-stack civic issue reporting platform that helps citizens report local problems, enables authorities to manage complaints efficiently, and improves transparency through dashboards, geolocation, analytics, and AI-assisted complaint processing.
- Overview
- Problem Statement
- Key Features
- Tech Stack
- Architecture
- Screenshots
- Installation
- Environment Variables
- Usage
- API Endpoints
- Folder Structure
- Future Improvements
- Contributors
- License
- Acknowledgements
CivicConnect is designed to bridge the gap between citizens and municipal authorities by providing a centralized platform for civic complaint registration, monitoring, and resolution.
- Allows citizens to submit civic complaints with descriptions, images, and location details
- Helps administrators review, classify, assign, and resolve complaints
- Tracks complaint lifecycle with status updates and SLA monitoring
- Provides dashboards, analytics, and public visibility into civic issue trends
Traditional complaint systems are often slow, fragmented, and lacking transparency. CivicConnect solves this by creating a structured, digital-first civic reporting workflow that is easier to use, monitor, and scale.
Urban civic issues such as:
- Potholes
- Garbage overflow
- Water leakage
- Streetlight failures
- Drainage problems
- Public infrastructure damage
are often under-reported, poorly tracked, or delayed in resolution due to disconnected systems and manual workflows.
CivicConnect addresses this challenge through AI-assisted complaint handling, map-based visibility, and role-based administrative management.
- ๐ Citizen complaint submission with image upload and location capture
- ๐ค AI-assisted complaint categorization, priority scoring, and duplicate detection
- ๐บ๏ธ Interactive map view for visualizing complaint hotspots
- ๐ Public and admin analytics dashboards for trend monitoring
- ๐ข Department assignment and complaint workflow management
- โฑ๏ธ SLA tracking for time-bound complaint resolution
- ๐ JWT-based authentication with role-based access control
- ๐ In-app notification system for complaint updates
- ๐ฌ Email notification support for important complaint status changes
- ๐ Severity ranking and operational insights for administrators
- ๐งพ Citizen dashboard for complaint history and status tracking
- ๐ Public transparency portal for open civic visibility
- โ๏ธ React 18
- ๐ฆ TypeScript
- โก Vite
- ๐จ Tailwind CSS
- ๐งญ React Router
- ๐ Leaflet + React Leaflet
- ๐ Recharts
- ๐ Axios
- ๐ข Node.js
- ๐ Express.js
- ๐ JWT Authentication
- ๐ bcrypt
- โ๏ธ Cloudinary
- ๐ฉ Nodemailer
- ๐งช Jest + Supertest
- ๐ MongoDB
- ๐งฉ Mongoose
- ๐ง AI complaint processing pipeline
- ๐ก๏ธ Helmet + Rate Limiting + Validation
- โฐ Node Cron for SLA monitoring
git clone https://github.com/your-username/civicconnect.git
cd civicconnectnpm installCreate the required .env files using the sample placeholders below.
npm run devThis runs:
- Frontend on
http://localhost:5173 - Backend on
http://localhost:5000
npm run buildnpm run testPORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=7d
CORS_ORIGIN=http://localhost:5173
CLOUDINARY_CLOUD_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
MAILTRAP_HOST=your_mailtrap_host
MAILTRAP_PORT=2525
MAILTRAP_USER=your_mailtrap_user
MAILTRAP_PASS=your_mailtrap_password
MAILTRAP_SENDER_EMAIL=no-reply@example.com
RESEND_API_KEY=your_resend_api_key
RESEND_FROM_EMAIL=no-reply@example.comVITE_API_URL=http://localhost:5000/api- Register or log in to the platform
- Submit a complaint with title, description, image, and location
- Track complaint status from the citizen dashboard
- View admin remarks and updates in real time
- Log in with admin credentials
- Review complaint queue and analytics
- Assign complaints to departments
- Update status, add remarks, and monitor SLA risks
- Browse complaints
- View category and trend statistics
- Explore complaints on the city map
Base URL:
http://localhost:5000/api
| Method | Endpoint | Description |
|---|---|---|
POST |
/auth/register |
Register a new user |
POST |
/auth/login |
Log in a user |
GET |
/auth/me |
Get current authenticated user |
| Method | Endpoint | Description |
|---|---|---|
GET |
/user/profile |
Fetch user profile |
PUT |
/user/profile |
Update user profile |
PUT |
/user/password |
Update user password |
| Method | Endpoint | Description |
|---|---|---|
GET |
/complaints |
Get complaints list |
GET |
/complaints/nearby |
Get nearby complaints |
GET |
/complaints/:id |
Get complaint by ID |
POST |
/complaints |
Create a complaint |
PATCH |
/complaints/:id |
Update complaint |
PATCH |
/complaints/:id/status |
Update complaint status |
| Method | Endpoint | Description |
|---|---|---|
GET |
/admin/complaints |
Get admin complaint queue |
GET |
/admin/dashboard-trends |
Get admin dashboard trends |
PATCH |
/admin/complaints/:id/assign |
Assign department |
PATCH |
/admin/complaints/:id/manage |
Manage complaint workflow |
GET |
/admin/departments |
Get departments |
GET |
/admin/sla-violations |
Get SLA violation list |
| Method | Endpoint | Description |
|---|---|---|
GET |
/analytics/category |
Complaint category analytics |
GET |
/analytics/trends |
Complaint trend analytics |
GET |
/analytics/wards |
Ward-wise analytics |
GET |
/analytics/severity |
Severity analytics |
| Method | Endpoint | Description |
|---|---|---|
GET |
/notifications |
Get notifications |
PATCH |
/notifications/read-all |
Mark all as read |
PATCH |
/notifications/:id/read |
Mark one as read |
DELETE |
/notifications/selected |
Delete selected notifications |
DELETE |
/notifications |
Delete all notifications |
DELETE |
/notifications/:id |
Delete a notification |
| Method | Endpoint | Description |
|---|---|---|
GET |
/public/stats/trends |
Public dashboard trend metrics |
GET |
/citizen/dashboard-trends |
Citizen dashboard trend metrics |
| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
API health status |
CivicConnect/
โโโ client/
โ โโโ public/
โ โ โโโ images/
โ โโโ src/
โ โ โโโ components/
โ โ โโโ context/
โ โ โโโ hooks/
โ โ โโโ lib/
โ โ โโโ pages/
โ โ โโโ services/
โ โ โโโ styles/
โ โ โโโ test/
โ โ โโโ utils/
โ โโโ package.json
โ โโโ vite.config.ts
โโโ server/
โ โโโ src/
โ โ โโโ ai-engine/
โ โ โโโ config/
โ โ โโโ controllers/
โ โ โโโ middleware/
โ โ โโโ models/
โ โ โโโ routes/
โ โ โโโ services/
โ โ โโโ types/
โ โ โโโ utils/
โ โโโ tests/
โ โโโ package.json
โ โโโ tsconfig.json
โโโ DESIGNDOC.md
โโโ PRD.md
โโโ TECH.md
โโโ package.json
โโโ README.md- ๐ฑ Native mobile application for Android and iOS
- ๐ Multilingual interface support
- ๐ค Voice-based complaint submission
- ๐ง More advanced ML models for prediction and routing
- ๐ฐ๏ธ Real-time ward heatmaps and clustering
- ๐จ SMS and WhatsApp notifications
- ๐ณ๏ธ Community upvoting for recurring public issues
- โ๏ธ Cloud deployment with CI/CD pipeline
- ๐ PDF report generation for municipal review
- ๐ Integration with government APIs and smart city platforms
- Open-source community for the libraries and frameworks used in this project
- React, Node.js, MongoDB, Express, and Vite communities
- Leaflet and OpenStreetMap for geospatial visualization
- Cloudinary for media storage support
- Academic mentors, faculty guides, and project reviewers
- Inspiration from smart city, civic-tech, and e-governance platforms
CivicConnect aims to make civic reporting smarter, faster, and more transparent.
If you find this project useful, consider giving it a โญ on GitHub.