KS Karan Sharma
Karan Sharma

Building
software that works for everyone.

Now
Staff Software Engineer at Commonwealth Bank
Builds
Android and iOS apps, and the AI tooling that builds them
Stack
  • Kotlin
  • Compose Multiplatform
  • Swift
  • Ktor
  • TypeScript
  • Claude Code
  • MCP
  • Agents
Ships
  • KRAIL
  • Sumi
  • Huezoo
  • open source libraries
Lives
Sydney, Australiaearlier Bangalore

The flagship / KRAIL

Open source. Accessible by design. Made with genuine care.

Live on iOS & Android

KRAIL: Sydney public
transport, made simple.

Sydney's public transport is complicated enough. KRAIL brings real-time trains, buses, ferries, metro, and light rail into one clean, accessible app. Kotlin Multiplatform, open source, live on both stores.

KRAIL: saved trips home screen
KRAIL: live departure board
KRAIL: dark mode home screen

Lately / in motion

A snapshot of what I'm building, shipping, and reading.

Working on

Mobile platform and AI tooling

Leading platform work for Android and iOS at Commonwealth Bank: shared architecture, engineering standards, and the internal agents and MCP servers the mobile teams build with.

staff engineersince 2024
Tooling

Agents that build apps

ASTRAMAN turns a design handoff into a Kotlin Multiplatform app: agents plan, write, and review each build. It sits on a library of Claude Code skills I use on every app.

Shipping

KRAIL: Sydney transit

Open-source iOS + Android in Kotlin Multiplatform, with a Ktor backend. Live on both stores. Presented at Google I/O Extended Brisbane 2025.

krail.appmaintainer

Recent writing / 4 latest

Engineering posts on Kotlin, Compose, security, and accessibility.

Apps I've built and genuinely care about.

Consumer apps and open-source libraries in Kotlin Multiplatform. Started from real frustrations: transit apps that fail commuters who need accessibility, games that deserve better craft, tools that should just work.

KRAIL / flagship

Sydney public transport for iOS & Android.

Live on iOS & Android

Built for every commuter on the platform.

Sydney public transport shouldn't be stressful. KRAIL covers trains, buses, ferries, metro, and light rail: real-time, accessible, and open source. Kotlin Multiplatform, presented at Google I/O Extended Brisbane 2025.

KRAIL: saved trips home screen
KRAIL: live departure board
KRAIL: dark mode home screen

The lab / shipped

Small, finished apps. Each built in Kotlin Multiplatform for iOS and Android.

Live on iOS & Android

Sumi: Sudoku built around stillness.

A daily Sudoku that respects your attention. Ink on paper aesthetic, five difficulty levels, streak tracking. No noise, no ads, no dark patterns. Just the puzzle.

Sumi: home screen
Sumi: puzzle screen
Live on iOS & Android

Huezoo: train your eye to spot the difference.

A color-perception game built around Delta-E science. Identify the outlier from near-identical hues. Starts forgiving, gets quietly brutal. Ranked by accuracy, not just speed.

Huezoo: home screen
Huezoo: gameplay

Next app in progress

Kotlin Multiplatform, like the rest, and the first one built end to end by ASTRAMAN.

iOSAndroid
Coming soon

Open source / selected repos

Libraries and apps I maintain in the open. Everything else lives on GitHub.

Agents, skills, and the tooling behind the apps.

Alongside the apps, I build the tooling that helps make them: Claude Code skills, MCP servers, hooks, and agents that handle the repetitive parts of a Kotlin Multiplatform build. Some of this is for the mobile teams at Commonwealth Bank. The rest is for my own apps, mostly on evenings and weekends.

ASTRAMAN / multi-agent build system

A design handoff goes in. A Kotlin Multiplatform app comes out.

Built, in use, not public

Agents that plan, write, and check each other.

A set of Claude Code agents runs in sequence. One reads the design files and writes a phased build plan with the design tokens. One writes the Kotlin Multiplatform code phase by phase and commits as it goes. A reviewer runs a quality gate after each phase and records what went wrong. A fourth reads finished builds and proposes edits to the other agents' instructions, so the next build starts from what the last one taught.

Each build runs in its own workspace and session, so more than one app can be in progress. The foundation is not regenerated per app: it comes from a verified template, so the base is the same every time and the agents only write what differs.

Vishwakarma / plan Karma / build Vivek / review Drishti / learn Tarka / logic Fixer / retry
step 1Read the handoff, plan
step 2Write the KMP code
step 3Review, gate, retry
step 4Learn from the build
Lessons from step 4 are written back into the agents' instructions.

The toolkit / how it is put together

The pieces that make this repeatable rather than a lucky prompt.

Skills

A library of skills

The work that repeats on every Kotlin Multiplatform app is written down once as a skill: modularisation, Koin, Navigation 3, SQLDelight, Ktor, Compose resources, typography, colour tokens, app icons, in-app purchases, CI/CD, font-scale accessibility, release checks. Writing it down once is cheaper and more predictable than explaining the same setup to a model each time.

not publicused across my apps
Templates

Starter templates

New apps start from a KMP template that already builds: multi-module structure, convention plugins, DI, static analysis, testing, and an empty component catalogue. Creating a project from it is a copy and a rename, so nothing about the foundation is left to chance.

not publicAndroid + iOS
Harness

Harness engineering

Subagents with narrow tools, hooks for the rules that must not be skipped, MCP servers when a model needs real data rather than a guess, and git worktrees so parallel agents do not collide. Most of the work is deciding what context each agent gets, and what it is not allowed to do.

skillshooksMCPsubagents

The video engine / KRAIL on social

KRAIL needs video to reach people, so I build the videos with code.

Built, in use, not public

KRAIL's videos are written as code.

A video is a config object rather than a timeline. Scenes, copy, colour, spacing, and motion are fields in a schema, and a React and Remotion engine renders them to a vertical video. Nothing is hand-animated per video, so adding a capability means adding a field to the schema, and the look stays consistent across everything that goes out.

Around the engine there is a small dashboard for the parts that are not rendering: the script for each video, per-platform captions for Instagram, TikTok, YouTube Shorts, Facebook, Reddit, and LinkedIn, a queue of what to build next, and the posting calendar. The videos are built from the Claude CLI with a skill I wrote for it.

React + Remotion Next.js dashboard Claude Code skills TypeScript schema driven

At Commonwealth Bank / tooling for mobile teams

Leading AI strategy and readiness for mobile engineering, on Android and iOS.

MCP

A design system agents can read

Internal MCP servers, including one for the design system, so generated UI is built from the components, tokens, and rules the design team actually ships rather than an approximation of them.

Agents

Design to code, and tests

Agents and skills that turn designs into Compose code, generate UI, handle repetitive dev work, and write end-to-end tests.

Standards

Standards, enforced

A Jetpack Compose linting system that checks architecture and design-system standards across teams, so reviews spend less time on style. Alongside it, training engineers across the org on AI-assisted development.

Built with the same tooling / side of the desk

The rest of the workshop around my own apps. One is open source, the others stay private.

open source

The KRAIL backend

A Ktor service for trip planning over the NSW transport network, with Protobuf contracts shared with the app and a containerised deploy.

not public

A native design system

Design tokens in the W3C format, compiled once into Kotlin and Swift, with catalogue apps in Jetpack Compose and SwiftUI so both platforms read from the same source of truth.

KotlinSwift
not public

A local analytics dashboard

Pulls KRAIL's own analytics exports into local storage and a small dashboard, because the hosted retention window is short and the export tools are slow to work with.

TypeScriptlocal only

Sharing it / teams and talks

Training engineers on AI-assisted development, and mentoring on what holds up in a large codebase.

AI-assisted development

Training and mentoring engineers at work

Writing on Kotlin, Compose, and tooling

Nine posts, newest first

A decade. Ten companies. One craft.

Staff Software Engineer at Commonwealth Bank, building the CommBiz business-banking app from the ground up on Android and iOS, and leading AI strategy and tooling for mobile engineering. Before this: Cash App, Afterpay, Telstra, Zip, and Qualcomm. Outside work I build and maintain KRAIL, Sumi, and Huezoo, along with the agent tooling that helps ship them.

Years shipping

10+

Since 2015: Android, then iOS, now Kotlin Multiplatform everywhere.

Companies

10

Banks, fintechs, telcos, OEMs and healthcare startups. Two continents.

Apps shipped

3

KRAIL, Sumi, and Huezoo. Open source and actively maintained.

Experience / 2015 → now

Each row is a real engagement. Newest first.

2024 to now
Commonwealth Bank
Staff Software Engineer
Built the CommBiz mobile app from scratch. Defined the architecture, tech stack, and engineering standards for CBA's flagship business-banking app, and lead AI strategy and tooling for mobile engineering.
Sydney
  • Built the CommBiz mobile app from scratch. Defined the architecture, tech stack, and engineering standards for CBA's flagship business-banking app.
  • Build for iOS as well as Android, and work on the shared foundations both platforms sit on.
  • Lead AI strategy and AI readiness for mobile engineering. Built internal MCP servers, agents, and skills (including a design-system MCP) that automate Figma-to-code, UI generation, repetitive dev work, and end-to-end testing.
  • Designed and built foundational mobile infrastructure used across squads: session management, dependency injection, core networking, encrypted storage, performance monitoring, analytics, and end-to-end testing frameworks.
  • Developed core business-banking features end-to-end, such as account management and secure multi-step authorization flows for high-value payments, with push-notification based authentication.
  • Lead technical direction for the Android team across architecture, code review, and engineering practices. Recently started contributing to backend repositories to improve mobile and backend contracts.
  • Wrote a Jetpack Compose linting system that enforces architectural and design-system standards across teams, reducing review cycles.
  • Train engineers across the org on AI-assisted development. Contribute to the internal design system and accessibility tooling used by all Android teams.
On Google Play
2022 to 2024
Cash App
Senior Software Engineer, Block
Led end-to-end delivery of the Cross-Border Payments feature, using server-driven UI with Kotlin and Jetpack Compose, working closely with design and product on complex payments flows.
Sydney
  • Led end-to-end delivery of the Cross-Border Payments feature, using server-driven UI with Kotlin and Jetpack Compose, working closely with design and product on complex payments flows.
  • Built accessible, WCAG 2.1-compliant design systems, driving the migration from legacy view-based UI to Jetpack Compose (toolbars, buttons, and custom layouts like the keypad and amount views).
  • Proposed and built a Storybook demo app for the design system, as a single source of truth.
  • Helped grow accessibility culture with a11y tooling, documentation, and testing frameworks used by teams across the org.
  • Contributed to hiring and team culture through interviews, talks, and events, and represented the team at the Mobile Summit in San Francisco.
On Google Play
2021 to 2022
Afterpay
Senior Software Engineer
Built the app onboarding and KYC navigation framework.
Sydney
  • Built the app onboarding and KYC navigation framework.
  • Built the design system and UI components with the design team, including adaptive layouts for small and large screens.
  • Built reusable, complex UI elements in Jetpack Compose: parallax effects, calendars, and overflow layouts.
  • Set up networking and state management with Kotlin Flows and Coroutines.
2020 to 2021
Telstra
Senior Android Developer
Rebuilt the Payments tab and improved its load performance by refactoring and building UI frameworks for the team.
Sydney
  • Rebuilt the Payments tab and improved its load performance by refactoring and building UI frameworks for the team.
  • Led the migration from deprecated Kotlin synthetics to Jetpack View Binding.
  • Contributed to the design system and mentored the team on building reusable components.
  • Presented on Jetpack Compose and Coroutines in team huddles.
  • Built accessible custom views (Talkback, Voice Control, Keyboard Control) and helped reach an AA rating, working toward AAA per WCAG 2.1.
On Google Play
2020
Qantas
Android Engineer
Built the native chat feature using MVP architecture, RxJava, and WebSockets for real-time communication.
Sydney
  • Built the native chat feature using MVP architecture, RxJava, and WebSockets for real-time communication.
  • Contributed reusable components to the design-system library for the chat app's UI.
On Google Play
2019 to 2020
Zip
Android Developer
Built the in-store payments feature using Kotlin and RxJava.
Sydney
  • Built the in-store payments feature using Kotlin and RxJava.
  • Built the UI with the Anko declarative framework.
  • Worked with design and product to deliver feature work.
On Google Play
2019
myBeepr
Android Engineer, Healthcare
Worked on the myBeepr clinical communications app for healthcare teams on Android.
Sydney
  • Worked on the myBeepr clinical communications app for healthcare teams on Android.
On Google Play
2018 to 2019
Qualcomm
Software Engineer
Developed and tested OTA upgrades for Qualcomm chipset devices (msm8909, msm8916, sdm660, msm8998, sdm835, sdm845, msm8953, msm8937).
Bangalore
  • Developed and tested OTA upgrades for Qualcomm chipset devices (msm8909, msm8916, sdm660, msm8998, sdm835, sdm845, msm8953, msm8937).
  • Worked with clients such as Razer, Square, and Reliance to launch phones with the latest Android OS.
2017
Micromax
Android Engineer
Built Android system apps for entry-level handsets.
Bangalore
  • Built Android system apps for entry-level handsets.
2015 to 2017
Portea Medical
Android Developer
Built the app from scratch: social login, multiple-account linking, and account switching.
Bangalore
  • Built the app from scratch: social login, multiple-account linking, and account switching.
  • Built the patient booking and medicine-ordering flow, using Google Location libraries to show assigned clinicians on a map in real time. Built the UI with Material Design.
  • Tracked clinician location and abnormal device activity.
  • Created a Maven repository and published the library as an AAR.
On Google Play

Mentoring & speaking / lifting teams

Sharing what I learn, and helping the engineers and teams around me grow.

Compose Multiplatform to the City

Google I/O ExtendedBrisbaneJun 2025

AI-assisted development

Mentoring & talks for engineering teams

Notes from the work. Mostly Kotlin.

Engineering posts on Kotlin, Compose, security, accessibility, and the parts of the job nobody schedules.

Featured / recent pick

The one I'd hand a new engineer joining a Compose codebase.

Jetpack Compose
FeaturedAug 2025

Best practices for designing Jetpack Compose APIs

What I wish I'd known three migrations ago: modifier hygiene, slot APIs that age well, and designing for the engineers who'll inherit your code two years from now.

9 min read KotlinCompose Read post →

All posts / 9 total

Newest first.

Frames from
here and there.

A few photos from places I've wandered through.

Travel photograph
Travel photograph
Travel photograph
Travel photograph
Travel photograph