À propos du projet

Nomi est un journal nutritionnel Android natif écrit en Kotlin avec Jetpack Compose et Material 3 Expressive. Il cible Android 8.0 (API 26) et versions ultérieures, et est distribué sous forme de fichiers APK via les releases GitHub. L'enregistrement est au cœur de l'application. Les repas peuvent être saisis en texte en langage naturel, dictés sur l'appareil, ou capturés à partir de photos de plats et d'étiquettes nutritionnelles. La reconnaissance photo estime les poids des aliments à l'aide d'indices d'échelle visibles tels que la taille de l'assiette et les couverts, et les grammes peuvent être vérifiés et modifiés avant le lancement de la recherche nutritionnelle. Des menus de restaurant complets peuvent être scannés, les plats extraits recherchés, et plusieurs éléments sélectionnés en une seule fois. Les quantités explicites sont conservées et la nutrition est mise à l'échelle de manière déterministe, de sorte qu'une quantité enregistrée peut ensuite être corrigée avec des phrases comme « j'ai mangé 60 g de moins » sans répéter la recherche en ligne. Les données nutritionnelles proviennent de fournisseurs d'IA configurables plutôt que d'un service intégré. Le README recommande Exa plus Gemini, où Exa récupère les preuves web et Gemini les convertit en données nutritionnelles structurées, et liste également Sonar, Perplexity, OpenRouter, OpenAI et des points de terminaison personnalisés compatibles. Les utilisateurs fournissent leurs propres clés API dans les Paramètres, et un test de connexion est disponible avant l'enregistrement. Seuls le texte ou l'image nécessaire à l'action sélectionnée sont envoyés au fournisseur. Les fonctionnalités de réutilisation incluent les aliments récents, les favoris, les repas enregistrés, et la copie d'un jour passé soit en entier, soit sous forme d'aliments sélectionnés individuellement. Le suivi couvre les calories, les macronutriments, les micronutriments, le poids, les objectifs, la série d'enregistrements et les progrès. L'interface est entièrement traduite en dix langues (anglais, allemand, espagnol, français, italien, néerlandais, portugais, albanais, suédois, turc), suit la langue du système au premier lancement, et prend en charge les unités métriques et américaines ; les noms d'aliments conservent leur langue d'origine plutôt que d'être traduits. La confidentialité est gérée localement : l'historique nutritionnel, les repas enregistrés, les favoris, les objectifs et les relevés de poids sont stockés sur l'appareil, et les identifiants API utilisent un chiffrement reposant sur Android Keystore et sont exclus des exports et des sauvegardes. Les exports incluent un journal JSON des aliments de chaque jour et des totaux de calories, protéines et glucides, ainsi qu'une sauvegarde restaurable sans clés API. Un jour peut également être partagé vers un autre Nomi en approchant deux téléphones compatibles NFC, sans appairage, compte, serveur ni connexion internet ; le téléphone récepteur prévisualise le jour avant d'écrire quoi que ce soit. Les détails de conception incluent des surfaces claires, sombres, à couleur dynamique et noir absolu, des cartes spatiales, des animations responsives, des mises en page bord à bord, et des modèles de navigation téléphone/tablette. La compilation depuis les sources nécessite JDK 17 et Android SDK 37, avec des tâches Gradle pour les APK de débogage et les tests unitaires ; l'outillage optionnel d'évaluation nutritionnelle se trouve dans `eval/` et utilise des identifiants dans un fichier `.env` ignoré par Git. Les versions suivent le versionnage sémantique, et les tags publiés sont immuables. Le projet est publié sous la licence PolyForm Noncommercial 1.0.0, qui autorise l'usage personnel, de loisir, d'étude, de recherche, scolaire, caritatif et par les institutions publiques, mais interdit la vente de l'application ou son usage commercial. Aucun droit de marque n'est accordé, donc les forks ont besoin de leur propre nom et icône. Le README précise qu'il s'agit d'une licence à code source disponible plutôt que d'une licence open source approuvée par l'OSI.