How sakbaj/jansunwaiapplication works
Purpose and Runtime
LNN-Nivaaran is a municipal grievance-management demo platform: citizens submit text, audio, and image reports; AI classifies and routes them; officers manage queues; administrators view operational analytics. It is a Next.js App Router application running React 19, with Tailwind styling. The root shell and public landing entry are src/app/layout.tsx and src/app/page.tsx.
Route-Level Entry Points and Access
Primary portals are citizen submission/tracking (src/app/citizen/page.tsx), officer operations (src/app/officer/page.tsx), and administration (src/app/admin/page.tsx). Login and role gating are centered in src/app/login/page.tsx, with auth/session behavior in src/lib/auth.ts. Public informational/API documentation routes sit under src/app/help/page.tsx and src/app/api-docs/page.tsx.
Citizen Intake Pipeline
The citizen complaint UI collects complaint content, location, and attachments through src/components/citizen/ComplaintForm.tsx, embedded by src/app/citizen/page.tsx. It calls server endpoints for classification and transcription: src/app/api/classify/route.ts and src/app/api/transcribe/route.ts. Tracking and post-submission communication are represented by src/components/citizen/TrackingTimeline.tsx and src/components/citizen/AIAgentFollowUpPanel.tsx.
AI Boundary and Fallbacks
Gemini 2.5 Flash is the optional external AI service, configured through GEMINI_API_KEY. Server-side API routes isolate Gemini-backed multimodal classification and audio transcription from browser components. If unavailable, local heuristic behavior is implemented in src/lib/ai.ts, using department/keyword definitions from src/data/departments.ts; this supports offline/demo behavior rather than making AI availability a hard dependency.
Complaint State, Routing, and Hotspots
The core domain model is defined in src/types/index.ts. Complaint data and browser-side persistence/query simulation are handled in src/lib/complaints.ts, seeded from src/data/complaints.ts. This layer recomputes active complaints grouped by area and category: clusters of at least two become hotspots, receive elevated priority, and return to normal as resolved items reduce a cluster. Grievance submission has a dedicated persistence-facing API boundary at src/app/api/grievance/submit/route.ts.
Operational and Analytics Views
Officer workflows consume routed, prioritized complaint state in src/app/officer/page.tsx; this is the control point for department queues and status/resolution updates feeding citizen tracking. The administration view aggregates complaint telemetry in src/app/admin/page.tsx, with visualization logic in src/components/admin/AnalyticsCharts.tsx. Citizen-facing hotspot visualization is isolated in src/components/citizen/ComplaintHeatmap.tsx, using the Leaflet/React Leaflet GIS stack.
Infrastructure and Persistence Posture
The shipped architecture is primarily a client-side/demo state model, augmented by Next.js route handlers for AI and grievance submission. A Supabase schema exists at supabase/schema.sql, indicating an intended relational persistence backend, but the core runtime data layer currently lives under src/lib/complaints.ts. Browser APIs support geolocation and local/cross-tab session behavior; Google Gemini is the principal external service.
Main entry points: complaints.ts Complaint state & hotspots · layout.tsx App shell & landing · page.tsx Citizen portal · ComplaintForm.tsx Complaint intake form
Components 19
Portals & UI
- App shell & landing
src/app/layout.tsx - Login & role sessions
src/lib/auth.ts - Login
src/app/login/page.tsx - Citizen portal
src/app/citizen/page.tsx - Complaint intake form · Collects text, location, audio, and image reports.
src/components/citizen/ComplaintForm.tsx - Tracking & AI follow-up
src/components/citizen/TrackingTimeline.tsx - Complaint heatmap · Leaflet-based citizen hotspot visualization.
src/components/citizen/ComplaintHeatmap.tsx - Officer operations · Manages department queues and resolution status.
src/app/officer/page.tsx - Administration
src/app/admin/page.tsx - Analytics charts
src/components/admin/AnalyticsCharts.tsx
Server boundaries
- Classification & transcription · Isolates multimodal AI operations from the browser.
src/app/api/classify/route.ts - Grievance submission
src/app/api/grievance/submit/route.ts
Domain state
- Complaint state & hotspots · Persists demo state and elevates clusters of two or more active complaints.
src/lib/complaints.ts - Complaint domain model
src/types/index.ts - Seed complaints
src/data/complaints.ts - Local AI fallback · Provides offline classification when Gemini is unavailable.
src/lib/ai.ts - Department definitions
src/data/departments.ts
External & planned persistence
- Google Gemini · Optional Gemini 2.5 Flash integration.
- Supabase schema · Schema exists, but is not the core runtime data store.
supabase/schema.sql
Connections 22
- App shell & landing → Login: serves
- Login → Login & role sessions: uses
- App shell & landing → Citizen portal: serves
- App shell & landing → Officer operations: serves
- App shell & landing → Administration: serves
- Citizen portal → Complaint intake form: embeds
- Citizen portal → Tracking & AI follow-up: shows
- Citizen portal → Complaint heatmap: shows
- Complaint intake form → Classification & transcription: classifies/transcribes
- Complaint intake form → Grievance submission: submits
- Classification & transcription → Google Gemini: optional request
- Classification & transcription → Local AI fallback: falls back to
- Local AI fallback → Department definitions: routes with
- Grievance submission → Complaint state & hotspots: persists to demo state
- Complaint state & hotspots → Complaint domain model: uses
- Complaint state & hotspots → Seed complaints: initializes from
- Officer operations → Complaint state & hotspots: updates queues and status
- Tracking & AI follow-up → Complaint state & hotspots: reads status
- Complaint heatmap → Complaint state & hotspots: reads hotspots
- Administration → Analytics charts: renders
- Analytics charts → Complaint state & hotspots: aggregates telemetry
- Supabase schema → Complaint state & hotspots: future persistence target