MJ Stories

Mobile craftsmanship stories

Cover Image for Witness, Not Judge

Offline-First KMP · Part 11

Witness, Not Judge

Your offline-first app is not a sync queue. The client witnesses; it never judges: it records what happened as immutable events, and one shared Kotlin engine, the same one the phone runs, derives state and rules on conflicts on a Node.js server. The whole architecture in one read, with the Droidcon Berlin talk and slides.

Android
androidkmpoffline-firstarchitectureevent-sourcingtalk

More Stories

Cover Image for Your API key is not a secret

Your API key is not a secret

We have been hiding API keys in Android apps for a decade — with BuildConfig tricks, NDK, obfuscation libraries. None of it works. The fix is not better hiding; it is treating the key as a public identifier and proving the app is genuine instead.

Android
androidsecurityplay-integritybffarchitecture
Cover Image for Share iOs string resources with Android

Share iOs string resources with Android

There might be a requirement for mobile string resources to be defined or adjusted by management or copywriters. There also might be a requirement to add localization later by those roles. And on top of that strings should be synced across platforms.

Android
androidresourcessharedpoeditor