JantaWatch is a full-stack civic transparency and public issue reporting platform designed to bridge the gap between citizens, public issues, and government planning data.
The platform allows citizens to report issues anonymously via mobile or web, while the public can freely view reported issues, budget allocations, and project planning data through a unified dashboard. Reports are moderated using LLM-based filtering, aggregated intelligently, and visualized on a public dashboard alongside government budget and project planning data to promote transparency, accountability, and data-driven decision-making.
This repository contains three major components:
- 📱 Mobile App (Flutter) – citizen-facing reporting application
- 🌐 Web Frontend (React) – public dashboard for issues, budgets, and project data
- ⚙️ Backend API (Django + DRF) – centralized backend with moderation & analytics
.
├── janta-watch-app/
│ └── jantawatch_project/ # Flutter mobile application (Android / iOS)
│
├── janta-watch-web/ # React web frontend
│
├── janta_watch/ # Django backend (REST API)
│
└── README.md
-
Flutter-based mobile application
-
Allows citizens to:
- Report public issues
- Attach images/video
- Public viewing of reported issues
- View publicly available budget allocations
- View public project planning data
-
Communicates with the Django backend via REST APIs
-
React-based web frontend
-
Intended for:
- Report public issues
- Public viewing of reported issues
- Public viewing of budget allocations
- Public viewing of project planning data
-
Uses the same backend APIs as the mobile app
-
Django backend using Django REST Framework (DRF)
-
Acts as a single source of truth for both frontend clients
-
Uses Django Admin as the internal admin dashboard
-
Admins use Django Admin to:
- Manage reported issues
- Upload and manage budget allocations
- Upload and manage project planning data
-
Handles:
- Authentication & authorization
- Issue reporting & moderation
- Location hierarchy (Province, District, Municipality, Ward)
- File uploads (PDFs, images, etc.)
- Python 3.10+
- Django
- Django REST Framework (DRF)
- uv (Python dependency & virtual environment manager)
- PostgreSQL / SQLite
- LLM-based moderation layer
- Flutter
- Dart
- React
- JavaScript / TypeScript
- REST API integration
Ensure the following are installed:
- Python 3.10+
- uv (https://github.com/astral-sh/uv)
- Node.js 18+
- Flutter SDK
- Git
JantaWatch uses uv with lock & sync for Python dependency management.
cd janta_watch
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
uv sync
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
```bash
cd janta_watch
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserverBackend runs at:
http://127.0.0.1:8000/
cd janta-watch-web
npm install
npm run devcd janta-watch-app/jantawatch_project
flutter pub get
flutter runMake sure the API base URL is correctly configured to point to the Django backend.
Each component may require environment variables such as:
- API Base URL
- Database credentials
- Secret keys
Refer to .env.example files (if available) or configure them manually.
-
Citizen / Janata submits an issue via Mobile App or Web App
-
Requests reach the Frontend App Layer
-
Data is submitted to the Django Backend API
-
Reports pass through LLM Moderation to filter spam content
-
A Decision Engine evaluates the report:
- ❌ Rejected reports are stored internally but not visible on the public dashboard
- ✅ Approved reports are stored and marked public
-
Approved reports are checked by a Repetition Detection Engine
-
If repetition crosses a threshold:
- 📩 Optional notifications are sent to relevant departments
-
All approved data appears on the Public Dashboard
-
Admin-uploaded Budget & Project Planning data is merged
-
Citizens, media, and the public gain transparency & awareness
- Anonymous citizen issue reporting
- Multi-channel input (App, Web, Email)
- LLM-based spam & relevance moderation
- Intelligent repetition detection
- Optional department notifications
- Public transparency dashboard
- Budget & project planning data integration
- Pattern and mismatch visualization
-
Citizens report issues anonymously via mobile app, web app, or email
-
Reports are processed by LLM moderation to remove spam or irrelevant submissions
-
Only approved reports are stored and displayed publicly
-
Repeated issues trigger optional alerts to responsible departments
-
Admins upload public budget and project planning data
-
The public dashboard combines:
- Citizen-reported issues
- Budget allocations
- Project planning data
This enables the public to identify:
- Repeated unresolved issues
- Budget vs ground-reality mismatches
- Transparency and accountability gaps
For questions or collaboration, please contact the project maintainers.