How itanishqshelar/civicconnect works
CivicConnectAI is a citizen grievance platform: residents submit text and location, the backend classifies urgency, checks nearby complaints for semantic duplicates, routes by category and geography, and persists the result. Citizens can track complaints; authorities manage departmental queues and view analytics and hotspots. Voice intake is an alternate way to prepare a report before the normal location-and-submit flow. The README documents the clustering and dashboard capabilities; sampled source confirms the submission pipeline and ML endpoints, but not all analytics/dashboard wiring.
Main entry points: api.ts API Client · server.js Express API · main.py ML Service API · complaintService.js Submission Pipeline
Components 27
Citizen and Authority UI
- Portal
frontend/src/app/page.tsx - Submit Complaint
frontend/src/app/submit/page.tsx - Voice Intake
frontend/src/components/VoiceReportModal.tsx - My Complaints
frontend/src/app/my-complaints/page.tsx - Complaint Detail
frontend/src/app/complaints/[id]/page.tsx - Authority Dashboard
frontend/src/app/dashboard/page.tsx - Maps and Charts
frontend/src/components/ComplaintMap.tsx - API Client
frontend/src/lib/api.ts - Supabase Auth
frontend/src/components/AuthProvider.tsx
API and Grievance Workflow
- Express API
backend/src/server.js - Complaint Endpoints
backend/src/controllers/complaintsController.js - Submission Pipeline
backend/src/services/complaintService.js - Geo Routing
backend/src/services/routingService.js - Analytics Endpoints
backend/src/controllers/analyticsController.js - Department Endpoints
backend/src/controllers/departmentsController.js - Voice Endpoint
backend/src/controllers/voiceController.js - Voice Assistant Client
backend/src/services/geminiClient.js
AI and Geospatial Analysis
- ML Service API
ml-service/app/main.py - Classification and Urgency
ml-service/app/classification.py - Duplicate Detection
ml-service/app/duplicates.py - Hotspot Clustering
ml-service/app/clustering.py
Other components
- Citizen
- Authority
- Supabase Database
- Groq AI
- Gemini API
- Mapbox
Connections 33
- Citizen → Portal: uses
- Citizen → Submit Complaint: enters report
- Citizen → Voice Intake: speaks report
- Authority → Authority Dashboard: views
- Submit Complaint → API Client: sends report
- Voice Intake → API Client: sends turns
- My Complaints → API Client: requests records
- Complaint Detail → API Client: requests detail
- Authority Dashboard → API Client: requests analytics
- API Client → Express API: calls API
- Supabase Auth → Supabase Database: authenticates
- Express API → Complaint Endpoints: dispatches requests
- Express API → Voice Endpoint: dispatches requests
- Express API → Analytics Endpoints: dispatches requests
- Express API → Department Endpoints: dispatches requests
- Complaint Endpoints → Submission Pipeline: submits complaint
- Complaint Endpoints → Supabase Database: reads and updates
- Submission Pipeline → ML Service API: classifies and checks
- Submission Pipeline → Geo Routing: gets candidates and department
- Submission Pipeline → Supabase Database: inserts complaint
- Geo Routing → Supabase Database: queries geo data
- Voice Endpoint → Voice Assistant Client: requests dialogue
- Voice Assistant Client → Gemini API: calls
- Department Endpoints → Supabase Database: reads departments
- Analytics Endpoints → Supabase Database: aggregates data
- ML Service API → Classification and Urgency: calls
- ML Service API → Duplicate Detection: calls
- ML Service API → Hotspot Clustering: calls
- Classification and Urgency → Groq AI: requests classification
- Duplicate Detection → Groq AI: requests similarity
- Authority Dashboard → Maps and Charts: renders views
- Maps and Charts → Mapbox: renders map
- ML Service API → Hotspot Clustering: clusters points