A full-stack Complaint Management System built with Node.js, Express.js, MongoDB, and JWT Authentication. CitizenConnect enables citizens to register complaints, officers to manage and resolve them, and administrators to monitor the complete system through an analytics dashboard.
CitizenConnect is designed to digitalize the complaint management process for municipalities, universities, housing societies, and government organizations.
The system provides secure authentication, role-based authorization, complaint tracking, officer assignment, status updates, and administrative monitoring.
- Register & Login
- JWT Authentication
- Create Complaint
- View My Complaints
- View Complaint Details
- Update Complaint
- Delete Complaint
- Search Complaints
- Filter Complaints
- Pagination
- Login
- View All Complaints
- Assign Complaint
- Update Complaint Status
- Add Remarks
- Complaint Timeline
- Dashboard
- User Management
- Promote Citizen to Officer
- Demote Officer
- Block / Unblock Users
- Complaint Analytics
- Reports
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT (JSON Web Token)
- bcrypt.js
- express-validator
- Nodemon
- dotenv
- CORS
- Git
- GitHub
backend
โ
โโโ config
โ โโโ db.js
โ
โโโ controllers
โ โโโ authController.js
โ โโโ complaintController.js
โ โโโ officerController.js
โ โโโ userController.js
โ โโโ adminController.js (Upcoming)
โ
โโโ middleware
โ โโโ authMiddleware.js
โ โโโ roleMiddleware.js
โ โโโ errorMiddleware.js
โ โโโ logger.js
โ
โโโ models
โ โโโ User.js
โ โโโ Complaint.js
โ
โโโ routes
โ โโโ authRoutes.js
โ โโโ complaintRoutes.js
โ โโโ officerRoutes.js
โ โโโ userRoutes.js
โ โโโ adminRoutes.js (Upcoming)
โ
โโโ utils
โ โโโ ApiResponse.js
โ โโโ ApiError.js
โ โโโ asyncHandler.js
โ
โโโ validators
โ โโโ complaintValidator.js
โ
โโโ app.js
โโโ server.js
โโโ package.json
โโโ README.md
Clone the repository
git clone https://github.com/Abhinavy1/CitizenConnect.gitGo to backend
cd CitizenConnect/backendInstall dependencies
npm installCreate a .env file
PORT=5000
MONGO_URI=YOUR_MONGODB_CONNECTION_STRING
JWT_SECRET=YOUR_SECRET_KEYStart development server
npm run dev| Variable | Description |
|---|---|
| PORT | Server Port |
| MONGO_URI | MongoDB Atlas Connection String |
| JWT_SECRET | Secret key for JWT |
POST /api/auth/register
POST /api/auth/login
POST /api/complaints
GET /api/complaints
GET /api/complaints/:id
PUT /api/complaints/:id
DELETE /api/complaints/:id
GET /api/officer/complaints
PUT /api/officer/assign/:id
PUT /api/officer/status/:id
POST /api/officer/remark/:id
GET /api/admin/dashboard
GET /api/admin/users
PUT /api/admin/promote/:id
PUT /api/admin/block/:id
- JWT Authentication
- Password Hashing using bcrypt
- Role-Based Authorization
- Request Validation
- Global Error Handling
- Logger Middleware
- Admin Dashboard
- React Frontend
- Cloudinary Image Upload
- Email Notifications
- Complaint Tracking Timeline
- Charts & Analytics
- Docker Support
- CI/CD Pipeline
- Unit Testing
- Swagger API Documentation
Screenshots will be added after frontend completion.
Abhinav Kumar
B.Tech Computer Science Engineering
Software Development | Backend Development | Full Stack Development
GitHub:
If you like this project, consider giving it a โญ on GitHub.
This project is licensed under the MIT License.