Personal product · 2026

Slote

Slote is a notes app where typing and handwriting share one canvas.

Visit product site ↗
slote-website.vercel.app
The Slote marketing site: one canvas for typing and handwriting.
The Slote marketing site: one canvas for typing and handwriting.

01The idea

Slote exists because 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.

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

02What 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

03How 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.

04Where 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.

Want something similar built?

Share what you have in mind and roughly when you need it. Every enquiry gets a personal reply within one business day.

Portrait of Cheah Bing Wen, software developer based in Singapore.
Bing Wen
Start a project

Replies within one business day