Files
haptika/mobile/README.md
T
2026-09-09 10:12:49 +02:00

65 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Haptika Mobile — Expo
Application mobile séparée de la cible Apple Watch SwiftUI du dépôt parent.
- Expo SDK 54 / React Native 0.81, compatible avec Xcode 16.4 installé ici.
- Development build avec `expo-dev-client`, Expo Router et Metro sur le port 8082.
- Identifiant iOS et Android : `com.haptika.mobile.dev`.
- 110 frames mobiles et 36 panneaux du Figma Haptika : onboarding, abonnement iPhone et abonnement iPhone + Watch. Les frames Watch de 198 × 242 ne sont pas intégrées à l'app mobile.
## Démarrer
```sh
cd mobile
npm ci
npm run ios
```
Après installation du development build :
```sh
npm start
```
Sur le simulateur préparé dans cette session :
```sh
xcrun simctl openurl 85638E91-52BB-440F-91F9-35604A771A28 'haptika-mobile://expo-development-client/?url=http%3A%2F%2Flocalhost%3A8082'
```
`eas.json` contient les profils `development` (simulateur) et `development-device` (appareil physique). Aucune publication ni compilation cloud n'a été lancée.
## Source des écrans
Figma : https://www.figma.com/design/2FOpWaxKTfJi0ogQBNizXi/haptika
Les références MCP sont conservées dans `design/contexts.json` et `design/metadata.xml`. Les textes et leurs styles sont rendus avec des `Text` natifs, les champs avec `TextInput`, les actions avec `Pressable`. Les illustrations et icônes sont les assets exportés de Figma, regroupés par empreinte SHA-256 et embarqués pour fonctionner hors ligne. Aucun écran n'est une capture d'écran cliquable.
`src/design/scenes.json` conserve les identifiants Figma et les propriétés de chaque couche. `src/components/design-layer.tsx` et `design-screen.tsx` effectuent le rendu React Native ; `scripts/compile-scenes.cjs` relie les parcours. Les écrans longs défilent ; les écrans courts s'ajustent à la hauteur sûre sans déformer les éléments ronds.
Le choix iPhone / iPhone + Apple Watch se fait sur l'étape « Comment allez vous utiliser Haptika ? ». Les préférences, le prénom, les réglages des curseurs et les choix sont conservés localement. Les parcours de navigation, la sélection de durée, les champs et les minuteurs de démonstration sont interactifs.
## Limites fonctionnelles
Le SDK natif Firebase est configuré sur `haptika-d13d3`. L'écran `haptika-mobile://account`, accessible en touchant « COMPTE ET ABONNEMENT » dans Profil, permet la création de compte, la connexion e-mail/mot de passe, la réinitialisation du mot de passe et la déconnexion. Cet écran technique de compte est un ajout fonctionnel, pas une frame Figma.
Le prénom, l'année de naissance valide, le genre, le choix téléphone/Watch, la fin d'onboarding et le mode écran noir se synchronisent après connexion. Les autres curseurs restent locaux. Les changements non envoyés sont conservés dans une file locale séparée par UID ; ils repartent au retour du réseau (réessai toutes les 10 secondes) ou avec « Réessayer ». Les données du mode local ne sont pas importées à la connexion.
Les valeurs biométriques, historiques, abonnements et états « Connecté » des frames restent des exemples ; aucune de ces valeurs n'est envoyée à Firestore. Apple Santé, l'acquisition caméra, WatchConnectivity dans Expo, les alarmes système et les achats ne sont pas branchés. Les repositories de mesures et de séances sont disponibles pour leur futur branchement. Le code natif de l'ancienne application Watch reste distinct.
Les règles et index Firestore sont déployés. Les fonctions serveur de suppression sont écrites et testées sur Emulator ; leur déploiement nécessite Blaze, actuellement désactivé. Voir `../firebase/README.md`.
Les destinations de profil sans frame correspondante (abonnement, support, etc.) n'ouvrent pas d'écran inventé. Les panneaux explicatifs définis dans Figma sont associés aux boutons d'information disponibles.
## Vérification
```sh
npm run typecheck
npm test
npx expo install --check
```
Pour ouvrir une frame spécifique : `haptika-mobile://screen/431-2`. Ajouter `?preview=1` fige le contenu de référence et masque les interactions pour la comparaison visuelle. Ce mode n'enregistre pas de données biométriques.
Les captures de contrôle de chaque frame sont dans `qa/screens/`. Le quota du MCP Figma a été atteint après la récupération des contextes ; le rendu utilise les références déjà obtenues et les assets téléchargés, sans dépendance réseau à Figma au lancement.