Milanote
Visual boards for creative projects, references, notes, and tasks
Milanote's solo core is compact: build a local-first visual project boards app with fast capture, full-text search, backlinks, tags, and Markdown export. A competent builder can reach a useful personal version in one sitting, while the paid product mainly wins on polish, sync, importers.
Build verification: not recorded. How we judge buildability
What you give up
- conflict-safe multi-device sync
- mature importers and exporters
- collaborative editing and sharing
- native mobile clients
Why people still pay
Milanote: People pay for a writing surface they trust for years, plus migration tools, sync, and tiny interaction details that disappear into habit.
Your build guide
The stack, security requirements, and agent rules for a focused replacement.
Before you start
- Runtime and tools: TypeScript, React, SVG or Canvas and IndexedDB with a versioned JSON project format.
- Before starting: A browser with IndexedDB, licensed example assets and fonts, and an agreed output size.
Use these project rules and optional skill references alongside the prompt. Review each skill before adding it to your agent; the AGENTS.md export includes the same guidance.
Project rule — domain: Store Board, Card, Asset, Connector and Position; assets are referenced by stable IDs and deleting a board prompts before removing shared attachments.
Project rule — scope and recovery: Start with local editing, text search and explicit backups. Browser storage can be cleared; do not promise cloud sync or semantic understanding without separate implementation.
Project rule — acceptance: Use one image on two boards, delete one card and export the other board; the attachment remains available and connector endpoints stay valid.
Project rule — delivery: document real setup commands and permissions; do not claim a build, accuracy level, performance result or security certification that has not been demonstrated.
Recommended skill: vercel-composition-patterns — separate document tools, property inspectors and export controls into explicit reusable React components. Follow the maintainer's installation instructions and match its requirements to the chosen runtime.
Recommended skill: web-design-guidelines — review keyboard access, focus, validation, error recovery and the readable work/review interface or HTML report. Follow the maintainer's installation instructions and match its requirements to the chosen runtime.
Implementation plan
Phase 1
Pin the working slice and create its example input: Arrange research notes, images, links and checklists on visual project boards, connect related cards and export a portable project bundle. Confirm setup: A browser with IndexedDB, licensed example assets and fonts, and an agreed output size.
Phase 2
Implement persistence and write-time invariants before decorating the UI: Store Board, Card, Asset, Connector and Position; assets are referenced by stable IDs and deleting a board prompts before removing shared attachments.
Phase 3
Connect the working view to real saved state. Maintain one document model for preview, undo and export. Use stable element IDs; save after completed gestures, handle storage quota errors and provide explicit file backups.
Phase 4
Expose the app-specific limits and recovery path in context: Start with local editing, text search and explicit backups. Browser storage can be cleared; do not promise cloud sync or semantic understanding without separate implementation.
Phase 5
Walk through this concrete acceptance case and preserve its exported evidence: Use one image on two boards, delete one card and export the other board; the attachment remains available and connector endpoints stay valid. Finish the README and backup/restore instructions; report unfinished capabilities explicitly.
Build the following focused alternative to Milanote. Implement the focused workflow below first; the verdict is not evidence of a completed or production-certified build. WORKING SLICE Arrange research notes, images, links and checklists on visual project boards, connect related cards and export a portable project bundle. SETUP AND ARCHITECTURE Use TypeScript, React, SVG or Canvas and IndexedDB with a versioned JSON project format. Prerequisites: A browser with IndexedDB, licensed example assets and fonts, and an agreed output size. Before integrating anything, record actual versions and permissions, plus model files or provider limits only where used, in the README; make unavailable dependencies visible rather than simulating success. DOMAIN MODEL AND INVARIANTS Store Board, Card, Asset, Connector and Position; assets are referenced by stable IDs and deleting a board prompts before removing shared attachments. IMPLEMENTATION CONTRACT Maintain one document model for preview, undo and export. Use stable element IDs; save after completed gestures, handle storage quota errors and provide explicit file backups. Provide an input/setup view, the main work view, and a review/export view appropriate to this workflow. Preserve the last saved state if a job or save fails. Include empty, loading, permission-denied, partial and retryable-error states. Log identifiers and error categories without secret values or unnecessary private content. APP-SPECIFIC BOUNDARY AND RECOVERY Start with local editing, text search and explicit backups. Browser storage can be cleared; do not promise cloud sync or semantic understanding without separate implementation. ACCEPTANCE SCENARIO Use one image on two boards, delete one card and export the other board; the attachment remains available and connector endpoints stay valid. Also reopen the app after an interrupted operation, confirm the saved record/export remains inspectable, and document the recovery action. These are implementation acceptance requirements, not a claim that this guide has been tested. DELIVERY Deliver a runnable repository with migrations or project-format versioning, a non-sensitive example, environment/permission setup, the exact manual acceptance steps, and a backup/export-and-restore walkthrough. Implement the working slice before optional integrations; list any deferred paid-product capabilities honestly. Do not add capabilities outside the working slice just to resemble the original product. PROJECT RULES FOR AGENTS.md Keep the domain invariants above executable at the write boundary. Propose scope changes before adding providers or permissions. Never fabricate source evidence, publish results, identity matches or successful delivery. Preserve user originals and require an explicit confirmation for destructive changes or external publication.
$ open in your agent (prompt prefilled, you press enter), copy the prompt or copy or download AGENTS.md
prompt copied. want to know what dies next week?
new verdicts + top votes, weekly. free. one-click out.
Alternatives to building your own
all 3 free alternatives to Milanote →· no votes, no pay-to-list · just what's real
Milanote pricing
| plan | monthly | annual (per mo) | what you get |
|---|---|---|---|
| free | $0/user | $0/user | 100 notes/images/links; 10 file uploads; unlimited shared boards |
| pay per person | $12.50/user | $9.99/user | Unlimited notes/images/links, file uploads and shared boards |
| team bundle | — | $49 | Unlimited notes/images/links, uploads and shared boards; selected multi-person bundleBilled annually. The rendered official page showed $49/month for the currently selected bundle but did not expose its seat count. |
| larger team | — | — | Custom seat count and contractContact sales. |
free tier100 notes, images or links; 10 file uploads; unlimited shared boards
billingindividual monthly + annual; Team bundle annual only at the rendered selection; larger teams custom
hidden costsTeam pricing depends on the seat bundle selected; the live page displayed $49/month billed annually without exposing the selected number of people. Every paid individual requires a paid seat.
pricing sources checked 2026-08-13 · pricing source ↗
Questions about Milanote
Can you build your own Milanote with AI?
The verdict is yes for the scoped workflow. Milanote's solo core is compact: build a local-first visual project boards app with fast capture, full-text search, backlinks, tags, and Markdown export. A competent builder can reach a useful personal version in one sitting, while the paid product mainly wins on polish, sync, importers.
What does the Milanote build prompt cover?
The prompt starts with this scope: Arrange research notes, images, links and checklists on visual project boards, connect related cards and export a portable project bundle. Full-product capabilities excluded from the comparison include: conflict-safe multi-device sync; mature importers and exporters; collaborative editing and sharing. Follow the implementation plan and its prerequisites before expanding the build.
How do I use the prompt, AGENTS.md and agent skills?
Start with the Milanote prerequisites and stack, then copy the prompt into your coding agent. Save the project rules as AGENTS.md in the project root. Linked skills are optional packages or source instructions for specific tasks; review their current contents and install only those matching the chosen stack. A skill does not supply API credentials or verify the finished app.
How long will this Milanote project take?
The catalogue estimate is one sitting for the limited scope. Setup, integration approvals, debugging, deployment and ongoing maintenance can add time. This is an estimate, not a delivery guarantee.
What would I give up by replacing Milanote?
conflict-safe multi-device sync; mature importers and exporters; collaborative editing and sharing; native mobile clients. Milanote: People pay for a writing surface they trust for years, plus migration tools, sync, and tiny interaction details that disappear into habit.
What can I use instead of building Milanote?
AFFiNE: Creative boards, documents and collections in one app, with local files underneath. Apple Freeform: A bottomless Apple whiteboard for notes, links and files; databases missed the meeting. Obsidian: Visual canvases tied to real notes and tasks, though taste is supplied separately. Compare all listed options at https://howtovibecodeit.dev/milanote/alternatives. Check each option's license, hosting needs and feature limits.