An Android app that helps you stay honest about energy balance — calories in (food, logged by text, search, barcode, or photo with AI estimation, tuned for home-cooked Indian food) versus calories out (BMR baseline + activity from Health Connect and manual entry).
This repository is at Phase 0 — Scaffold: a minimal, buildable app shell. No product features yet; see the plan doc for the full roadmap.
The project uses the Gradle wrapper, so no local Gradle install is required.
Point JAVA_HOME at a JDK 17+ (Android Studio ships a compatible JBR) and
ANDROID_HOME at your Android SDK before running Gradle:
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
export ANDROID_HOME="/Users/chandansatapathy/Library/Android/sdk"
./gradlew :app:assembleDebuglocal.properties (not checked into version control) points Gradle at the
SDK; regenerate it with sdk.dir=<path-to-your-Android-SDK> if it's missing.
Requirements:
- compileSdk / targetSdk 36, minSdk 26
- Android SDK platform
android-36installed, plus a recent build-tools version
detekt is wired up but non-blocking in Phase 0:
./gradlew detektA single Gradle module (:app) with package-level modularity — feature
folders instead of separate Gradle modules, per the plan's "Codebase
conventions." Each package has one clear responsibility:
com.snitch/
navigation/ // bottom-nav destinations, NavHost, bottom bar
core/
design/ // Material 3 theme, color roles, reusable Composables
common/ // shared utils, formatters, Result types (empty for now)
domain/ // pure Kotlin: models + use-cases, no Android deps
model/
energy/ // BMR/TDEE/MET calculators (unit-tested, later phase)
usecase/
data/
local/ // Room DBs, DAOs, entities, mappers
remote/ // Retrofit: Gemini + Open Food Facts
ai/ // NutritionAiProvider + prompts/schema
repository/ // MealRepository/ActivityRepository/ProfileRepository
feature/ // one package per feature (ui + viewmodel)
onboarding/
chat/ // Home tab — conversational logger (stub in Phase 0)
metrics/
diary/
settings/
di/ // Hilt modules
Packages that are still empty hold a short package-info.kt documenting what
belongs there, so the tree itself reads as documentation even before the code
exists.
See /Users/chandansatapathy/.claude/plans/i-want-to-create-steady-journal.md
for the full product plan, architecture decisions, and phased roadmap.