Calory is a Kotlin Multiplatform app for tracking what you eat and watching your daily macros. One codebase ships Android, desktop, and iOS builds while sharing the domain, data, and most UI.
- Track consumed foods with weight, calories, proteins, fats, carbs, and day.
- See daily lists and totals in a Compose-based UI.
- Persist entries locally via SQLDelight; keeps domain logic shared across targets.
- Kotlin Multiplatform with shared domain/data.
- Compose Multiplatform UI (Android, Desktop; iOS host via Swift).
- SQLDelight for schema-first database and typed queries.
- Koin for dependency injection.
- Coroutines for async work.
composeApp/: UI entry points per platform; shared Compose screens incomposeApp/src/commonMain/kotlin/com/kurban/calory.shared/: domain and data layer, SQLDelight schemas inshared/src/commonMain/sqldelight, DI setup inshared/src/commonMain/kotlin/com/kurban/calory/core/di.iosApp/iosApp: Xcode host project for iOS builds.gradle/libs.versions.toml: version catalog for dependencies and plugins.
- JDK 11+
- Android Studio (for Android/Desktop) or Xcode (for iOS)
- Gradle wrapper is included; no extra install needed.
- Android debug APK:
./gradlew :composeApp:assembleDebug - Desktop app:
./gradlew :composeApp:run - iOS: open
iosApp/iosAppin Xcode, or./gradlew :shared:linkDebugFrameworkIosSimulatorArm64
- Shared checks/tests:
./gradlew :shared:check - Regenerate SQLDelight after schema changes:
./gradlew generateSqlDelightInterface
- Keep new dependencies in the version catalog (
gradle/libs.versions.toml). - SQLDelight schemas live under
shared/src/commonMain/sqldelight/dbscheme/*; queries must stay inside their package folders.