Personal product · 2025

Slote

A notes app where typing and handwriting share one canvas.

Role
Design, engineering and product
Timeline
14 months and counting
Status
In development
Year
2025
Visit product site
The Slote marketing site: one canvas for typing and handwriting.
The Slote marketing site: one canvas for typing and handwriting.2025

01 / The idea

The idea

Most note apps make you choose something you should not have to. Apple Notes and Samsung Notes are excellent right up until you change phones. OneNote follows you everywhere but brings a filing cabinet along. Notion is genuinely powerful and has a learning curve most people never finish climbing. And nearly every app that handles handwriting properly assumes you own a stylus.

Slote is the app I wanted and could not buy: typed text and freehand ink sharing one canvas, the same notes on iOS, Android, Windows and macOS, and finger and mouse treated as first-class input rather than a degraded fallback for people without hardware.

02 / What has been built

What has been built

Roughly 245,000 lines of Dart across 1,054 files, organised into eight internal packages: a design system, a rich text engine, an ink and drawing layer, a zoom and pan viewport, and the shared plumbing underneath all of it.

Notes are written to local SQLite first and synced to Postgres after, so the app works on a plane and reconciles when it reconnects. Note content is encrypted on the client before it leaves the device. Sign-in uses native Google and Apple flows rather than a web redirect, because a browser bouncing you back into an app is the worst thirty seconds of any onboarding.

Ten server-side functions handle the things a client cannot be trusted with: billing webhooks, signed export URLs, share notifications, and garbage collection for orphaned images. Billing itself is split by platform because the platforms require it. In-app purchase covers iOS and Android; Stripe covers Windows and macOS.

245k+
Lines of Dart
405
Test files
4
Platforms from one codebase
14 mo
In development
Pen and keyboard on one page, captured from the running appIn development

03 / How it is built

How it is built

405 test files, and CI that runs on every push. A maintained launch-readiness document tracks every open issue by severity, and resolved rows stay in the table for two releases, so there is a written record of what broke and why.

Partway through, I removed the WebView-based editor the app started with and replaced it with a Flutter-native one. That is an expensive decision to make in the middle of a project. The WebView cost was visible on every keystroke on lower-end Android, so it was the right call, and it still shipped behind a tagged rollback point in case it was not.

Fonts are bundled as files instead of fetched at runtime, so the first frame never waits on a network request. Small decision, and exactly the kind that separates an app that feels fast from one that benchmarks fast.

04 / Where it stands

Where it stands

One note, both inputs, from the same capture pipeline that gates the marketing siteIn development

In development, heading toward a v1 store release. It has not launched, and this page will keep saying so until it has. What is left is the unglamorous part: the full suite green on every platform, static analysis clean, and a migration path for notes created in the old editor.

Get notified at launch

One email when Slote reaches the app stores. Nothing else, and no newsletter.

Stack

  • 01Flutter: iOS, Android, Windows, macOS
  • 02SQLite locally, Supabase Postgres for sync
  • 03Client-side end-to-end encryption
  • 04Native Google and Apple sign-in
  • 05Stripe on desktop, in-app purchase on mobile
  • 06Sentry, Firebase Cloud Messaging

Need something in this shape?

Tell me what you are trying to build and roughly when you need it. I reply to every enquiry within one business day, including the ones I am not the right fit for.

Start a project

Replies within one business day