How anshul-anuragi/citizen-grievance-redressal-system works
JanSeva is a Madhya Pradesh civic grievance portal. Citizens register or submit anonymously, file and track complaints, and communicate through resolution; officers process assigned work while district administrators manage assignment, SLAs, and reopen approvals. The map includes documented analytics, attachments, bilingual UI, and optional AI capabilities. Source excerpts and the index support backend routing and service links; some frontend-to-API and unsampled subsystem links are shown as unverified. The database is the shared state layer.
Main entry points: main.py API Router and SLA Scanner · complaint_service.py Complaint Lifecycle · complaints.py Complaint API · ai_service.py AI Recommendations and Insights
Components 33
Citizen and Staff Portal
- Submit Grievance
frontend/src/app/submit/page.tsx - Track Complaint
frontend/src/app/track/page.tsx - Citizen Dashboard
frontend/src/app/dashboard/page.tsx - Complaint Details
frontend/src/app/complaints/[id]/page.tsx - District Admin
frontend/src/app/admin/page.tsx - Officer Workspace
frontend/src/app/officer/page.tsx - Sign In and Register
frontend/src/app/login/page.tsx - Bilingual UI
frontend/src/contexts/LanguageContext.tsx - Frontend API Client
frontend/src/services/api.ts
Backend API
- Authentication API
backend/app/api/auth.py - Complaint API
backend/app/api/complaints.py - District Admin API
backend/app/api/district_admin.py - Officer API
backend/app/api/officers.py - Attachment API
backend/app/api/attachments.py - Public Analytics API
backend/app/api/analytics.py - AI API
backend/app/api/ai.py - Notifications API
backend/app/api/notifications.py - API Router and SLA Scanner
backend/app/main.py
Grievance Workflows
- Complaint Lifecycle
backend/app/services/complaint_service.py - Officer Assignment
backend/app/services/assignment_service.py - Notification Service
backend/app/services/notification_service.py - AI Recommendations and Insights
backend/app/services/ai_service.py - AI Audit Analysis
backend/app/services/ai_audit_service.py - Attachment Storage
backend/app/services/storage_service.py
Identity and State
- Roles and District Access
backend/app/core/permissions.py - Tokens and Security
backend/app/core/security.py - Grievance and User Records
backend/app/models/complaint.py - Districts, Categories, SLA Rules
backend/app/models/grievance.py - AI Records
backend/app/models/ai.py - Relational Database
backend/app/core/database.py
Other components
- Citizen
- District Staff
- Gemini API
Connections 44
- Citizen → Submit Grievance: submits
README.md - Citizen → Track Complaint: tracks
README.md - Citizen → Citizen Dashboard: views
README.md - District Staff → District Admin: administers
README.md - District Staff → Officer Workspace: processes
README.md - Sign In and Register → Frontend API Client: uses
- Submit Grievance → Frontend API Client: uses
frontend/src/app/submit/page.tsx - Track Complaint → Frontend API Client: uses
frontend/src/app/track/page.tsx - Submit Grievance → Bilingual UI: uses translations
- Frontend API Client → API Router and SLA Scanner: sends API requests
- API Router and SLA Scanner → Authentication API: registers
backend/app/main.py - API Router and SLA Scanner → Complaint API: registers
backend/app/main.py - API Router and SLA Scanner → District Admin API: registers
backend/app/main.py - API Router and SLA Scanner → Officer API: registers
backend/app/main.py - API Router and SLA Scanner → Public Analytics API: registers
backend/app/main.py - API Router and SLA Scanner → AI API: registers
backend/app/main.py - API Router and SLA Scanner → Attachment API: registers
backend/app/main.py - API Router and SLA Scanner → Notifications API: registers
backend/app/main.py - Authentication API → Roles and District Access: checks access
backend/app/api/auth.py - Authentication API → Tokens and Security: uses tokens
backend/app/api/auth.py - Complaint API → Complaint Lifecycle: delegates lifecycle
backend/app/api/complaints.py - Complaint API → Notification Service: requests notifications
backend/app/api/complaints.py - Complaint API → AI Recommendations and Insights: requests recommendations
backend/app/api/complaints.py - District Admin API → Complaint Lifecycle: delegates lifecycle
backend/app/api/district_admin.py - District Admin API → Officer Assignment: requests assignments
backend/app/api/district_admin.py - District Admin API → Notification Service: requests notifications
backend/app/api/district_admin.py - Officer API → Complaint Lifecycle: delegates lifecycle
backend/app/api/officers.py - Officer API → Officer Assignment: requests assignments
backend/app/api/officers.py - Officer API → Notification Service: requests notifications
backend/app/api/officers.py - Attachment API → Attachment Storage: stores files
backend/app/api/attachments.py - AI API → AI Recommendations and Insights: requests AI processing
backend/app/api/ai.py - API Router and SLA Scanner → Complaint Lifecycle: scans overdue complaints
backend/app/main.py - Complaint Lifecycle → Grievance and User Records: updates lifecycle records
backend/app/services/complaint_service.py - Complaint Lifecycle → Districts, Categories, SLA Rules: reads SLA rules
backend/app/services/complaint_service.py - AI Recommendations and Insights → Districts, Categories, SLA Rules: looks up categories
backend/app/services/ai_service.py - AI Recommendations and Insights → AI Records: writes recommendations
backend/app/services/ai_service.py - AI Recommendations and Insights → Gemini API: optionally requests insights
README.md - AI Audit Analysis → Grievance and User Records: analyzes complaints
backend/app/services/ai_audit_service.py - AI Audit Analysis → AI Records: evaluates AI findings
backend/app/services/ai_audit_service.py - Attachment Storage → Relational Database: stores file metadata via API
- Complaint API → Relational Database: reads and writes
backend/app/api/complaints.py - Authentication API → Relational Database: reads and writes
backend/app/api/auth.py - Relational Database → Grievance and User Records: backs records
backend/app/models/complaint.py - Roles and District Access → Relational Database: loads user records
backend/app/core/permissions.py