diff --git a/README.md b/README.md index e04981a..828727a 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,19 @@ -# Coach Hypnotruck — iOS +# Coach Hypnotruck — Mobile (iOS + Android) -Wrapper natif iOS de [coach.hypnotruck.ch](https://coach.hypnotruck.ch) basé sur Capacitor 8. +Wrapper natif mobile de [coach.hypnotruck.ch](https://coach.hypnotruck.ch) basé sur Capacitor 8. + +> Le repo s'appelle historiquement `coach-ios` ; renommé `coach-mobile` à partir +> de l'ajout de la plateforme Android (2026-05-07). Le filename `coach-ios.local.json` +> est conservé pour ne pas casser les références dans le code Swift natif. ## Architecture - **Backend** : FastAPI + Jinja2 hébergé sur le VPS, accessible via `https://coach.hypnotruck.ch` - **Coque iOS** : Capacitor 8 charge l'URL distante dans un WKWebView -- **Plugins natifs** : push notifications, local notifications, géolocalisation, HealthKit (Capgo), splash, status bar, haptics +- **Coque Android** : Capacitor 8 charge l'URL distante dans une WebView (Android 8.0+, API 26+ — requis par Health Connect) +- **Plugins natifs** : push notifications, local notifications, géolocalisation, HealthKit (iOS) / Health Connect (Android) via `@capgo/capacitor-health`, splash, status bar, haptics -Le code web n'est pas embarqué — l'app pointe vers la prod via `server.url` dans `capacitor.config.ts`. Avantage : déploiement web = mise à jour instantanée de l'app sans review Apple. +Le code web n'est pas embarqué — l'app pointe vers la prod via `server.url` dans `capacitor.config.ts`. Avantage : déploiement web = mise à jour instantanée de l'app sans review Apple/Google. ## Bundle ID & nom @@ -51,7 +56,12 @@ L'app utilisera ce token pour se connecter automatiquement à `coach.hypnotruck. ### 2. Générer les icônes & splash ```bash +# iOS uniquement npx @capacitor/assets generate --ios +# Android uniquement +npx @capacitor/assets generate --android +# Les deux +npx @capacitor/assets generate ``` Génère toutes les tailles requises depuis `resources/icon.png` (1024×1024) et `resources/splash.png` (2732×2732). @@ -144,9 +154,9 @@ coach-ios/ | Type de modif | Action requise | |---|---| | Changement web (templates, CSS, routes) | **Aucune** — l'app charge la prod en direct | -| Ajout plugin Capacitor | `npm install` + `npx cap sync ios` + nouveau build TestFlight | -| Changement icône / splash | `npx @capacitor/assets generate --ios` + sync + nouveau build | -| Changement bundle ID, version, capabilities | Build + soumission Apple review | +| Ajout plugin Capacitor | `npm install` + `npx cap sync` + nouveau build TestFlight / Play Store | +| Changement icône / splash | `npx @capacitor/assets generate` + sync + nouveau build | +| Changement bundle ID, version, capabilities | Build + soumission Apple review / Play Console review | ## TODO Phase 0 diff --git a/package.json b/package.json index f5e5597..21095ba 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,16 @@ { - "name": "coach-ios", + "name": "coach-mobile", "version": "0.1.0", - "description": "Coach Hypnotruck — wrapper iOS Capacitor de coach.hypnotruck.ch", + "description": "Coach Hypnotruck — wrapper Capacitor (iOS + Android) de coach.hypnotruck.ch", "private": true, "scripts": { - "sync": "cap sync ios", + "sync": "cap sync", + "sync:ios": "cap sync ios", + "sync:android": "cap sync android", "open:ios": "cap open ios", - "build:ios": "cap sync ios && cap open ios" + "open:android": "cap open android", + "build:ios": "cap sync ios && cap open ios", + "build:android": "cap sync android && cap open android" }, "author": "Sylvain Bettinelli", "license": "UNLICENSED",