Inspiration
At weddings, trips, and some moments in our life, everyone is on their phone — shooting, scrolling, posting — and the moment itself gets lost. Shared albums are usually messy group chats or after-the-fact dumps. We wanted something closer to a disposable camera for modern events: one place to capture together, with the option to keep photos hidden until a reveal, so people stay present and open the album as a shared experience. That idea became MemoCam — memories only happen once.
What it does
MemoCam is an event camera app for hosts and guests.
- Hosts create an event (name, dates, cover card, reveal timing, shots-per-guest limit).
- Guests join via invite link or QR and capture into a shared album.
- Photos can stay locked until a reveal date/time, then the full album opens for everyone.
- A full-screen camera session tracks remaining shots and queues uploads immediately.
- Guests can only shoot while the event is live; hosts can keep uploading after the window closes until archive.
How we built it
- Kotlin Multiplatform (
sharedLogic) for domain models, use cases, repositories, and shared ViewModels (MVI-style: state, intents, effects). - Native UI: Jetpack Compose on Android, SwiftUI on iOS — same features, platform-native look and feel.
- Offline-first: SQLDelight as the UI source of truth; network writes into the local DB.
- Networking: Ktor client, kotlinx.serialization, Koin DI, Coroutines/Flow (SKIE for Swift interop).
- Uploads: DB-backed queue with retry/backoff so captures aren’t lost on bad venue Wi‑Fi.
Challenges we ran into
- as i have an individual account in google play console i have to pass 12 days of closed testing so it's not finished yet
Accomplishments that we're proud of
- A full create → invite → capture → reveal → gallery flow on both platforms from shared logic.
- Offline-first architecture with a persistent upload queue so photos survive flaky networks.
- A clear separation of concerns: UI → ViewModels → use cases → repositories.
- Reveal as a first-class product moment, not an afterthought.
- A cohesive dark, celebratory design system that feels intentional on both OS UIs.
What we learned
- Shared presentation logic (ViewModels) pays off more than sharing UI when you want native quality.
- Offline-first and upload queues are non-negotiable for real-world event apps.
- Pure domain policies (like reveal) keep behavior consistent and easy to test.
- Dual-platform product work is as much about permission and timing rules as it is about screens.
What's next for Memocam
- Polish guest onboarding and invite sharing.
- Stronger notifications around live events and reveal moments.
- Richer album experiences (downloads, sharing, host tools).
- Light theme and broader localization.
- Scale the backend and media pipeline for larger events.
- Keep iterating on presence-first features so the camera stays in the moment — and the album feels like the reward.
Built With
- compose
- kmp
- kotlin
- revenuecat
- swift
Log in or sign up for Devpost to join the conversation.