2.7 KiB
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.tsinto a package or keep a synced copy for RN. - Create a
configmodule to switch base URL by build type:- Dev:
http://<this-computer's-ip>(read from env or app config). - Prod:
https://negopoly.fr.
- Dev:
- 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 (
FlatListfor 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?