<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kotlin-Multiplatform on MusicApps Dev Blog</title><link>https://blog.musicapps.eu/tags/kotlin-multiplatform/</link><description>Recent content in Kotlin-Multiplatform on MusicApps Dev Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 14 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.musicapps.eu/tags/kotlin-multiplatform/index.xml" rel="self" type="application/rss+xml"/><item><title>The iOS port, day one</title><link>https://blog.musicapps.eu/posts/2026-05-14-ios-port-day-one/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-05-14-ios-port-day-one/</guid><description>First day of the SwiftUI port. Most of Phase 5 cleared in one sitting — because the shared KMP module already handled the business logic, only the platform-specific layers (audio engine, file storage, UI) needed iOS implementations. The workflow also shifted: Claude wrote the Swift directly instead of routing through an in-IDE AI.</description></item><item><title>Day 13: UI polish, app icon, billing live, and Play Store listing</title><link>https://blog.musicapps.eu/posts/2026-04-20-ui-polish-play-store-prep/</link><pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-20-ui-polish-play-store-prep/</guid><description>A full day of UI polish and Play Store prep. Nine UI issues fixed via Claude-prepared Gemini prompts, new app icon designed in Affinity Designer, in-app billing tested end-to-end, and the store listing copy and screenshots completed. Tomorrow: feature graphic, tablet screenshots, and a permission demo video.</description></item><item><title>Day 12: Freemium gate, billing, Play Store registration, and first internal build</title><link>https://blog.musicapps.eu/posts/2026-04-19-freemium-gate-and-beta-prep/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-19-freemium-gate-and-beta-prep/</guid><description>The freemium gate and Google Play Billing integration landed today, completing Phase 2. Then a pre-beta cleanup pass, privacy policy, Google Play Developer account registration (surprisingly complex), demo playlists, screenshots, a first app icon, and the first internal build installed on a real device via the Play Store.</description></item><item><title>Day 11(a): Persistence refactor, export/import, UI polish, and splitting App.kt</title><link>https://blog.musicapps.eu/posts/2026-04-18-persistence-export-and-ready-to-test/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-18-persistence-export-and-ready-to-test/</guid><description>The last Android-only code moved into shared KMP. JSON export and import landed. The app got a proper color schema with a dark/light toggle. Then App.kt — grown to 1400 lines — got split into focused files without touching the layout, after two earlier failed attempts taught us exactly which composables are safe to extract.</description></item><item><title>Day 10: Preparing for iOS by testing Android</title><link>https://blog.musicapps.eu/posts/2026-04-17-preparing-for-ios-by-testing-android/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-17-preparing-for-ios-by-testing-android/</guid><description>A feature sprint finished the Song pool with a full Library screen. Then a technical audit triggered an architectural refactor — 130 lines of domain logic moved from Android-only code into the shared KMP module, with 14 new tests that already run on the iOS simulator. Zero lines of iOS code written today, and the app is meaningfully closer to supporting it.</description></item><item><title>Day 9: Editing, swiping, playlists, and a very satisfying number</title><link>https://blog.musicapps.eu/posts/2026-04-16-editing-swiping-playlists-and-persistence/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-16-editing-swiping-playlists-and-persistence/</guid><description>The longest session so far. Song and special entry editing, a complete redesign of the swipe gestures, multiple playlist support, JSON persistence, and a jitter measurement that confirms the audio engine is production-ready.</description></item><item><title>Day 7: Building the main screen — controls, playlist, and a lot of iteration</title><link>https://blog.musicapps.eu/posts/2026-04-13-building-the-main-screen/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-13-building-the-main-screen/</guid><description>The main screen finally looks like a real app. A long session covering the last metronome controls, the playlist list, a responsive layout, and several bugs that only surface on a real device.</description></item><item><title>Day 5: UI design, a foreground service, and a hard sync problem</title><link>https://blog.musicapps.eu/posts/2026-04-11-ui-design-sync-and-foreground-service/</link><pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-11-ui-design-sync-and-foreground-service/</guid><description>Today had three acts: sketching the full UI concept, building a foreground service, and solving an audio/visual sync problem that turned out to require a C++ fix.</description></item><item><title>Day 4: First audio prototype running on a real device</title><link>https://blog.musicapps.eu/posts/2026-04-10-first-audio-prototype-working/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-10-first-audio-prototype-working/</guid><description>The metronome clicks on a real Android device. Here&amp;rsquo;s how Claude handled the architecture, Gemini wrote the code, and I directed traffic between them.</description></item><item><title>Day 2: Picking a name, choosing an architecture, and making the first commit</title><link>https://blog.musicapps.eu/posts/2026-04-08-naming-architecture-and-first-commit/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.musicapps.eu/posts/2026-04-08-naming-architecture-and-first-commit/</guid><description>SessionClick has a name, a GitHub repo, and a KMP project skeleton. Here&amp;rsquo;s how the decisions fell.</description></item></channel></rss>