Skip to content

React Native mobile app for iOS and Android #10

Description

@bgorzelic

Description

Build a native mobile app using React Native (Expo) that provides the full Firevector experience optimized for field use. The @firevector/schema and @firevector/engine packages can be reused directly since they're pure TypeScript.

Proposed Architecture

apps/mobile/          (new Expo app)
├── package.json      (depends on @firevector/schema, @firevector/engine)
├── app/              (Expo Router file-based routing)
├── components/       (React Native components)
└── lib/              (API client, auth, offline storage)

Key Differences from Web

  • Native GPS with background location updates
  • Camera integration for photo documentation
  • Push notifications for sync status
  • Native offline storage (SQLite via expo-sqlite)
  • Haptic feedback on LCES checklist completion

Shared Code

  • @firevector/schema — types (100% reusable)
  • @firevector/engine — calculations (100% reusable)
  • Validation schemas — Zod works in React Native

New Code Needed

  • React Native UI components (no shadcn — use Tamagui or NativeWind)
  • API client for Next.js backend
  • Native auth flow (expo-auth-session for Google OAuth)
  • Push notification setup (expo-notifications)

Acceptance Criteria

  • iOS and Android builds via Expo EAS
  • Full observation CRUD
  • Real-time calculations (same engine)
  • GPS auto-location with native accuracy
  • Offline-first with SQLite storage
  • Google OAuth login
  • Push notifications for sync
  • App Store and Google Play ready

Phases

  1. MVP: Observation form + dashboard (no map)
  2. v2: Mapbox integration + offline tiles
  3. v3: Camera, push notifications, background sync

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3: lowLow priority — nice to havearea: mobileReact Native mobile appneeds designNeeds UX/UI design before implementationsize: XLExtra large — 1+ weeks, consider breaking downtype: featureNew feature or capability

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions