finds.dev← search

// the find

joreilly/Confetti

★ 1,053 · Kotlin · Apache-2.0 · updated Jul 2026

KMP/CMP GraphQL based conference project with Jetpack Compose Android, Compose for Wear, and Compose Multiplatform Desktop, Web and iOS clients along with GraphQL backend.

Confetti is a full-stack KMP conference schedule app — GraphQL backend on App Engine, Apollo Kotlin for the shared data layer, and Compose Multiplatform clients for Android, iOS, desktop, web, Wear OS, and Android Auto/Automotive. It's primarily a showcase project by John O'Reilly demonstrating how far KMP can stretch across form factors, and it's a real shipping app with actual conference data.

Apollo Kotlin is used properly throughout — normalized caching, type-safe operations generated from the schema, and the same GraphQL client code running on every platform. The Wear OS and Android Auto clients are genuine implementations, not toy wrappers — they have their own navigation stacks and handle platform-specific constraints. CI is thorough: separate workflows for Android/Wear/JVM, iOS, backend deploy, backend tests, web publish, and screenshot testing with baseline profiles. The backend data model is flexible enough to support multiple conferences without schema changes, using a conference header to switch context.

The backend uses Google Cloud Datastore, which is a sharp constraint — no SQL, no easy ad-hoc queries, and the data import pipeline is a collection of one-off scrapers per conference with no common abstraction, meaning adding a new conference requires writing new code rather than config. The web client is Compose/Wasm, which still has real-world limitations around bundle size and SEO — it's the right call for code sharing but a bad call for anyone who wants the schedule discoverable by search engines. There's almost no test coverage in the shared KMP module; the screenshot tests in androidApp cover one screen (SpeakerDetails) and that's essentially it for automated verification of the client logic.

View on GitHub →

// 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 →