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, ninterprète pas une mesure, ne calcule pas de dose et ne modifie jamais un traitement. En cas durgence, contactez les services durgence.

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 ;
  • Peg, coach IA conversationnel relié au backend et compatible Ollama/OpenAI ;
  • 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/.

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 lapplication

Prérequis : Node.js 20+ et npm.

npm install
npm run web
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 lAPI

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 pour PostgreSQL, Docker et les règles de sécurité.

Pour connecter lapplication à lAPI :

EXPO_PUBLIC_API_URL=http://localhost:8000 npm run web

Les builds distribués utilisent https://api.metabloom.vicode.agency par défaut. Cette URL doit pointer vers le proxy HTTPS public, lui-même relié au conteneur FastAPI permanent. Le Compose d'exemple active restart: unless-stopped; un exemple de virtual host OpenResty est fourni dans server/openresty.metabloom.conf.example.

Au premier message, lapplication crée une session invitée pseudonyme et conserve son jeton sous metabloom-auth-token. Le moteur, le modèle et lURL IA sont configurés uniquement côté serveur. Aucun secret ne doit être placé dans lapplication.

Architecture

App.tsx                    Expérience Expo multiplateforme
assets/                    Icônes et splash screen
server/app/                API, modèles, validation et sécurité
server/tests/              Tests dintégration API
server/docker-compose...   PostgreSQL + API auto-hébergeables
screenshots/               Captures produit
.gitea/workflows/          Contrôles CI

Lapplication fonctionne actuellement en mode local-first. LAPI est prête séparément ; la prochaine étape dintégration est une file de synchronisation idempotente avec gestion explicite des conflits.

Sécurité et réglementation

  • aucune donnée nest envoyée par lapplication tant que lAPI nest pas configurée ;
  • les conversations Peg ne sont pas persistées par le backend et lhistorique transmis est limité ;
  • Peg filtre les urgences, diagnostics, dosages et modifications de traitement avant et après le modèle ;
  • lAPI impose un consentement avant lenregistrement de données de santé ;
  • les mots de passe sont hachés avec Argon2 et les données isolées par utilisateur ;
  • les secrets dexemple ne doivent jamais être utilisés en production ;
  • AsyncStorage nest 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 nest produit par lapplication.

É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

npm run typecheck
npm run build:web
cd server && pytest -q

Licence

MIT — voir LICENSE.

S
Description
Compagnon métabolique mobile-first pour iOS, Android et Web
Readme MIT
3 MiB
Languages
TypeScript 66.3%
Python 33.4%
Dockerfile 0.3%