Skip to content

[FEAT]: Offline-first mobile companion app for field incident captureΒ #323

@utkarshqz

Description

@utkarshqz

πŸ“ Description

First responders need to capture incident data at the scene β€” in basements, forests, and areas with no connectivity. The current FireForm interface requires a station connection, making it unusable in the field. This feature proposes a mobile companion app that works completely offline and syncs automatically when officers return to the station.

πŸ’‘ Rationale

FireForm's "Report Once, File Everywhere" promise only holds if officers can report from where incidents actually happen. Without offline capture, officers resort to paper notes and manual re-entry β€” exactly the redundant work FireForm was built to eliminate.

πŸ› οΈ Proposed Solution

A Progressive Web App (PWA) served at /mobile by the existing FastAPI server β€” installable on any phone via "Add to Home Screen", no app store required.

  • New mobile/ folder with index.html, manifest.json, sw.js
  • Service Worker caches app shell for offline loading
  • Voice recording and text notes stored in IndexedDB
  • GPS coordinates captured offline via device GPS
  • Auto-sync to station on WiFi reconnection
  • Audio transcribed via faster-whisper, combined with notes
  • Mount mobile/ as StaticFiles in api/main.py

βœ… Acceptance Criteria

  • PWA installable on Android and iOS
  • App loads from cache with zero connectivity
  • Voice and text captured offline, persists across app close
  • GPS coordinates captured without internet
  • Auto-syncs when WiFi restored
  • Filled PDFs downloadable from mobile after sync
  • Documentation updated in docs/

πŸ“Œ Additional Context

Future extensions: photo/video capture for scene documentation, multi-officer report unification by incident ID, push notifications when PDFs are ready.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions