Why I Built It

Trip planning felt broken. I was switching between maps, notes, calendars, spreadsheets, Notion and photo folders just to plan and remember one journey. I wanted a privacy-first travel app that combined planning and journaling in one place. I wanted lots of emojis and colors coded activities.I wanted Hotels, flights, and activities alongside budgets, live notifications, polaroid photos, and cassette-style voice notes for journaling specific to a place.

How I Built It

Vuzo is my first iOS app and my first project in Compose Multiplatform (CMP). I used Kotlin Multiplatform for shared logic, Compose Multiplatform for UI, and bridged into Swift APIs for iOS-specific features like Live Activities. Offline storage is powered by Room Multiplatform. I designed playful animations — dropping polaroids, spinning cassette reels, path animations, many of which had never been done before in CMP.

What I Learned

I learned how to bridge Kotlin and Swift, how to think cross-platform while respecting each platform’s UX, and how to invent new animation patterns in CMP. Most importantly, I learned that cross-platform development is not just about sharing code .It’s about combining design, technology, and user needs into one cohesive experience.

Looking Back

Vuzo started as a way to make my own trips less messy, but it became much more. It is a personal milestone in shipping across platforms, designing experiences that feel playful, and solving a problem I deeply cared about. Looking back, the challenges were tough, but they pushed me to grow as a developer and gave me confidence to keep building ambitious products.

Built With

  • cmp
  • compose
  • kmp
  • kotlin
  • ktor
  • room
  • swiftui
Share this project:

Updates

posted an update

New feature: most travel apps lock your data behind accounts and servers with Vuzo you can now export and import your entire trip as .vuzo (plus html and csv) your data stays on your device, fully portable between ios and android with #kotlin #multiplatform #KMP

Log in or sign up for Devpost to join the conversation.