A legacy Android app, built by more than 70 engineers, had to be replaced by one Kotlin codebase that delivers Android and a web companion, for field technicians across the country to use every day. The web target ran on a toolchain so new that some of its problems had no public answers.
What I did
- Architected the shared Kotlin platform that delivers the Android app and its web companion from one codebase.
- Defined the org-wide MVI standard with explicit State/Event/Effect contracts. I couldn’t sit in every review across those time zones, so I made the standard the easy path: ADRs that explain the why, reference implementations to copy, and review rules that make a violation a fact, not a taste.
- Co-built the Gradle convention-plugin hierarchy. A new feature module gets its whole setup (KMP targets, Compose, DI, coverage, lint) from one plugin ID, with the configuration cache on.
- Shipped one of the first enterprise production Kotlin/Wasm web apps through blockers nobody had solved publicly: an async SQLDelight driver for browser web workers, patched webpack loaders, Datadog observability through JS interop, and CVE fixes in the Kotlin/JS toolchain.
Outcome
- First production release in 3 months; the web app 2 months later.
- Used daily by field technicians nationwide.
- Bi-weekly releases with automated quality gates on every merge. Web ships via Helm to Kubernetes; Android ships to Google Play and managed corporate devices.
- Scope delivered on schedule. The standard held after I rolled off.