Back to Selected Work

Engineering Case Study · Native Android Application

Cocktalez

Native Android recipe discovery built with Kotlin, Coroutines, Room offline caching, and memory-bounded media pipelines.

AndroidKotlinRoom / SQLiteKotlin Coroutines & FlowCoil Image PipelineRetrofitMVVM
Cocktalez cocktail discovery home screen and category matrix
Cocktalez recipe detail with ingredient proportions and glass pairings
Cocktalez curated cocktail collections and offline favorites

Overview

A native Android recipe discovery application engineered around instantaneous client-side filtering, offline-first SQLite/Room caching, and memory-efficient image pipeline management for a comprehensive cocktail database.

My Role

Lead Android Engineer responsible for MVVM architecture, Room offline persistence, and memory-bounded media pipelines.

The Problem

Multi-attribute ingredient search and dynamic filtering strain main-thread responsiveness across large recipe datasets. Unmanaged high-resolution imagery risks memory leaks and OutOfMemory (OOM) crashes during rapid list flings on mid-tier Android devices.

The Solution

Architected a responsive Android client utilizing Room local caching to index ingredient matrices off the main thread. Deployed reactive Kotlin Flow streams for real-time search filtering, and integrated memory-bounded Coil image pipelines with disk LRU caching to guarantee smooth 60fps scrolling.

Architectural reasoning

Decoupling search queries from network dependencies via a single-source-of-truth Room repository ensures sub-16ms query response times even in airplane mode. Image pipelines downsample bitmaps to match target viewports before allocation to strictly guard against GC pauses.

Technical Decisions

  • Structured a single-source-of-truth repository pattern using Room and Kotlin StateFlow to guarantee zero-latency offline filtering
  • Engineered complex multi-ingredient query filters with SQLite indices, offloading all matching logic from the UI thread to Dispatchers.IO
  • Implemented viewport-matched bitmap downsampling and hardware bitmap allocation via Coil, eliminating OOM exceptions on memory-constrained devices
  • Abstracted network requests via Retrofit with automated retry policies and transparent cache fallback

Architecture

  • Android SDK & Kotlin
  • MVVM Architecture with Unidirectional Data Flow
  • Room SQLite Database with Offline-First Repository
  • Kotlin Coroutines & StateFlow
  • Coil Memory-Bounded Image Pipeline

Engineering Highlights

  • Sub-16ms ingredient filter response times via indexed local Room queries
  • Zero-jank 60fps list scrolling with memory-bounded image decoding
  • Deterministic offline search availability with zero network dependency during browsing
  • Clean MVVM separation with observable UI state modeling

Results & Impact

  • Delivered sub-16ms filter response times and zero-drop offline recipe discovery across test devices
  • Maintained 60fps frame rate during rapid list flings through proactive bitmap memory recycling

NEXT STEP

Need similar architectural rigor on your mobile stack?

Whether you are untangling legacy state, building offline-first sync, or shipping a greenfield Android / KMP / Flutter product—let's talk.