프로젝트 소개

Nomi는 Kotlin과 Jetpack Compose, Material 3 Expressive로 작성된 네이티브 Android 영양 일지 앱입니다. Android 8.0(API 26) 이상을 지원하며, GitHub 릴리스를 통해 APK 자산으로 배포됩니다. 로깅은 앱의 핵심 기능입니다. 식사는 일반 언어 텍스트로 입력하거나, 기기에서 받아쓰기하거나, 요리 및 영양 성분표 사진을 촬영하여 기록할 수 있습니다. 사진 인식은 접시 크기와 식기와 같은 눈에 보이는 크기 단서를 사용하여 음식 무게를 추정하며, 영양 조사가 실행되기 전에 그램 수를 검토하고 편집할 수 있습니다. 전체 레스토랑 메뉴를 스캔하고, 추출된 요리를 검색하고, 여러 항목을 한 번에 선택할 수 있습니다. 명시적인 수량은 보존되고 영양 정보는 결정적으로 조정되므로, 기록된 양은 온라인 조사를 반복하지 않고 "60g 덜 먹었어"와 같은 문구로 나중에 수정할 수 있습니다. 영양 데이터는 번들 서비스가 아닌 구성 가능한 AI 공급자에서 제공됩니다. README는 Exa와 Gemini를 권장하며, Exa는 웹 증거를 검색하고 Gemini는 이를 구조화된 영양 데이터로 변환합니다. 또한 Sonar, Perplexity, OpenRouter, OpenAI 및 호환되는 사용자 지정 엔드포인트도 나열합니다. 사용자는 설정에서 자신의 API 키를 제공하며, 로깅 전에 연결 테스트를 사용할 수 있습니다. 선택한 작업에 필요한 텍스트나 이미지만 공급자에게 전송됩니다. 재사용 기능에는 최근 음식, 즐겨찾기, 저장된 식사, 과거 하루 전체 또는 개별 선택 음식 복사가 포함됩니다. 추적은 칼로리, 다량 영양소, 미량 영양소, 체중, 목표, 로깅 연속 기록 및 진행 상황을 다룹니다. 인터페이스는 10개 언어(영어, 독일어, 스페인어, 프랑스어, 이탈리아어, 네덜란드어, 포르투갈어, 알바니아어, 스웨덴어, 터키어)로 완전히 번역되어 있으며, 첫 실행 시 시스템 언어를 따르고 미터법과 미국 관습 단위를 지원합니다. 음식 이름은 번역되지 않고 원래 언어를 유지합니다. 개인 정보 보호는 로컬에서 처리됩니다. 영양 기록, 저장된 식사, 즐겨찾기, 목표 및 체중 기록은 기기에 저장되며, API 자격 증명은 Android Keystore 기반 암호화를 사용하고 내보내기 및 백업에서 제외됩니다. 내보내기에는 각 날짜의 음식과 칼로리, 단백질, 탄수화물 합계가 포함된 JSON 일기가 포함되며, API 키가 없는 복원 가능한 백업도 포함됩니다. 하루는 NFC 지원 휴대폰 두 대를 함께 대면 다른 Nomi와 공유할 수 있으며, 페어링, 계정, 서버 또는 인터넷 연결이 필요 없습니다. 수신 휴대폰은 아무것도 쓰기 전에 하루를 미리 봅니다. 디자인 세부 사항에는 밝은, 어두운, 동적 색상 및 완전 검정 표면, 공간 카드, 반응형 모션, 가장자리 간 레이아웃, 휴대폰/태블릿 탐색 패턴이 포함됩니다. 소스에서 빌드하려면 JDK 17과 Android SDK 37이 필요하며, 디버그 APK 및 단위 테스트용 Gradle 작업이 있습니다. 선택적 영양 평가 도구는 `eval/`에 있으며 Git에서 무시되는 `.env` 파일의 자격 증명을 사용합니다. 릴리스는 시맨틱 버전 관리를 따르며, 게시된 태그는 변경할 수 없습니다. 이 프로젝트는 PolyForm 비상업적 라이선스 1.0.0에 따라 출시되었습니다. 이 라이선스는 개인, 취미, 학습, 연구, 학교, 자선 및 공공 기관 사용을 허용하지만 앱 판매 또는 상업적 사용을 금지합니다. 상표권은 부여되지 않으므로 포크에는 자체 이름과 아이콘이 필요합니다. README는 이것이 OSI 승인 오픈 소스 라이선스가 아닌 소스 사용 가능 라이선스임을 명시합니다.