Portfolio

Budget Planner KMP

The same budget planner — now on every platform, from a single codebase.

Kotlin MultiplatformCompose Multiplatform

The Problem

The original Budget Planner was built for a single platform. That meant separate codebases were needed to reach other targets — duplicated logic, duplicated bugs, and twice the maintenance burden for what is fundamentally the same application.

The Solution

Budget Planner KMP rewrites the core of the application in Kotlin Multiplatform, sharing business logic — data models, repository layer, CSV parsing, and transaction categorisation — across all targets from a single codebase. Each platform gets a native UI while the logic underneath stays consistent and tested in one place.

Kotlin Multiplatform targets sharing a common business logic module across platforms.
Kotlin Multiplatform targets sharing a common business logic module across platforms.

Shared Logic, Native Feel

The shared module handles everything that does not touch the screen: budget calculations, recurring transaction detection, CSV column mapping, and local persistence. Platform-specific modules consume this via a clean interface and render with native UI components, so the app feels at home on each target without compromising code reuse.

Why Kotlin Multiplatform

Unlike cross-platform frameworks that abstract the UI layer, KMP leaves UI rendering to each platform and shares only the logic. This avoids the common trade-off between code sharing and native performance or appearance — the shared module compiles to JVM bytecode on Android and JVM desktop, and to a native binary on iOS.


© 2026 Linus Holtkamp