Modern rewrite of TOAST UI Editor with a clean architecture, Node 22+ support, and a fresh version line starting at 1.0.0-alpha.1.
| Layer | Choice |
|---|---|
| Monorepo | pnpm workspaces + Turborepo |
| Language | TypeScript 5 |
| Build | Vite 6 (library + demo) |
| Tests | Vitest 3 |
| Lint | ESLint 9 flat config |
| Node | >= 22 |
| Package | Description |
|---|---|
@toastwrite/editor |
Core editor and viewer |
@toastwrite/parser |
CommonMark/GFM markdown parser |
Plugins and framework wrappers will be added after the core stabilizes.
Editor (facade)
├── EditorContext (shared state)
│ ├── ContentService → ToastMark
│ ├── PreviewService → Renderer + DOMPurify
│ └── EventBus (typed pub/sub)
├── MarkdownMode
├── PluginManager
└── Layout UI
Design patterns used:
- Facade —
Editor/Viewerpublic API - Observer — typed
EventBus - Composition — services injected via
EditorContext
pnpm install
pnpm build
pnpm devOpen http://localhost:5454 for the demo app.
pnpm build # build all packages
pnpm test:ci # run all tests
pnpm lint # eslint
pnpm typecheck # tsc --noEmitpnpm --filter @toastwrite/editor test
pnpm --filter @toastwrite/parser test:ci
pnpm --filter @toastwrite/demo dev- Core — markdown editor, viewer, events, plugins (this repo)
- Plugins — chart, syntax highlight, color, table, uml
- Wrappers — React 19, Vue 3
MIT