Documents and notes decision

Milanote

A minimal single-user Milanote clone (visual boards, files, clipper) is realistic for a capable developer to build and self-host, but the full paid product—real-time collaboration, native apps, team billing, and managed hosting—is costly to replicate and justifies continuing to pay for Milanote for those features.

Visit website
You pay

$12.5/mo

$150/yr

Per seat. Read off the official pricing page.

You’d pay instead

$50one-off30 h to build

$20/mo8 h/mo upkeep

On cash alone, building overtakes the subscription at 2 seats.

Open-source builds that already do this

Every project below is open source and already does this job today. Fork one, self-host it, or take the parts you need - the build prompt further down assumes an empty file, and this is the shortcut past that. Licences differ; check the one on each card before you ship. All Milanote alternatives, with the arithmetic →

What a replacement has to do

  • Create and edit visual boards (notes, images, links) saved to a backend and retrievable by board; upload and serve files; provide a pan/zoom infinite canvas with drag-and-drop placement; user auth and per-user storage of boards.

What it still won’t have

  • Real-time multi-user collaboration (live cursors, sync)
  • Official mobile and desktop native apps and app-store distribution
  • Company-managed hosting, backups, and SLA
  • Team plans, billing, and enterprise features

What remains hard

  • Product polish and ongoing maintenance
Read the build prompt

First-year cost

Keep paying

Paying is—cheaper in year one.

On cash alone, building overtakes the subscription at 2 seats.

Paid seatsseats

Money you would actually spend

Keep paying
—

Subscription price × seats × 12

Build it
—

AI build —APIs + hosting —

Time you would spend

—

—

What you would spend

What we assumed

The verdict above measures whether you could build it. This one is only about money.

Runnable build prompt

Not run yet
Build a single-user Milanote-like web app using React for the frontend (Vite), a Node.js + Express API, Postgres for metadata, and S3-compatible storage for uploaded files. In scope: (1) board CRUD, (2) item types: text note, image, link, file, with drag/drop placement on a pan/zoom canvas, (3) user auth (email/password) and per-user isolation, (4) file upload handling to S3 and serving, (5) a bookmarklet endpoint to clip a URL/image into a chosen board, (6) tests for API endpoints and critical UI flows, and (7) Docker Compose for local dev. Out of scope: real-time multi-user sync, native mobile/desktop apps, team billing, analytics, and advanced templates. Include error handling for uploads, auth failures, and storage errors; add automated tests (unit + 1–2 end-to-end flows) and simple CI to run them.
How we checked4 sources · 2/3 runs agreed · evidence score 63

How the score was reached

  • Partly verdict base52
  • An open-source build was found+5
  • 4 cited sources+3
  • Price verified on pricing page+3
  • Evidence score63

The base comes from the verdict. Everything under it is a check that either happened or did not, and each one is a fact frozen in this record rather than a judgement made at render time - so the same evidence always produces the same number.

How scoring works →

Cited sources · 4

Every page the run actually retrieved.

Integrity checks

What held up, and what did not.

✓ Price read off the page! 2 of 3 runs agreed; the verdict is the majority✓ Citations limited to fetched pages! 1 moat recorded