Product sample · Documents

Notewise

A block editor: slash commands, nested blocks, drag reorder, coalesced undo and clean Markdown import/export. The block tree is a real data structure, not contenteditable soup.

8 typesblocks
62tests
0deps
Markdownexport
live demo
Notewise
The problem

Contenteditable is not an editor.

Writing tools live or die on structure. Browsers give you a contenteditable div and a pile of edge cases; everything else, nesting, reordering, undo that feels right, a Markdown round-trip, has to be designed.

Notewise models the document as a tree of typed blocks and renders it, so every operation is explicit and testable.

What we built

A block tree you can test.

  • Eight block types with insert, split, merge, move and indent operations over a tree.
  • Slash menu with keyboard navigation, drag handles and Tab/Shift-Tab nesting.
  • Undo/redo that coalesces typing into steps instead of one character at a time.
  • Markdown parser and serializer that round-trip the supported blocks.
Architecture

How it is put together

ui: sidebar · editor · slash menu · markdown panel
src/: blocks (tree ops) · markdown codec · history · stats
persistence: versioned localStorage
tests: tree edits, markdown round-trip, undo semantics

Stack

TypeScriptVanilla JSCSS

Security and money

  • Blocks are immutable-ish records addressed by id; operations return a new tree for undo snapshots.
  • Typing coalesces on a timer so undo reverses a phrase, not a keystroke.
  • Markdown is the export boundary, with unsupported inline emphasis left literal rather than guessed.
  • Persistence is versioned so a schema change does not destroy a user's document.
Screens

Product surfaces

Notewise, the working demo
Notewise, the working demo
Similar work

Building something in this category?

We can walk you through the architecture, the payment integration and the failure cases on a call, including the parts that were hard.