finds.dev← search

// the find

razaghimahdi/Shopping-By-KMP

★ 559 · Kotlin · MIT · updated Sep 2026

This is a cross-platform application that is built using Jetpack Compose Multiplatform, a declarative framework for sharing UIs across multiple platforms with Kotlin.

A Compose Multiplatform shopping app that now ships a full-stack monorepo: a shared Kotlin/Compose client targeting Android, iOS, desktop, web, TV and Automotive, plus a Ktor+MySQL backend with JWT auth. It's aimed at people learning KMP end-to-end — how to structure a Clean Architecture/MVI app and wire a real backend instead of mocking data.

The module boundaries (:core, :server, :app:shared, per-platform :app:*) are a legitimate reference for how to lay out a multi-target KMP Gradle project, which is still something most tutorials get wrong. Having a real Ktor/Exposed/MySQL server in the same repo instead of a fake JSON API is unusual for a sample app and makes the networking layer (Ktor client, JWT, Coil3 loading) demonstrably real rather than hand-waved. Six client targets built on one shared Compose UI module is a decent stress test of where Compose Multiplatform actually holds up across platforms today.

DB credentials are set by hand-editing DatabaseFactory.kt rather than through environment variables or a config file, which is exactly the kind of thing that gets committed by accident — there's no secrets story here. Test coverage is essentially one file (a single androidHostTest), so six UI targets and a backend with auth are riding on no meaningful test suite. Scope has grown faster than depth: Automotive, TV, web and desktop were all added in short order, and it's unclear from the README how much each target beyond Android/iOS has actually been exercised versus just compiling. Also no mention of any migration tooling for the MySQL schema — it auto-generates tables on run, which won't survive real schema changes gracefully.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →