Об этом проекте

Nomi — это нативное Android-приложение для дневника питания, написанное на Kotlin с использованием Jetpack Compose и Material 3 Expressive. Оно поддерживает Android 8.0 (API 26) и выше и распространяется в виде APK-файлов через релизы GitHub. Основная функция приложения — запись приёмов пищи. Блюда можно вводить обычным текстом, диктовать голосом на устройстве или захватывать с фотографий блюд и этикеток с информацией о питательности. Распознавание фото оценивает вес еды, используя видимые подсказки масштаба, такие как размер тарелки и столовых приборов, а граммы можно просмотреть и отредактировать перед запуском исследования питательности. Можно сканировать полные меню ресторанов, искать извлечённые блюда и выбирать сразу несколько позиций. Явные количества сохраняются, а питательность масштабируется детерминированно, поэтому записанное количество можно позже исправить фразами вроде «я съел на 60 г меньше» без повторного онлайн-исследования. Данные о питательности поступают от настраиваемых AI-провайдеров, а не от встроенного сервиса. В README рекомендуется Exa в сочетании с Gemini, где Exa извлекает веб-доказательства, а Gemini преобразует их в структурированные данные о питательности; также перечислены Sonar, Perplexity, OpenRouter, OpenAI и совместимые пользовательские конечные точки. Пользователи предоставляют свои собственные API-ключи в настройках, и перед записью доступна проверка соединения. Провайдеру отправляется только тот текст или изображение, которые необходимы для выбранного действия. Функции повторного использования включают недавние продукты, избранное, сохранённые приёмы пищи и копирование прошлого дня целиком или отдельными выбранными продуктами. Отслеживание охватывает калории, макронутриенты, микронутриенты, вес, цели, серию записей и прогресс. Интерфейс полностью переведён на десять языков (английский, немецкий, испанский, французский, итальянский, нидерландский, португальский, албанский, шведский, турецкий), при первом запуске следует системному языку и поддерживает метрические и американские единицы измерения; названия продуктов сохраняются на исходном языке, а не переводятся. Конфиденциальность обеспечивается локально: история питания, сохранённые приёмы пищи, избранное, цели и записи о весе хранятся на устройстве, а учётные данные API используют шифрование на основе Android Keystore и исключаются из экспорта и резервных копий. Экспорт включает JSON-дневник с продуктами каждого дня и итогами по калориям, белкам и углеводам, а также восстанавливаемую резервную копию без API-ключей. День также можно передать другому пользователю Nomi, приложив два телефона с поддержкой NFC друг к другу, без сопряжения, учётной записи, сервера или интернет-соединения; принимающий телефон показывает предварительный просмотр дня перед записью. Детали дизайна включают светлые, тёмные, динамические и полностью чёрные поверхности, пространственные карточки, адаптивную анимацию, сквозные макеты и схемы навигации для телефонов и планшетов. Сборка из исходного кода требует JDK 17 и Android SDK 37, с задачами Gradle для отладочных APK и модульных тестов; дополнительные инструменты оценки питательности находятся в `eval/` и используют учётные данные из Git-игнорируемого файла `.env`. Релизы следуют семантическому версионированию, и опубликованные теги неизменяемы. Проект выпущен под лицензией PolyForm Noncommercial License 1.0.0, которая разрешает личное, хобби, учебное, исследовательское, школьное, благотворительное и государственное использование, но запрещает продажу приложения или его коммерческое использование. Товарные знаки не предоставляются, поэтому форки должны иметь собственное имя и иконку. В README отмечается, что это лицензия с доступным исходным кодом, а не одобренная OSI открытая лицензия.