How prosofproest/civicflow works
CivicFlow is a civic complaint intake and municipal triage/resolution platform. Citizens submit location-aware reports, which are stored and processed with AI assistance and deterministic priority, duplicate, and hotspot analysis; citizens and municipal staff then view status and take action. The README documents Firebase/Firestore authentication and persistence, optional Cloudinary image uploads, and Groq with deterministic fallback. Several screens and service implementations were not sampled, so their documented capabilities are shown without asserting unsampled call chains.
Main entry points: complaints.ts Complaint services · service.ts Assistant orchestration · chat/route.ts Assistant chat API · complaints/route.ts Complaint API
Components 27
Citizen Intake
- Report submission
src/app/citizen/submit/page.tsx - Citizen portal
src/app/citizen/complaints/page.tsx - Civic assistant
src/components/assistant/CivicAssistant.tsx
Identity & Access
- Client authentication
src/lib/auth/auth-context.tsx - Firebase client auth
src/lib/firebase/client.ts - Session establishment
src/app/api/auth/session/route.ts - Server session checks
src/lib/auth/server-session.ts - Firebase Admin
src/lib/firebase/admin.ts
Analysis & Assistance
- Priority scoring
src/lib/engine/priority.ts - Duplicate detection
src/lib/engine/duplicate.ts - Hotspot clustering
src/lib/engine/hotspot.ts - Spatial map
src/components/map/ComplaintMap.tsx - Assistant chat API
src/app/api/assistant/chat/route.ts - Assistant orchestration
src/lib/assistant/service.ts - Rule-based fallback
src/lib/assistant/fallback.ts - Assistant prompt
src/lib/assistant/system-prompt.ts
Complaint Operations
- Complaint API
src/app/api/complaints/route.ts - Complaint updates
src/app/api/complaints/[id]/route.ts - Complaint services
src/lib/services/complaints.ts - Officer workflow
src/app/officer/page.tsx - Admin overview
src/app/admin/page.tsx
Persistence & Integrations
- Groq inference
src/lib/ai/groq.ts - Cloud Firestore
- Upload signing API
src/app/api/upload/signature/route.ts
Other components
- Citizen
- Municipal staff
- Cloudinary
Connections 26
- Citizen → Report submission: submits report
README.md - Report submission → Complaint API: sends submission
- Citizen → Citizen portal: tracks reports
README.md - Municipal staff → Officer workflow: manages cases
README.md - Municipal staff → Admin overview: reviews metrics
README.md - Client authentication → Firebase client auth: uses auth
src/lib/auth/auth-context.tsx - Client authentication → Session establishment: syncs session
src/lib/auth/auth-context.tsx - Session establishment → Firebase Admin: verifies token
src/app/api/auth/session/route.ts - Complaint API → Server session checks: checks session
src/app/api/complaints/route.ts - Complaint API → Complaint services: creates or lists
src/app/api/complaints/route.ts - Complaint updates → Complaint services: reads or updates
src/app/api/complaints/[id]/route.ts - Complaint services → Cloud Firestore: persists complaints
- Citizen → Civic assistant: asks questions
README.md - Civic assistant → Assistant chat API: sends chat
- Assistant chat API → Server session checks: checks session
src/app/api/assistant/chat/route.ts - Assistant chat API → Assistant orchestration: processes chat
src/app/api/assistant/chat/route.ts - Assistant orchestration → Complaint services: looks up complaints
src/lib/assistant/service.ts - Assistant orchestration → Assistant prompt: builds prompt
src/lib/assistant/service.ts - Assistant orchestration → Rule-based fallback: falls back to
src/lib/assistant/service.ts - Assistant orchestration → Groq inference: requests inference
- Complaint services → Priority scoring: scores reports
- Complaint services → Duplicate detection: checks duplicates
- Complaint services → Hotspot clustering: clusters reports
- Municipal staff → Spatial map: inspects geography
README.md - Upload signing API → Server session checks: checks session
src/app/api/upload/signature/route.ts - Upload signing API → Cloudinary: signs uploads