Kotlin

Kotlin is the language our Android work starts in. It lets a small team write less code for the same feature and catch whole classes of null errors before an app reaches a phone.

How we use Kotlin

Every new Android screen we write uses Jetpack Compose, with state flowing through coroutines and Flow rather than callbacks. Data lives in Room, so planners and games keep working on a train with no signal, and background jobs such as reminders run through WorkManager so they survive restarts and battery optimisation.

When one product ships as more than one app, as our DayPlanner and Day Planner Pro do, the shared rules sit in plain Kotlin modules. Each edition then adds only its own screens and features, and a fix made once reaches both apps in the same release.

What we build with it

  • Native Android apps with Jetpack Compose interfaces
  • Offline-first data layers with local databases and sync
  • Reminders, notifications and scheduled background work
  • Shared business logic for several editions of one app

Toolkit

  • Jetpack Compose
  • Coroutines and Flow
  • Room
  • WorkManager
  • Hilt
  • Kotlin Multiplatform

How we keep Kotlin code healthy

  • ktlint and detekt run on every pull request
  • Unit tests with JUnit, flows tested with Turbine
  • Compose UI tests for the main user journeys
  • Code split into modules by feature, not by layer

Questions about Kotlin

Do you write new Android code in Kotlin or Java?

New code is written in Kotlin. Existing Java stays where it works, and we move it to Kotlin file by file when a feature around it changes.

Can Kotlin code be shared with an iOS app?

Yes, through Kotlin Multiplatform. We share data and domain logic, while each platform keeps its own native interface.

Discuss a Kotlin project

Discuss a Kotlin project

Describe the app or the code you have. We reply by email with questions or a time for a call.

Prefer email? Write to [email protected]. You can also send any documents there.

You will get an automatic copy of your message by email.

This website currently sets no cookies and stores nothing in your browser, so there is no consent to give or withdraw. If that changes, we will ask you first.

Read the Cookie Policy