Package Exports
- @waveeditor/core
- @waveeditor/core/dist/stats.html
- @waveeditor/core/dist/waveeditor.esm.js
- @waveeditor/core/dist/waveeditor.esm.js.map
- @waveeditor/core/dist/waveeditor.min.css
- @waveeditor/core/dist/waveeditor.min.js
- @waveeditor/core/dist/waveeditor.min.js.map
- @waveeditor/core/package.json
Readme
๐ WaveEditor
A self-hosted, white-labeled rich-text editor for the web. Drop-in replacement for TinyMCE โ without the API key, the external CDN, or the surprise bills.
โ ๏ธ Pre-alpha. Phase 0 (project bootstrap) has not started yet. The full design and phased implementation plan are complete and ready to execute โ see
docs/phases/README.md.
What WaveEditor is
WaveEditor gives web developers a rich-text editor that is owned by the people who use it:
- โ
Drop-in replacement for TinyMCE โ public API mirrors
tinymce.init({...})so existing codebases migrate with a find-and-replace - โ Self-hosted โ single JS + CSS pair, no external CDN, no API key, works offline and behind firewalls
- โ MIT-licensed open core โ no GPL contagion, no recurring fees
- โ Brandable โ full white-label support via CSS variables; ship it under your own product name
- โ Commercial-ready โ clean separation between free core (Phases 0โ3) and future paid tier (Phase 4)
Package
Published on npm as @waveeditor/core.
The unscoped waveeditor name is blocked by npm's anti-typosquatting policy (similarity to the unrelated wangeditor package), so we use the @waveeditor org scope โ same convention as TipTap (@tiptap/core), Lexical (@lexical/core), CKEditor 5 (@ckeditor/*). Brand identity stays "WaveEditor" everywhere except the install command.
Quick start (planned โ Phase 1+)
Via npm
npm install @waveeditor/coreimport { WaveEditor } from '@waveeditor/core';
import '@waveeditor/core/dist/waveeditor.min.css';
WaveEditor.init({
selector: '#editor',
plugins: 'bold italic image link table lists',
toolbar: 'undo redo | bold italic | link image table',
});Via CDN (drop-in, no build step)
<link rel="stylesheet" href="https://unpkg.com/@waveeditor/core/dist/waveeditor.min.css">
<script src="https://unpkg.com/@waveeditor/core/dist/waveeditor.min.js"></script>
<textarea id="editor"></textarea>
<script>
WaveEditor.init({
selector: '#editor',
plugins: 'bold italic image link table lists',
toolbar: 'undo redo | bold italic | link image table',
});
</script>Identical pattern to TinyMCE. Same config string format. Just tinymce.init โ WaveEditor.init.
Roadmap
| Phase | Theme | Status | Plan |
|---|---|---|---|
| P0 | Project bootstrap | โณ Not started | phase-0.md |
| P1 | Core formatting (bold, italic, lists, links, images, โฆ) | Planned | phase-1.md |
| P2 | Advanced editing (tables, fonts, colors, code blocks, โฆ) | Planned | phase-2.md |
| P3 | Power features (track changes, comments, mentions, slash commands, โฆ) | Planned | phase-3.md |
| P4 | Backend-dependent (real-time collab, AI, asset manager, โฆ) | Planned | phase-4.md |
Documentation
| Doc | Purpose |
|---|---|
docs/design.md |
Architecture, public API, mission & vision, licensing strategy |
docs/visual-design.md |
Complete visual language: colors, typography, components, states, dark mode |
docs/mockups/ |
Seven interactive HTML mockups capturing every visual decision |
docs/phases/ |
Detailed implementation plans per phase |
Built on
- TipTap โ editor engine (MIT)
- ProseMirror โ underlying document model (MIT)
- Tabler Icons โ icon set (MIT)
- Inter โ chrome typeface (OFL)
- JetBrains Mono โ monospace typeface (OFL)
Full third-party attributions: NOTICES.md.
Contributing
This project is pre-Phase-0 and not yet accepting external contributions. Once Phase 0 ships, see CONTRIBUTING.md for the contribution workflow.
Security
Found a vulnerability? See SECURITY.md for the responsible disclosure process.
License
MIT โ ยฉ 2026 Manish Patolia.
WaveEditor is built on MIT-licensed open-source components and is itself MIT-licensed. Commercial premium features (Phase 4+) may be offered under a dual-license model in the future; see docs/design.md ยง16.