Many civic problems such as potholes, garbage dumps, broken streetlights, and water leaks go unresolved because citizens do not have a simple platform to report them and authorities cannot track them efficiently.
CivicFix is a full-stack web application that allows citizens to report civic issues in their area and enables authorities to track and resolve them through an organized dashboard.
- User Authentication (Signup / Login)
- Report civic issues with description and location
- Upload images of issues
- Dashboard to track reported issues
- Search, filter, and sort issues
- Pagination for large datasets
- Dark / Light theme toggle
- Responsive UI using Tailwind CSS
- CRUD operations for managing issues
- Admin status updates (Pending → In Progress → Resolved)
- ReactJS
- Tailwind CSS
- React Router
- Context API
- Node.js
- Express.js
- MongoDB
civicfix/
│
├── frontend/
│ ├── components/
│ ├── pages/
│ ├── context/
│ └── App.jsx
│
├── backend/
│ ├── models/
│ ├── routes/
│ ├── controllers/
│ └── server.js
│
└── README.md
Users can register and log in securely.
Citizens can submit civic problems with detailed descriptions and images.
Users can monitor the status of reported problems.
Authorities can verify reports and update issue status.
POST /api/auth/signup
POST /api/auth/login
GET /api/issues
POST /api/issues
PUT /api/issues/:id
DELETE /api/issues/:id
- User signs up or logs in
- User reports a civic issue
- Issue appears in dashboard
- Admin reviews and updates issue status
- User can track resolution progress
The UI is fully responsive and works across:
- Desktop
- Tablet
- Mobile devices
✔ Routing with React Router ✔ React Hooks (useState, useEffect, useRef, useContext) ✔ Authentication System ✔ Global State Management (Context API) ✔ Search, Filter & Sorting ✔ Debouncing ✔ Pagination ✔ CRUD Operations ✔ REST API Integration ✔ Responsive UI
From the root directory, install all dependencies for both frontend and backend:
npm run install:allCreate a .env file in the backend/ folder with the following variables:
PORT: Server port (default 5000)MONGO_URI: MongoDB connection stringJWT_SECRET: Secret key for tokensCLOUDINARY_*: Cloudinary credentials (optional, falls back to local storage)EMAIL_*: SMTP settings for sending update emails
Run both frontend and backend concurrently:
npm run devTo build the frontend and start the production server:
npm run build:frontend
npm startDeveloped as part of a Full Stack Hackathon Project.