Making a better Kenya Together
# iReporter – Fight Corruption with Citizen Reports
IReporter is a full‑stack web application that empowers Kenyan citizens to report corruption incidents or request government intervention (e.g., bad roads, collapsed bridges). Users can attach images/videos, add geolocation, and track the status of their reports. Administrators can update report statuses, triggering email and SMS notifications.
---
**Live Demo**
- Frontend: IReporter
---
## Table of Contents
- iReporter – Fight Corruption with Citizen Reports
- Table of Contents
- Features
- Screenshots
- Desktop View
- Mobile View
- Getting Started
- Prerequisites
- 1. Clone the Repository
- Backend Setup
- PostgreSQL Setup
- Frontend Setup
- Frontend Environment Variables
- Running the App
- Frontend Architecture
- Key Pages
- Running Frontend Tests
- Deployment
- API Documentation
- Team
- License
- ERD
---
## Features
- **User authentication** – Sign up, login, JWT‑protected routes
- **Report management** – Create, edit, delete red‑flag (corruption) and intervention reports
- **Geolocation** – Pin incident locations on a Leaflet map (Kenya only)
- **Media upload** – Attach images and videos to reports (Cloudinary)
- **Admin dashboard** – Change report status (`pending` → `under investigation` → `resolved`/`rejected`)
- **Email notifications** – Instant email to the reporter when status changes (Brevo)
- **SMS notifications** – Optional SMS via Africa’s Talking (configurable)
- **Password reset** – 3‑step code‑based flow via email
- **User profile** – Update username, email, phone number, and profile picture
- **Live map** – Browse all incidents on an interactive map, search by place or title
- **Responsive UI** – Dark/light mode, mobile‑friendly design
- **Pagination & filtering** – On both frontend and backend
- **CI/CD** – GitHub Actions runs tests automatically on every push
---
## Screenshots
### Desktop View
*Example of the dashboard on a desktop browser.*
### Mobile View …