RPF Rapid Response
Ecosystem.
A 3-tier emergency response system connecting passenger kiosks, a central control server, and officer mobile units in real-time.
Kiosk
Flutter (Touch)
Backend
Next.js API + MongoDB
Officer App
Flutter + FCM
Web Portal
React + Export
1. Passenger Kiosk Interface
Deployed at railway stations, this Flutter application serves as the primary input point for public grievances. I designed a high-contrast, accessible UI to ensure usability during high-stress situations.
- Categorized Input: 6 distinct complaint types (Theft, Harassment, Lost Item, etc.) for rapid data structuring.
- Direct Line: A "Call Now" feature that instantly bridges a cellular call to the control room using
url_launcher. - Evidence Capture: Integrated audio recording that attaches voice notes directly to the case file before submission.
Kiosk UI Layout Visualization
2. Server Orchestration (Next.js)
When a user hits "Submit" on the Kiosk, the Next.js API Route handles a multipart request. It simultaneously saves the structured data to MongoDB and uploads the audio evidence to cloud storage.
NEW ALERT
Theft Reported at Platform 4
3. Officer Response App
The critical feature of the system is the "Looping Alert" mechanism. Using Firebase Cloud Messaging (FCM) Data payloads, the app wakes up the officer's device even from a terminated state.
Technical Challenge: Notification Fatigue
Standard notifications are easily missed. I implemented a local foreground service that plays a continuous alarm sound and vibration pattern that cannot be dismissed until the officer explicitly opens the app and acknowledges the case.
4. Control Room Dashboard
Real-Time Monitoring
A React-based web portal for senior officials. It streams incoming cases via WebSockets, allowing the control room to assign officers and update case status (Pending → Investigating → Resolved).
Data Export
Includes a reporting module that aggregates daily/weekly crime stats and exports them to CSV/Excel formats for official railway documentation.
Interface Gallery







