Multiplatform apps

Two apps for hardware on my reef tank — from one codebase, for Android, iPhone and iPad, Mac and Windows.

Built from using them. Both apps control hardware that runs in my home every day. The reason they exist is not a list of features but the handling that held me up every evening. When you use an app yourself, you notice at once where it asks for a detour.

Meant to be obvious. The aim is that you never have to look anything up: what you want to change sits where you go looking for it, and the effect shows immediately. Handled rather than typed, wherever that is possible.

One codebase, four platforms. Both run on Android, iPhone and iPad, Mac and Windows — the same code and the same handling throughout, using Kotlin Multiplatform and Compose Multiplatform. No rebuild per system that then drifts apart.

Private projects, not products. Both live in private repositories and are not offered for download. They are here to show what I work on — not because you can have them. They were built independently and have no connection to the manufacturers of the devices; they talk to hardware I own myself.

Aquarium lighting

ATI Straton app

in development
One minute, and it makes sense without sound: the curve editor.

The ATI Straton Flex comes with a web interface of its own. It can do everything — but for the one change you actually want to make in the evening, it takes too many steps. The app makes that path shorter.

It rests on a study of my own device: the interface, the data model and the live channel were documented before a single line of the app was written.

Private repository
AndroidiOSmacOSWindows

Water analysis

ReefBot app

early beta
One minute: the device graphic, starting a test, live progress.

The ReefBot measures water parameters on its own — alkalinity, calcium, nitrate and more. The app shows the machine the way it stands there: the vials, the test chamber, the syringe. What is happening right now is visible, not something you piece together — on the phone beside the tank just as much as at the desk.

Every action goes through a confirmation — starting a test uses up real reagents. The password is never stored.

Private repository Unofficial · community project
AndroidiOSmacOSWindowsLinux