Native apps, not a wrapper

Many apps that run everywhere are really one web page wrapped in a different frame on each device. Caliu takes the longer road: each app is built with the tools its platform was designed for. It is more work, and it is the reason scrolling, typing, keyboard shortcuts, and accessibility feel the way your device expects.

The web app

The web app is written in TypeScript with React. It is a Progressive Web App: a service worker keeps a copy of the whole app on your device, so it starts and works without a connection, and you can install it from your browser like any other app. When a new version is published, it never interrupts you: the app offers the update and applies it when you choose.

iPhone, iPad, and Mac

The Apple apps are written in Swift with SwiftUI, from a single codebase shared by iPhone, iPad, and Mac. Each platform still gets its own layout and habits: a sidebar and keyboard shortcuts on the Mac, touch gestures on the iPhone, both on the iPad.

Because they are truly native, they plug into the rest of the system: widgets, the share sheet, Shortcuts, and Spotlight. The Apple Watch app is written in Swift too, and it is a full sync client of its own, talking to the server directly so your notes are on your wrist even when your phone is not.

Android

The Android app is written in Kotlin with Jetpack Compose, Google's own toolkit for Android interfaces. It was built as a careful port of the Apple app: the same structure, the same behaviour, and the same tests, translated case by case, so a note behaves identically on both.

Keeping four apps in step

Four apps could easily drift apart. A few habits keep them together:

  • Shared rules, shared tests. The rules that must never differ, such as how a #tag is recognised, how a note's title is read, and how the sync queue is tidied, are written once per language and checked against the same test cases on every platform.
  • One source for the look. Themes, fonts, and Caliu's own icon set are defined once and generated for every app, so a theme looks the same on a Mac and on an Android phone.
  • One translation, everywhere. Each app is available in the same languages, and the Android app's text is generated from the Apple app's translations, so the wording matches across devices.

Work stays on your device

Because each app is a full app and not a window onto a server, the heavy lifting happens on your device: search, export to every format, and rendering your notes all work offline.