CoompanionApp/react-native-plan.md
2026-02-03 13:48:56 +01:00

2.7 KiB

React Native Version Plan

Goal: build a React Native companion app that connects to the same Bun server used by the web app. Production base URL: https://negopoly.fr Development base URL: http://<this-computer's-ip>

1) Project setup

  • Choose framework: React Native + Expo (fast iteration) or bare RN (native modules).
  • Initialize inside this repo at mobile/.
  • Configure TypeScript and linting to match existing code style.
  • Decide navigation: React Navigation for stack + tab layouts.

2) Shared types + networking

  • Extract/share types from shared/types.ts into a package or keep a synced copy for RN.
  • Create a config module to switch base URL by build type:
    • Dev: http://<this-computer's-ip> (read from env or app config).
    • Prod: https://negopoly.fr.
  • Create an API client wrapper for REST and WebSocket calls.

3) Auth/session flow

  • Implement session creation/joining screens matching web UX:
    • Mobile-first flow: Join first, then Create.
    • Join flow: room code → choose name or dummy takeover.
  • Persist session + player IDs with AsyncStorage.
  • Sync with server via WebSocket (mirrors web useSessionManager).

4) Navigation structure

  • Root stack:
    • Home
    • Play (entry)
    • Lobby
    • Player tabs
    • Banker tabs
    • Chat list / thread / new
  • Player tab layout:
    • Home / Transfers / Chat (bottom tabs)
  • Banker tab layout:
    • Dashboard / Tools / Chat (bottom tabs)

5) Real-time state handling

  • Implement WebSocket client (auto-reconnect + heartbeats).
  • Mirror server messages: state updates, errors, takeover approvals, chat events.
  • Handle blackout states with full-screen overlay.

6) Chat UX parity

  • Chat list with unread indicators.
  • Thread view like WhatsApp (bubbles + timestamps + composer).
  • New chat screen (direct/group).
  • Unread tracking (client-side initially; server-side later).

7) Banking features

  • Player view: balance, transaction history, transfer form.
  • Banker view: force transfers, balance adjustments, dummy creation, approvals, blackout, end session.
  • Ensure banker has no balance view.

8) UX + performance

  • Ensure mobile-safe typography (no auto zoom).
  • Use safe-area insets for bottom tabs.
  • Optimize list rendering (FlatList for chats/transactions).

9) Testing

  • Add unit tests for API helpers + state reducers (if extracted).
  • Smoke test flows for create/join, lobby, player, banker, chat.

10) Build + release

  • Configure dev builds with a local IP target.
  • Configure production builds to use https://negopoly.fr.
  • Set up CI for builds and OTA updates (if using Expo).

Open questions

  • Expo or bare React Native?
  • Any custom native features planned (QR scanner, push notifications)?
  • Preferred directory layout for the mobile app inside this repo?