Aller au contenu principal
Petanque Life

Mobile Application

F15.01 10 fonctionnalités Plateforme+

En bref

A single React Native + Expo codebase delivers polished native apps for iOS and Android plus a fast PWA, tailored to four distinct roles — players, officials, club admins and spectators — with offline-first storage for licenses, matches and rankings, unified push notifications, a camera-based QR scanner for license verification and check-in, GPS-driven nearby venue discovery and full dark mode and accessibility settings baked in from day one.

Comment ça fonctionne

The mobile application is built once in React Native + Expo and shipped to iOS, Android and the web from the same TypeScript source tree. A device-class hook (useDeviceClass) flips the layout between a mobile bottom-tab shell and a desktop sidebar shell at a 640 px cutoff, so the same screens render natively on a phone and adaptively on a tablet or browser. EAS OTA push updates ship JavaScript-only fixes within minutes, while native binaries follow a slower App Store / Play Store cadence.

Four role-based experiences live inside the same shell. Players get profile, competitions, results and rankings; officials get match management and score entry; club admins get member management and broadcast tools; spectators get live scores, schedules and venue info. Role detection is server-driven from the active tenant profile, so a single download adapts to whatever the user is allowed to do.

Offline-first is foundational: license cards, last viewed matches and current rankings are cached in encrypted local storage. Score entry written offline is queued and replayed when the device reconnects, with conflict resolution handled by the API. Push notifications use APNs, FCM and Web Push behind a unified subscription endpoint. The QR scanner uses Expo Camera for license verification and check-in, validating signed JWT bundles even with no network. A GPS-driven nearby finder lists clubs, venues and competitions sorted by distance, deep-linking into the relevant detail screens. Dark mode and accessibility settings (font scaling, high contrast, reduce motion, screen reader hints) are applied through a tenant-branded ThemeProvider that respects both OS-level preferences and in-app overrides.

Capacités clés

  • Cross-platform from one codebase (iOS, Android, Web PWA) via Expo + EAS OTA updates
  • Role-aware shell for player, official, club admin and spectator with adaptive mobile/desktop layout
  • Offline cache for license, recent matches and rankings with queued score-entry sync
  • Unified push notifications across APNs, FCM and Web Push
  • Camera-based QR scanner for license verification and event check-in
  • GPS-based nearby venue and competition finder with deep links
  • Dark mode plus full accessibility settings respecting OS preferences

En pratique

A new player downloads the app from the App Store, signs in once and lands on a hero home screen sized for their phone. They tap the license tab to see a fullscreen license card that loads instantly from cache, then scan a friend's QR badge at the club to verify membership — both work without a signal. On the way to a tournament they open the venue finder, get walking directions to the nearest courts and check in by scanning the entry QR.

During play, the official-mode user enters scores; if the boulodrome Wi-Fi drops, entries queue locally and sync the moment they reconnect. Back home, the same player opens the web app on a laptop and finds an identical experience reflowed into a desktop sidebar layout — same data, same login, no install needed.

Fonctionnalités de ce sous-système

10
ID Status Fonctionnalités
F15.01.01 Livré Cross-platform app (iOS, Android, Web) via Craft-Easy Admin (React Native/Expo) ✅ PL-F1501a
F15.01.02 Livré Player mobile app (profile, competitions, results, rankings) ✅ PL-F1501a
F15.01.03 Livré Official mobile app (match management, score entry) ✅ PL-F1501a
F15.01.04 Livré Club admin mobile app (member management, communication) ✅ PL-F1501a
F15.01.05 Livré Spectator mobile app (live scores, schedule, venue info) ✅ PL-F1501a
F15.01.06 Livré Offline mode (score entry without connectivity, sync later) ✅ PL-F1501b
F15.01.07 Livré Push notifications ✅ PL-F1501b
F15.01.08 Livré QR code scanner (license verification, check-in) ✅ PL-F1501b
F15.01.09 Livré GPS-based nearby venue/competition finder ✅ PL-F1501b
F15.01.10 Livré Dark mode and accessibility settings ✅ PL-F1501b