AI-powered dispatch platform that transforms emergency calls into actionable intelligence
React โข TypeScript โข Vite
โจ Tactical Dashboard & Live UI |
FastAPI โข AI/NLP โข Python
๐ฅ AI Engine & Command Center |
Sanjay Rohith ๐ Lead Developer |
Sanjay E ๐ง AI & Backend |
Abishek Raj ๐จ Frontend Architect |
|
Emergency dispatchers are the unsung heroes operating under extreme pressure:
|
|
| ๐๏ธ Live Call Management | ๐ง AI Intelligence | ๐ Auto Reports | ๐บ๏ธ Tactical Maps |
|---|---|---|---|
| Push-to-talk interface | Real-time NLP analysis | Zero-touch form filling | Live unit tracking |
| Audio visualization | Smart data extraction | Severity classification | Auto-reallocation |
| Language detection | Keyword detection | AI reasoning display | Multi-unit coordination |
| Encrypted channels | Confidence scoring | Tactical alerts | ETA calculations |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ด LIVE CALL 00:01:23 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโ
โโโโโ
โโ
โโโโโโ
โโ
โโโโโโโ
โโโโ
โโโโโโโโ
โโโโ
โโโโ โ
โ โ
โ [๐ค PTT ACTIVE] [๐ MUTE] [๐ LOCATE] [๐จ ALERT] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
"There's a fire on the second floor..."
โฌ๏ธ Instant AI Analysis โฌ๏ธ
| Field | Extracted Value | Confidence |
|---|---|---|
| ๐ Location | 123 Main Street, 2nd Floor | 94% |
| ๐ฅ Type | FIRE | 98% |
| CRITICAL | 91% |
|
| ๐ท๏ธ Keywords | FIRE SMOKE TRAPPED |
โ |
Real-time fleet awareness with priority-based reallocation
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐บ๏ธ LIVE FLEET 4/6 AVAILABLE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๐ A12 Ambulance ๐ข AVAILABLE ETA 6m โ
โ ๐ FE12 Fire Engine ๐ ON SCENE (Normal) ETA 4m โ
โ ๐ FE13 Fire Engine ๐ ON SCENE (Normal) ETA 15m โ
โ ๐ค B6 Rescue Boat ๐ข AVAILABLE ETA 31m โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ ๏ธ CRITICAL FIRE โ no free Fire Engine โ
โ ๐ REALLOCATE FE12 (Normal โ Critical) [ CONFIRM ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Every unit carries a live lifecycle status that updates on the tactical map in real time:
| Status | Meaning | Marker |
|---|---|---|
| ๐ข AVAILABLE | Idle, ready to dispatch | Green |
| โช EN ROUTE | Assigned, travelling to the incident | Platinum (pulsing) |
| ๐ ON SCENE | Arrived, working the incident | Amber |
| โป๏ธ RETURNING | Job done, heading back to base | Slate |
AVAILABLE โ EN ROUTE โ ON SCENE โ RETURNING โ AVAILABLE
When a Critical incident arrives and every capable unit is busy, the orchestrator doesn't just report "none available" โ it finds a unit on a lower-priority job and proposes pulling it off. The dispatcher gets a one-click confirmation, and the reassigned unit immediately begins moving toward the new scene on the map.
Every pixel means something โ the map isn't decoration, it's the spatial source of truth
- ๐ Real geocoding โ the AI-extracted location is resolved to actual coordinates, so the incident marker lands on the real address (e.g. Phoenix Marketcity, Chennai), not a placeholder.
- ๐ Distance-aware placement โ units are positioned around the incident by their real
distance_km; the closer a unit is, the closer it renders. - ๐ฃ๏ธ Live routes โ dispatched units draw an animated route line and travel along it toward the scene in real time.
- ๐ฏ Auto-framing & click-to-locate โ the camera auto-fits the incident and its responders; click any unit to fly straight to it.
- ๐งญ Dispatch overlay โ a live summary (
FE12 inbound ยท 4 min ยท 2.3 km) plus a status legend keep the tactical picture readable at a glance.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ResQ-Desk Architecture โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ โ โ โ โ
โ ๐ค Web Speech โโโโโโโโโโถโ โ๏ธ React UI โโโโโโโโโโถโ ๐ง AI Backend โ
โ API โ โ (This Repo) โ โ (FastAPI) โ
โ โ โ โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ โ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Voice โ Text โ โ Tactical UI โ โ NLP Analysis โ
โ Recognition โ โ Live Dashboard โ โ Data Extract โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
| Layer | Technology | Badge |
|---|---|---|
| UI Framework | React 18 | |
| Language | TypeScript | |
| Build Tool | Vite | |
| Styling | Tailwind CSS | |
| Components | shadcn/ui | |
| State | TanStack Query |
A premium, blacked-out command-center aesthetic โ built to feel calm under pressure.
| Element | Treatment |
|---|---|
| ๐ค Palette | Deep matte black with a refined platinum accent; colour is reserved for meaning |
| ๐ฆ Semantic colour | Red = Critical ยท Amber = High ยท Emerald = Available โ the only saturated tones on screen |
| โจ Micro-interactions | Count-up confidence & ETA, an odometer-style rolling clock, staggered panel entrances |
| ๐ Ambience | Slow-drifting aurora glow, a living tactical grid, and glassmorphic panels |
| ๐ Reallocation flow | An animated transfer view showing a unit move from its old job to the new critical scene |
๐ Prerequisites
- โ Node.js 18+ or Bun
- โ Modern browser (Chrome 80+, Firefox 76+, Safari 14+)
- โ Microphone access for speech recognition
# 1๏ธโฃ Clone the repository
git clone https://github.com/sanjayrohith/ResQ-Desk.git
# 2๏ธโฃ Navigate to project
cd ResQ-Desk
# 3๏ธโฃ Install dependencies
npm install
# 4๏ธโฃ Launch development server
npm run dev๐ Open http://localhost:5173 and start saving lives!
ResQ-Desk/
โ
โโโ ๐ src/
โ โโโ ๐ components/
โ โ โโโ ๐ dashboard/
โ โ โ โโโ ๐ฏ Header.tsx # System status & nav
โ โ โ โโโ ๐ LiveCall.tsx # PTT controls & timer
โ โ โ โโโ ๐ LiveTranscription.tsx # Speech-to-text engine
โ โ โ โโโ ๐ IncidentDetails.tsx # AI form automation
โ โ โ โโโ ๐บ๏ธ MapPanel.tsx # Tactical deployment
โ โ โ โโโ ๐จ DispatchPopup.tsx # Unit assignment
โ โ โ
โ โ โโโ ๐ ui/ # shadcn/ui components
โ โ
โ โโโ ๐ pages/
โ โ โโโ ๐ Index.tsx # Main orchestration
โ โ
โ โโโ ๐ hooks/ # Custom React hooks
โ โโโ ๐ lib/ # Utilities
โ
โโโ โ๏ธ Configuration files
graph LR
A[๐ Emergency Call] -->|Voice Input| B[๐ค Live Transcription]
B -->|Text Stream| C[๐ง AI Analysis]
C -->|Structured Data| D[๐ Auto-fill Form]
D -->|Dispatch Ready| E[๐บ๏ธ Resource Dispatch]
E -->|Unit Assigned| F[๐ Deployment]
style A fill:#FF6B6B,color:#fff
style B fill:#4ECDC4,color:#fff
style C fill:#45B7D1,color:#fff
style D fill:#96CEB4,color:#fff
style E fill:#FFEAA7,color:#333
style F fill:#00D26A,color:#fff
| Step | Action | Time |
|---|---|---|
| 1๏ธโฃ | Call Initiated โ Operator activates PTT, caller speaks | 0s |
| 2๏ธโฃ | Real-time Transcription โ Speech converted instantly | <1.5s |
| 3๏ธโฃ | AI Processing โ Backend extracts location, type, severity | ~2-3s |
| 4๏ธโฃ | Form Auto-fill โ Incident details populate automatically | instant |
| 5๏ธโฃ | Dispatch Decision โ System suggests optimal unit | ready |
| 6๏ธโฃ | Unit Deployment โ Responders receive coordinates & ETA | ๐ |
๐ก Backend Communication
POST http://127.0.0.1:8000/analyze
{
"text": "There's a fire on the second floor of 123 Main Street"
}{
"incident_id": "INC-2024-001",
"location": "123 Main Street, 2nd Floor",
"emergency_type": "FIRE",
"severity": "Critical",
"keywords": ["FIRE", "SMOKE", "TRAPPED"],
"reasoning": "Multiple fire indicators detected with potential victims",
"confidence_score": 0.94,
"suggested_unit": "F07",
"reallocation": null
}๐ Live Unit Tracking & Reallocation
GET http://127.0.0.1:8000/units # Live state of every unit
POST http://127.0.0.1:8000/units/{id}/status # Advance lifecycle status
POST http://127.0.0.1:8000/units/reallocate # Confirm a reallocation
POST http://127.0.0.1:8000/units/reset # Reset the sim roster
[
{
"unit_id": "Fire Engine FE12",
"vehicle_type": "FIRE_ENGINE",
"lat": 40.7201,
"lng": -73.996,
"distance_km": 2.3,
"eta_minutes": 4,
"status": "ON_SCENE",
"assigned_incident": "RESQ-SEED3",
"assigned_severity": "Normal"
}
]When no unit is free, /analyze returns a reallocation block instead of null:
{
"reallocation": {
"unit_id": "Fire Engine FE12",
"from_incident": "RESQ-SEED3",
"from_severity": "Normal",
"to_severity": "Critical",
"eta_minutes": 4,
"message": "No Fire Engine available. FE12 is on a Normal-priority job and can be reallocated to this Critical incident (4 mins ETA)."
}
}{
"unit_id": "Fire Engine FE12",
"incident_id": "RESQ-A1B2",
"severity": "Critical"
}| Metric | Value | Status |
|---|---|---|
| ๐ค Transcription Latency | <1.5s | ๐ข |
| ๐ง AI Analysis Time | ~2-3s | ๐ข |
| ๐ Form Auto-fill | Instant | ๐ข |
| ๐บ๏ธ Map Rendering | 60 FPS | ๐ข |
| ๐ | Feature | Description |
|---|---|---|
| โ | Encrypted Channels | All communications secured |
| โ | No Persistent Storage | Sensitive call data not stored |
| โ | Client-side Processing | Privacy-first voice handling |
| โ | Secure API | Protected backend communication |
๐ฏ CURRENT ๐ฎ FUTURE
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
Real-time transcription โฌ Multi-language support
โ
AI incident analysis โฌ Analytics dashboard
โ
Auto-form filling โฌ CAD integration
โ
Tactical map โฌ Mobile app
โ
Unit dispatch โฌ Voice biometrics
โ
Live unit tracking โฌ Predictive ML
โ
Auto-reallocation
โ
Geocoded live routing
โ
Premium black UI
npm run dev # ๐ฅ Development server with HMR
npm run build # ๐ฆ Production build
npm run preview # ๐ Preview production build
npm run lint # ๐ ESLint analysisReleased under the MIT License
See LICENSE for details