Project Challenge

The biggest technical challenge was delivering strong performance at scale across every layer of the app:

  • Rendering thousands of map markers smoothly
  • Keeping messages available offline while syncing live updates
  • Reducing server load as features expanded
  • Maintaining responsive UX across Android and iOS

Solution & Results

Using PostGIS spatial indexing, SQLDelight offline-first caching, and database RPC functions that replaced dozens of network calls with single requests, the platform achieved:

  • ⚑ 90% fewer API calls
  • πŸ”Œ 95% lower WebSocket quota usage
  • πŸ—ΊοΈ 100k+ map markers rendered at 60fps
  • πŸ“± Shared native-quality Android + iOS experience

Tech Stack

  • Kotlin Multiplatform
  • Compose Multiplatform
  • Supabase (Postgres, PostGIS, Realtime, Storage)
  • MapLibre
  • SQLDelight
  • Koin

Key Features

πŸ—ΊοΈ Interactive Map

MapLibre clustering engine rendering 100k+ markers at 60fps, powered by a single get_markers_in_bounds PostGIS RPC.

πŸ’¬ Real-Time Chat

Offline-first 1-on-1 and group messaging with:

  • SQLDelight local cache
  • Message requests
  • WebSocket presence
  • Advanced unread-state synchronization

πŸ“° Unified Social Feed

Single timeline supporting:

  • Events
  • Activities
  • Posts
  • Infinite scroll
  • Optimistic likes
  • Batched reactions

✍️ Content Creation

Users can create:

  • Community events with paid ticketing
  • Personal activities
  • Social posts
  • Cropped images directly in-app

πŸ” Authentication & Security

  • Google Sign-In
  • Automatic JWT refresh
  • RLS-enforced privacy
  • Dual-verification email change flow

🧹 Scheduled Maintenance

Daily Supabase Edge Functions clean orphaned chat data and recover ~475 MB/month of storage.


Architecture

Built using MVVM + Repository pattern with:

  • 27 ViewModels
  • 24 Repositories
  • expect/actual platform adapters
  • Modular ChatViewModel split into 13 focused sub-controllers for scalability and maintainability

Outcome

Up demonstrates how modern mobile architecture can unify discovery, social networking, and messaging into one high-performance product using a shared Kotlin Multiplatform codebase.