feat: evolve MetaBloom into full product foundation
This commit is contained in:
@@ -1,33 +1,38 @@
|
||||
# MetaBloom
|
||||
|
||||
Compagnon métabolique moderne, francophone et sans culpabilisation pour aider les personnes concernées par le surpoids, le prédiabète ou le diabète de type 2 à suivre leurs habitudes quotidiennes.
|
||||
MetaBloom est un compagnon métabolique mobile-first, francophone et non culpabilisant pour les personnes concernées par le surpoids, le prédiabète ou le diabète de type 2. Une seule base Expo cible iOS, Android et le Web.
|
||||
|
||||
> **Statut : prototype éducatif et bien-être.** MetaBloom ne diagnostique aucune maladie, ne calcule aucun traitement et ne remplace pas un professionnel de santé. En cas d’urgence, contactez les services d’urgence.
|
||||
> **Statut : produit en développement, usage éducatif et bien-être uniquement.** MetaBloom ne diagnostique pas, n’interprète pas une mesure, ne calcule pas de dose et ne modifie jamais un traitement. En cas d’urgence, contactez les services d’urgence.
|
||||
|
||||
## Le produit
|
||||
## Fonctionnalités disponibles
|
||||
|
||||
Une seule application mobile-first pour iOS, Android et le web :
|
||||
- onboarding avec objectif, parcours et consentement informatif ;
|
||||
- parcours Prévention, Perte de poids, Diabète type 2 et GLP-1 ;
|
||||
- dashboard quotidien responsive avec données réellement dynamiques ;
|
||||
- journal enrichi : poids, glycémie facultative, eau, pas, sommeil, repas et humeur ;
|
||||
- validation des valeurs et gestion mg/dL/mmol/L ;
|
||||
- graphiques et moyennes calculés sur les sept derniers jours ;
|
||||
- coaching comportemental et micro-leçons sans recommandations thérapeutiques ;
|
||||
- préférences, rappels préparés, export CSV et effacement local ;
|
||||
- persistance hors ligne via AsyncStorage ;
|
||||
- backend FastAPI/PostgreSQL auto-hébergeable avec JWT, consentement, CRUD, export et suppression de compte ;
|
||||
- préparation UI pour scan de repas, Apple Santé et Health Connect.
|
||||
|
||||
- tableau de bord quotidien avec score souple et petites actions ;
|
||||
- journal rapide : poids, eau, pas et glycémie manuelle facultative ;
|
||||
- tendances sur 7 jours et encouragements non culpabilisants ;
|
||||
- préférences d’unités et informations de sécurité ;
|
||||
- persistance locale sur l’appareil, sans compte ni serveur pour ce MVP ;
|
||||
- interface responsive, accessible et utilisable au clavier.
|
||||
## Captures
|
||||
|
||||
## Pourquoi MetaBloom ?
|
||||
|
||||
Le marché combine trois familles : suivi nutritionnel (MyFitnessPal), coaching comportemental (Noom/WW) et journal du diabète (mySugr). MetaBloom se différencie comme **compagnon métabolique inclusif et francophone**, simple, calme, centré sur la prévention et la confidentialité. Il évite les objectifs extrêmes et la gamification punitive.
|
||||
Les captures mobiles sont disponibles dans [`screenshots/`](./screenshots/).
|
||||
|
||||
## Stack
|
||||
|
||||
- Expo SDK 57
|
||||
- React Native 0.86 + React 19
|
||||
- TypeScript
|
||||
- AsyncStorage pour les données locales
|
||||
- Expo Linear Gradient
|
||||
| Couche | Technologie |
|
||||
|---|---|
|
||||
| Application | Expo SDK 57, React Native 0.86, React 19, TypeScript |
|
||||
| Stockage local | AsyncStorage |
|
||||
| API | FastAPI, SQLAlchemy, Pydantic |
|
||||
| Données serveur | PostgreSQL en production, SQLite en développement |
|
||||
| Sécurité API | JWT expirant, Argon2, isolation par utilisateur |
|
||||
|
||||
## Démarrer
|
||||
## Démarrer l’application
|
||||
|
||||
Prérequis : Node.js 20+ et npm.
|
||||
|
||||
@@ -36,41 +41,68 @@ npm install
|
||||
npm run web
|
||||
```
|
||||
|
||||
Autres cibles :
|
||||
|
||||
```bash
|
||||
npm run android # appareil/émulateur Android ou Expo Go
|
||||
npm run ios # macOS + simulateur iOS, ou Expo Go
|
||||
npm run android
|
||||
npm run ios
|
||||
npm run typecheck
|
||||
npm run build:web
|
||||
```
|
||||
|
||||
Les cibles Android/iOS fonctionnent avec Expo Go pour ce prototype. HealthKit/Health Connect nécessiteront un development build natif et des comptes développeur Apple/Google.
|
||||
|
||||
## Démarrer l’API
|
||||
|
||||
```bash
|
||||
cd server
|
||||
python -m venv .venv
|
||||
. .venv/bin/activate
|
||||
pip install -r requirements-dev.txt
|
||||
uvicorn app.main:app --reload
|
||||
```
|
||||
|
||||
Documentation OpenAPI : `http://localhost:8000/docs`. Voir [`server/README.md`](./server/README.md) pour PostgreSQL, Docker et les règles de sécurité.
|
||||
|
||||
## Architecture
|
||||
|
||||
```text
|
||||
App.tsx Interface, navigation et état du MVP
|
||||
index.ts Point d’entrée Expo
|
||||
app.json Configuration multiplateforme
|
||||
assets/ Icônes et splash screen
|
||||
App.tsx Expérience Expo multiplateforme
|
||||
assets/ Icônes et splash screen
|
||||
server/app/ API, modèles, validation et sécurité
|
||||
server/tests/ Tests d’intégration API
|
||||
server/docker-compose... PostgreSQL + API auto-hébergeables
|
||||
screenshots/ Captures produit
|
||||
.gitea/workflows/ Contrôles CI
|
||||
```
|
||||
|
||||
Le MVP reste volontairement monolithique pour accélérer la validation produit. Une V2 séparera écrans, composants, domaine et accès aux données.
|
||||
L’application fonctionne actuellement en mode local-first. L’API est prête séparément ; la prochaine étape d’intégration est une file de synchronisation idempotente avec gestion explicite des conflits.
|
||||
|
||||
## Données et sécurité
|
||||
## Sécurité et réglementation
|
||||
|
||||
Les données de démonstration et saisies sont stockées exclusivement via AsyncStorage sur l’appareil. Aucun backend, tracker publicitaire ou transfert de données n’est inclus.
|
||||
- aucune donnée n’est envoyée par l’application tant que l’API n’est pas configurée ;
|
||||
- l’API impose un consentement avant l’enregistrement de données de santé ;
|
||||
- les mots de passe sont hachés avec Argon2 et les données isolées par utilisateur ;
|
||||
- les secrets d’exemple ne doivent jamais être utilisés en production ;
|
||||
- AsyncStorage n’est pas chiffré : il doit être remplacé par SQLite + SecureStore avant production ;
|
||||
- une AIPD/RGPD, une analyse HDS, un audit OWASP et une qualification MDR sont obligatoires avant usage réel ;
|
||||
- aucun conseil GLP-1, seuil glycémique ou traitement n’est produit par l’application.
|
||||
|
||||
Avant une mise en production réelle : analyse d’impact RGPD, consentement explicite, chiffrement, gestion de l’effacement/export, évaluation HDS, audit de sécurité, validation clinique et qualification au regard du règlement européen MDR. Les fonctions de diagnostic, prédiction d’hypoglycémie, dosage d’insuline ou adaptation thérapeutique sont explicitement hors périmètre.
|
||||
## État des fonctionnalités avancées
|
||||
|
||||
## Roadmap
|
||||
- **Backend/auth/export/suppression :** implémentés et isolés dans `server/`.
|
||||
- **Synchronisation multi-appareil :** architecture définie, connexion client/API restante.
|
||||
- **Notifications :** préférences fonctionnelles ; branchement natif restant.
|
||||
- **Scan alimentaire :** expérience préparée ; source nutritionnelle et confirmation utilisateur restantes.
|
||||
- **HealthKit/Health Connect :** préparation produit ; dépendances natives et autorisations stores restantes.
|
||||
- **IA :** volontairement non branchée avant gouvernance clinique et corpus validé.
|
||||
|
||||
1. Tests utilisateurs et accessibilité WCAG.
|
||||
2. Authentification et synchronisation chiffrée auto-hébergeable.
|
||||
3. Export PDF/CSV partageable avec consentement.
|
||||
4. Rappels locaux et intégrations HealthKit / Health Connect.
|
||||
5. Base alimentaire francophone et scan, après validation qualité.
|
||||
6. Parcours professionnels de santé et conformité réglementaire.
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
npm run typecheck
|
||||
npm run build:web
|
||||
cd server && pytest -q
|
||||
```
|
||||
|
||||
## Licence
|
||||
|
||||
MIT — voir `LICENSE`.
|
||||
MIT — voir [`LICENSE`](./LICENSE).
|
||||
|
||||
Reference in New Issue
Block a user