Skip to main content

Case Study

Updated: 2026-09-25

Multi-Space Launcher — Contextual Android Workspaces

A privacy-focused, context-driven Android Launcher built with Jetpack Compose, Kotlin Coroutines, and Room Database. Enables users to organize applications into isolated workspaces ('Spaces') with per-space visual layouts, AppWidgetHost widgets, and biometric/PIN protection via PBKDF2WithHmacSHA256 (120,000 iterations) without requiring root or OS-level profile isolation.

Scope: mobileAndroid Systems Engineer / ArchitectDuration: 3 monthsYear: 2026Architecture: platform

Key Engineering Facts & Architecture Specs

Structural Invariants

target sdk

Fact

API 36 (Android 9+)

database instances

Fact

2 (LauncherDB + HistoryDB)

encryption kdf

Fact

PBKDF2 (120k iterations)

architecture

Fact

Clean / MVVM / Room

reactive streams

Fact

Kotlin StateFlow

Architecture View

Processing state: architecture signal graph is initializing...

Architectural Decision Log

Trade-Off Analysis

Application-level Space isolation without OS multi-user profiles

Achieves instant workspace switching and low memory overhead without requiring device reboot, secondary Android work profiles, or root access.

Trade-off: Does not isolate app private data storage; focuses strictly on launcher visibility, layout segregation, and access gatekeeping.

Dual Room databases with explicit schema migrations

Separating launcher configuration (spaces, layout, widgets) from high-frequency launch telemetry history avoids lock contention and optimizes query performance.

Trade-off: Requires managing two distinct Room migrations (versions 11->12 and 1->2) with exported schema validation.

Asynchronous icon caching and reactive StateFlow streaming

Loading app icons asynchronously via LauncherApps in background Coroutines prevents main-thread drop frames during rapid fling scrolling in the app drawer.

Trade-off: Requires temporary placeholder icon rendering until cached bitmap streams emit.

Architecture Narrative

Challenge

Standard Android launchers treat all installed applications uniformly, cluttering home screens and exposing work/personal apps without context-specific organization or hardware-efficient privacy boundaries.

Solution

Designed a Clean Architecture / MVVM launcher using Jetpack Compose and Kotlin Coroutines. Engineered isolated Spaces with per-space grid layouts, custom wallpapers, and AppWidgetHost bindings. Integrated PBKDF2WithHmacSHA256 key derivation with 120,000 iterations and per-space cryptographically secure salts alongside Android BiometricPrompt. Architected dual Room databases to separate launcher structural state from append-only launch telemetry.

Result

Built a responsive, zero-root Android launcher supporting Android 9+ up to Android 16 (API 36), providing 60 FPS drawer fling performance through non-blocking bitmap streaming.

Trade-off Matrix

DimensionSelected OptionImpactCompromise
Storage ArchitectureDual Room Databases (Config vs History)Zero write lock contention during app launch telemetry loggingTwo database lifecycles and migrations to maintain
Security ModelPBKDF2WithHmacSHA256 (120k iterations) + BiometricsStrong cryptographic protection against brute-force passkey extractionSlight CPU computation cost on initial space unlock
UI Framework100% Jetpack Compose Material 3Declarative UI with automatic recomposition minimizationRequires AndroidView wrapper interop for legacy AppWidgetHostView

Failure Modes & Resilience Analysis

Degradation Protocol

Failure Path & Recovery Invariants

If an application is uninstalled externally, the LauncherApps callback automatically purges orphaned package references across all Spaces in the database, preventing broken shortcut clicks.

What I'd Do Differently & Evolution

+

Implement custom AppWidgetHostView render caching to reduce GPU overdraw when multiple third-party widgets are active simultaneously.

+

Introduce gesture-based predictive back navigation transitions across Space changes.

Source Repositories & Access Endpoints

Verified Codebases

Estifanos Kebede

System Engineer & Full Stack Developer

Social

SYSTEM: ESTIFANOS.PORTFOLIO

STATUS: OPERATIONAL

LAST_UPDATED: 2026

© 2026 Estifanos Kebede. Built with precision and intent.