← Projects
Nest app icon

Nest

A real-time collaborative canvas for close friends and couples — shared drawing, sticky notes, and a home-screen widget, built with Kotlin Multiplatform for Android and iOS.

Kotlin Multiplatform Compose Multiplatform SQLDelight Supabase Realtime Koin Glance

Nest is a small shared space for two (or a few) people to doodle, leave notes, and stay present with each other async — a persistent canvas that lives on your home screen, not a chat thread.

What I built

Cross-platform from one codebase. Nest targets Android and iOS from a single Kotlin Multiplatform codebase, with Compose Multiplatform driving the UI on both. The shared/ module holds domain models, use cases, repositories, and SQLDelight-backed local storage; composeApp/ wires up screens, ViewModels, and platform entry points.

Real-time collaborative canvas. A Supabase Realtime channel per “nest” (canvas:<nestId>) streams stroke inserts/deletes, clears, presence, and text-note CRUD as typed Kotlin Flows, merged into a single event stream that drives the canvas UI live as the other person draws.

Home-screen widget. An Android Glance widget renders a live thumbnail of the shared canvas directly on the home screen, kept in sync by a WorkManager-driven refresh triggered by FCM or a local schedule — so a new doodle shows up without opening the app.

Pick One. A lightweight multiplayer guessing game built on top of the same realtime infrastructure — one person sets hidden-or-visible options, others pick independently, and the reveal happens live for everyone in the nest.

Why I built it

I wanted an excuse to build something meaningfully real-time and cross-platform end to end — sockets, offline-tolerant local storage, and a UI that reacts instantly to another person’s actions — while keeping full ownership of the product decisions, from the mascot to the interaction model.