Production-ready complaint management system for Ethiopian cities with multi-role access, bilingual support, real-time tracking, and comprehensive analytics. Built with React, Node.js, and MongoDB Atlas.
# Ethiopian City Complaint Management System
A modern complaint management platform built for Ethiopian cities. Citizens can report problems, track their status, and local authorities can manage everything efficiently.
## What's Inside
- Different access levels for citizens, team members, and admins
- Works in both English and Amharic
- Dark and light themes
- Upload photos with location data
- Search and filter complaints easily
- Get notified about updates
- Export data as CSV, PDF, or JSON
## Tech Stack
**Frontend**: React 18, TypeScript, Tailwind CSS, Radix UI
**Backend**: Node.js, Express.js, MongoDB Atlas, JWT
**Tools**: Vite, ESLint
## Getting Started
1. Clone this repo
2. Install everything:
```bash
npm install
cd backend && npm install
```
3. Set up your environment files:
```bash
cp .env.example .env
cp backend/.env.example backend/.env
```
4. Add your MongoDB Atlas connection string to `backend/.env`
5. Seed the database with sample data:
```bash
cd backend && npm run seed
```
6. Run both servers:
```bash
# Terminal 1 - Backend
cd backend && npm run dev
# Terminal 2 - Frontend
npm run dev
```
## Test Accounts
Use these to log in and try different roles:
- **Admin**: admin@city.gov.et / admin123
- **Roads Team**: roads@city.gov.et / roads123
- **Sanitation**: sanitation@city.gov.et / sanitation123
- **Water**: water@city.gov.et / water123
- **Electricity**: electricity@city.gov.et / electricity123
## API Overview
Check out the full API docs in the `docs/` folder. Here are the main endpoints:
**Authentication**
- `POST /api/auth/login` - Log in
- `POST /api/auth/register` - Create account
**Complaints**
- `GET /api/complaints` - List all
- `POST /api/complaints` - Submit new
- `PUT /api/complaints/:id` - Update
- `DELETE /api/complaints/:id` - Delete
**Admin**
- `GET /api/admin/stats` - Dashboard stats
- `GET /api/admin/users` - User management
## License
MIT License