
Citizen grievance app with an RBAC staff portal, status-driven workflow, and automated email/SMS updates.
The Bangalore Development Authority needed an easy way for citizens to register and track grievances, and a structured way for staff to manage them — rather than grievances getting lost across phone calls, in-person visits and paper files, with no consistent way to see where a complaint stood or who owned it.
We built it as two frontends over one backend: a Flutter app so citizens can register and track grievances from their phone, and an Angular RBAC web portal so BDA staff can view, manage and resolve grievances according to their role. A Node.js/Fastify API ties both together, driving each grievance through a defined set of status transitions and triggering automated email and SMS updates to the citizen as their grievance moves forward.
Citizen app
Flutter app for citizens to register a grievance and track its status.
Staff portal
Angular RBAC web portal for BDA staff to manage and resolve grievances by role.
API
Node.js/Fastify backend serving both the citizen app and staff portal, driving grievances through status transitions and triggering notifications.
Citizens register and track grievances directly from their phone instead of calls or paper filings.
BDA staff manage, route and resolve grievances through a web portal scoped to their role.
Citizens get email and SMS notifications automatically as their grievance moves through each status.
A single Node.js/Fastify API keeps the citizen app and staff portal consistent with each other.
Building something similar?
Let's Talk