Nutry
Application privée de suivi nutritionnel et sportif, en français. Un client Web et un iPhone natif synchronisés, plus un client Android de test — repas analysés par IA uniquement côté serveur.
Nutrition et sport, sur plusieurs clients
Nutry est une application privée de suivi nutritionnel et sportif, en français. Deux clients sont synchronisés : une application Web responsive (Next.js) et une application iPhone native en SwiftUI. Elles s’appuient sur une API commune, une base SQLite sur le serveur personnel, et une analyse visuelle des repas par OpenAI ou Google Gemini, faite uniquement côté serveur.
Il existe aussi un client Android natif, en Kotlin et Jetpack Compose, sans WebView. Le paquet est fr.leoponthieux.nutry, en version 1.0.0 (versionCode 1), pour Android 8.0 au minimum. L’APK de test est installé à la main et signé avec la clé de debug : il n’est pas sur le Play Store.
Sur iPhone, l’application cible iOS 18.0 et les familles iPhone et iPad. Il n’y a pas d’application watchOS : les seules cibles du projet sont l’app iOS, le framework WhoopFeature et l’extension Live Activity. L’Apple Watch est lue via Apple Santé.
Ce que l’application doit garantir
- Garder le client Web et le client iPhone synchronisés, avec une API et une base communes.
- N’analyser les photos de repas que côté serveur, avec Gemini par défaut et OpenAI en option.
- Permettre l’export JSON de toutes les données et la suppression du compte depuis le Web ou l’iPhone.
Repas
Photo, analyse IA, journal et codes-barres
Nutry IA
Coach conversationnel, avec le contexte du jour
Musculation
1 324 exercices, routines et séance à plusieurs
Course et vélo
Suivi GPS, carte en direct
Fonctionnalités et technique
Le détail de ce que fait réellement l’application
Navigation iOS
- Aujourd’hui, Nutrition, Activité, Communauté et Compte.
- Interface SwiftUI, Swift 6.0, avec HealthKit, PhotosUI, AuthenticationServices et le Trousseau.
Repas
- Photo depuis la caméra ou la photothèque, analysée par Gemini par défaut, OpenAI en option.
- Détail par aliment, journal quotidien, historique sur 30 jours, repas récurrents.
- Scan de codes-barres.
- Les boutons Recettes et Liste de courses ont quitté l’onglet Nutrition iOS au build 177. Ils restent documentés côté Web.
Musculation
- Bibliothèque de 1 324 exercices, avec miniatures et animations GIF.
- Routines modifiables sur le Web et l’iPhone.
- Séries normales, d’échauffement, dégressives et à l’échec. Minuteur de repos, records et 1RM estimé.
- Import Hevy (CSV) et calculateur de disques.
- Séance à plusieurs, en duo ou en groupe, avec synchronisation des exercices. Sans Internet, relais Bluetooth entre iPhones proches.
Course, vélo, écran verrouillé
- Suivi GPS de la course et du vélo, plein écran avec carte en direct.
- Écrans « Progression Course » et « Progression Vélo ».
- Live Activity sur l’écran verrouillé et dans l’île dynamique : exercice, série, charge et répétitions, avec validation d’une série depuis la Live Activity.
- Le minuteur de repos a aussi sa Live Activity.
Montres, musique, communauté
- WHOOP en Bluetooth local (moteur NOOP 11.8.0, build 427).
- Garmin, Polar, Suunto, Coros, Fitbit, Samsung, Withings et Amazfit passent par Apple Santé.
- Les paquets OuraProtocol et PolarProtocol viennent du code tiers inclus Vendor/NOOP : ce ne sont pas des connexions directes proposées à l’utilisateur.
- Coach « Nutry IA » : conversations, suppression d’une conversation, contexte (repas, poids, objectifs, séances, course, vélo, résumés de montre).
- Musique pendant une séance en direct : Spotify, Apple Music ou Deezer. La pochette Apple Music est visible par les abonnés, et une playlist Spotify peut être choisie par routine.
- Communauté : fil des personnes suivies, demandes de suivi, réactions, commentaires. Le partage (routines, repas, séances, position en direct) est activé par défaut pour les abonnés.
- Salles de sport : répertoire OpenStreetMap, salle la plus proche, géorepérage avec notification à l’arrivée.
Distribution et socle
- Version publiée : 1.1.0, build 181, sur TestFlight, avec un lien public. Le build minimum exigé est aussi le 181.
- Le build 181 couvre Course et Vélo : masquer l’historique en cours, et des réglages de mise en route modifiables.
- Archive signée par Xcode Cloud (workflow « Nutry »), puis envoi sur TestFlight et affectation au groupe « Testeurs Externes Nutry ». Un workflow GitHub Actions de secours existe.
- Dans le dépôt, le numéro de build local est un plancher : le numéro publié est celui du run Xcode Cloud.
- Un build trop ancien est bloqué et renvoyé vers TestFlight. Chaque build a son écran « Nouveautés ».
- Web et serveur : Next.js 16, React 19, Better Auth (e-mail, Google, Apple), SQLite en mode WAL, service systemd, variante Docker.
- Dépendances iOS figées : MarkdownUI 2.4.1, NetworkImage 6.0.1, ZIPFoundation 0.9.20.
- Export JSON de toutes les données et suppression du compte, depuis le Web ou l’iPhone.
Distribution
Ce qu’il faut savoir avant d’utiliser l’application
- iPhone et iPad : bêta TestFlight, version 1.1.0, build 181.
- Android : APK de debug 1.0.0 seulement, installé à la main, pas publié sur le Play Store.
- Pas d’application watchOS. L’Apple Watch est lue via Apple Santé.