Back to Projects
✈️

Travenor – Travel Booking

Travernor is a full-featured travel booking platform built as a multi-module Android project. It consists of three modules: Common (shared design system), App (user-facing), and Owner (property management). Supabase powers authentication, real-time database, and cloud storage, enabling live booking updates between travelers and property owners.

Tech Stack

KotlinJetpack ComposeSupabaseKtorHiltWorkManagerFirebase MessagingMVVM

The Problem

Needed a scalable architecture that could support two distinct user types (travelers and property owners) without code duplication, while maintaining real-time data sync.

The Solution

Multi-module Gradle project where Common provides the design system and utilities, App handles traveler flows, and Owner handles property management. Supabase real-time subscriptions keep both apps in sync instantly.

Architecture

Multi-module Gradle project where Common provides the design system and utilities, App handles traveler flows (auth, browse, book), and Owner handles property management with FCM notifications via WorkManager.

Key Features

  • Multi-module architecture: Common, App (user), and Owner modules
  • Supabase integration for authentication, real-time database & cloud storage
  • OTP verification, onboarding flow, destination browsing & booking management
  • Owner dashboard with FCM push notifications for booking requests
  • Background WorkManager for reliable booking notification processing

Engineering Challenges

  • Keeping two separate apps in sync via Supabase real-time subscriptions
  • Designing a shared design system that works for both app identities
  • Managing WorkManager lifecycle with Supabase auth state

Lessons Learned

  • 💡Multi-module architecture pays off immediately in compile time and enforced boundaries
  • 💡Supabase real-time is production-ready and significantly simpler than Firebase RTDB