Mañana

Notes the server can't read.

Encrypted on the device, before anything leaves it. Synced through a server I host myself — one that stores ciphertext and never holds a key.

The apps

Mañana desktop app: folder chips, pinned and recent notes, editor open beside them
Desktop — Compose Multiplatform, two panes, no navigation.
Mañana on Android: the unlock screen, crescent moon above Welcome back
Android — locked until a PIN or fingerprint says otherwise.

Pairing

Pairing screen showing a QR code and a countdown
The laptop shows a code. The phone reads it with a camera — a channel nobody else can reach into.
Pairing confirmation screen showing six digits, 921 089
Six digits, derived on both sides independently. They match, or you stop.

What the server sees

It knows

  • How many records exist
  • Roughly how large they are — padded to 4 KiB, so a shopping list and a diary entry look alike
  • That something changed, and when
  • How many devices there are

It doesn't

  • What any note says
  • What any note is called
  • Which note is which — record IDs are blinded
  • Any key capable of finding out

That list is the honest one. Metadata is what a design like this cannot hide, so it is written down rather than glossed over.

Built with

Kotlin Multiplatform Compose · Android & Desktop SQLCipher AES-256-GCM P-256 ECDH HKDF Hybrid logical clocks Ktor