110 lines
4.5 KiB
Markdown
110 lines
4.5 KiB
Markdown
# MetaBloom
|
||
|
||
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 : 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.
|
||
|
||
## Fonctionnalités disponibles
|
||
|
||
- 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.
|
||
|
||
## Captures
|
||
|
||
Les captures mobiles sont disponibles dans [`screenshots/`](./screenshots/).
|
||
|
||
## Stack
|
||
|
||
| Couche | Technologie |
|
||
|---|---|
|
||
| Application | Expo SDK 57, React Native 0.86, React 19, TypeScript |
|
||
| Design system | Icônes vectorielles Lucide, composants accessibles, zones tactiles 44 px minimum |
|
||
| 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 l’application
|
||
|
||
Prérequis : Node.js 20+ et npm.
|
||
|
||
```bash
|
||
npm install
|
||
npm run web
|
||
```
|
||
|
||
```bash
|
||
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 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
|
||
```
|
||
|
||
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.
|
||
|
||
## Sécurité et réglementation
|
||
|
||
- 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.
|
||
|
||
## État des fonctionnalités avancées
|
||
|
||
- **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é.
|
||
|
||
## Tests
|
||
|
||
```bash
|
||
npm run typecheck
|
||
npm run build:web
|
||
cd server && pytest -q
|
||
```
|
||
|
||
## Licence
|
||
|
||
MIT — voir [`LICENSE`](./LICENSE).
|