An app that is your mate in the kitchen managing the grocery list and keeping recipes to help you cook.
This is a Kotlin Multiplatform project targeting Android, iOS, Web, Desktop (JVM), Server. It aims to share as much code as possible in a modular way, so the general file structure of the project is as follows:
- client - all the shared client code and client application code
- server - backend code
- build-logic - all the convention plugins to share logic of modular libraries
./gradlew :client:composeApp:installDebug./gradlew :client:composeApp:installDebugTo build and run the development version of the iOS app, use the run configuration from the run widget in your IDE’s toolbar or open the /iosApp directory in Xcode and run it from there.
./gradlew :server:run- Architecture overview
- Build configuration (Supabase + Bugsnag)
- Developer settings (debug-only env switch + test-user login)
- Deployment (Android / iOS / Desktop)
- Deep linking setup
- Email verification
- Coroutines - asynchronous programming framework
- kotlinx.serialization - multiplatform serialization library
- kotlinx-datetime - multiplatform date time library
- ktfmt - kotlin code formatting and linter
- Compose Multiplatform - shared UI for client
- SqlDelight - sqlite database
- Essenty - lifecycle, instance keeper, back handler, state keeper
- Decompose - navigation
- metro - dependency injection
- kermit - logging
- Bugsnag - error logging
- multiplatform-settings - key value storage
- Kotlin test - KMP testing framework
- Kotest - assertions
- Mokkery - mocking library
- Turbine - coroutines testing library
- Compose Preview Screenshot Testing - snapshot tests for
@Previewcomposables (seeclient/ui/screenshot-test/andCLAUDE.mdfor the workflow)