Skip to content

LikhaEditor is a fully open-source, self-hosted, framework-agnostic rich text editor designed for developers who want zero lock-in, no cloud dependency, and maximum flexibility.

License

Notifications You must be signed in to change notification settings

ProgrammerNomad/likhaeditor

Repository files navigation

लिखा Logo

LikhaEditor

npm version npm downloads License: MIT PRs Welcome GitHub Stars GitHub Issues

LikhaEditor is a completely free, open-source, self-hosted, framework-agnostic rich text editor built for developers who demand flexibility without vendor lock-in. Run it anywhere: static HTML, Laravel, Livewire, React, Next.js, and more. The name "Likha" comes from the Hindi word "लिखा", meaning "written".

Documentation | Examples | API Reference | Changelog | npm Package

Why LikhaEditor

  • Free forever under the MIT license
  • No mandatory cloud services or accounts
  • Runs in plain HTML without build tooling
  • Friendly with Laravel, Livewire, and other backends
  • Works with your preferred frontend framework

Quick Start

CDN (Plain HTML)

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@likhaeditor/likhaeditor/dist/likha-editor.css">
</head>
<body>
  <div id="editor"></div>
  
  <script src="https://cdn.jsdelivr.net/npm/@likhaeditor/likhaeditor/dist/likha-editor.umd.js"></script>
  <script>
    const editor = LikhaEditor.createEditor({
      element: document.getElementById("editor"),
      content: "<p>Start writing...</p>"
    });
  </script>
</body>
</html>

NPM Installation

npm install @likhaeditor/likhaeditor
import { createEditor } from '@likhaeditor/likhaeditor';
import '@likhaeditor/likhaeditor/dist/likha-editor.css';

const editor = createEditor({
  element: document.getElementById('editor'),
  content: '<p>Start writing...</p>'
});

Laravel

composer require nomadprogrammer/likha-laravel
<x-likha-editor name="content" :value="old('content', $post->content)" />

Core Principles

  • 100 percent open source (MIT)
  • Self-hosted only, zero SaaS dependencies
  • Framework-agnostic core architecture
  • Works in a plain HTML page
  • Plugin-based feature model
  • No gated or paywalled functionality
  • Developer-first ergonomics and documentation

What LikhaEditor Is (and Is Not)

LikhaEditor is

  • A modern rich text editor platform
  • Fully extensible through plugins
  • Suitable for admin panels, CMS, SaaS apps, and dashboards
  • Welcoming to Laravel and Livewire workflows
  • Safe for commercial projects

LikhaEditor is not

  • A hosted cloud service
  • A SaaS subscription offering
  • A CKEditor clone (all-original implementation)
  • Locked into any single framework

Comparison with Other Editors

Feature LikhaEditor TipTap Quill CKEditor Slate
License MIT (Free) MIT (Free) BSD GPL/Commercial MIT (Free)
Self-Hosted Yes Yes Yes Yes Yes
Cloud Required No No No Optional No
Framework Agnostic React-focused Agnostic Agnostic React-only
Plain HTML Yes No Yes Yes No
Laravel Support First-class Manual Manual Manual Manual
Plugin System Yes Yes Limited Yes Custom
Commercial Use Free Free Free Paid/GPL Free
Track Changes Yes Premium No Premium Custom
Collaborative Planned Premium No Premium Custom

Feature Roadmap

Core editing

  • ✅ Paragraphs and headings
  • ✅ Bold, italic, underline, strikethrough
  • ✅ Links and lists (bullet, ordered)
  • ✅ Undo and redo with keyboard shortcuts
  • ✅ Text color and highlighting
  • ✅ Subscript and superscript

Advanced blocks

  • ✅ Tables with insert and basic editing
  • ✅ Images with upload, resize, and alignment controls
  • ✅ Code blocks with language selection
  • ✅ Blockquotes and horizontal rules
  • ⏳ Table cell merge and advanced editing (planned)
  • ⏳ Syntax highlighting for code blocks (planned)

Professional capabilities (self-hosted)

  • Track changes and review workflows
  • Commenting and annotations
  • Version history and diffing
  • Markdown import and export
  • HTML to JSON and JSON to HTML transforms

Integrations

  • Plain HTML without build tools
  • Laravel Blade components
  • Livewire bindings
  • React and Next.js adapters
  • Vue adapter (planned)

Content management

  • Copy and paste from Word and Google Docs with formatting preservation
  • Drag and drop image uploads with preview
  • Inline image editing (crop, rotate, filters)
  • File attachments and media library
  • Embeds (YouTube, Twitter, CodePen, etc.)
  • Custom content blocks

Productivity features

  • Slash commands for quick block insertion
  • Autocomplete and mentions (@user, #tag)
  • Emoji picker with search
  • Character and word count
  • Read-only and focus modes
  • Auto-save with configurable intervals
  • Find and replace within content

Internationalization and accessibility

  • Multi-language UI support (i18n)
  • Right-to-left (RTL) text support
  • ARIA labels and keyboard navigation
  • Screen reader compatibility
  • High contrast and dark mode themes

Export and import

  • Export to PDF with custom styling
  • Print-friendly formatting
  • Import from Markdown, HTML, plain text
  • Export to Markdown, JSON, HTML
  • Content sanitization and XSS protection

Developer experience

  • TypeScript definitions included
  • Comprehensive API documentation
  • Testing utilities and helpers
  • Extensive code examples
  • Migration guides from other editors
  • Custom schema definitions
  • Event hooks and middleware

Advanced capabilities

  • Optional collaborative editing module powered by self-hosted WebSocket servers
  • Real-time presence indicators
  • Visual theme marketplace backed by community-created plugins
  • Accessibility audit tooling to ensure WCAG compliance out of the box
  • AI-powered writing assistance (bring your own API)
  • Grammar and spell checking (pluggable backends)
  • Content templates and snippets library

Works Everywhere

Plain HTML (no build tools)

<div id="editor"></div>

<script type="module">
	import { Editor } from "https://cdn.jsdelivr.net/npm/likha/dist/likha.js";

	const editor = new Editor({
		element: document.getElementById("editor"),
		content: "<p>Hello from LikhaEditor</p>"
	});

	console.log(editor.getHTML());
</script>

Laravel Blade

<x-likha-editor name="content" :value="$post->content" />

Livewire

<x-likha-editor wire:model.defer="content" />

React or Next.js

<LikhaEditor value={value} onChange={setValue} />

Plugin-Based Architecture

Everything in LikhaEditor is delivered as a plugin, so you only ship what you enable.

editor.use(TablePlugin);
editor.use(ImagePlugin);
editor.use(TrackChangesPlugin);
  • No plugin, no bundle size increase
  • Fully tree-shakable builds
  • First-class support for community plugins

Architecture Overview

NPM Packages

All packages are published under the @likhaeditor scope on npm:

Package Version Description
@likhaeditor/core npm Framework-agnostic editor engine
@likhaeditor/ui npm Toolbar and UI components
@likhaeditor/plugins npm Official plugin collection
@likhaeditor/likhaeditor npm Vanilla JS wrapper (recommended)

Coming soon: @likhaeditor/likhaeditor-react, @likhaeditor/likhaeditor-laravel, @likhaeditor/likhaeditor-livewire

Project Structure

likha/
├─ packages/
│  ├─ core        # Editor engine (framework agnostic)
│  ├─ ui          # Toolbar, menus, themes
│  ├─ plugins     # Official plugins
│  ├─ html        # Plain HTML adapter
│  ├─ react       # React adapter
│  ├─ laravel     # Laravel package
│  └─ livewire    # Livewire integration
├─ examples/
│  ├─ html
│  ├─ laravel
│  └─ nextjs
└─ docs/

Tech Stack

  • TypeScript throughout the monorepo
  • ProseMirror (MIT) for the editing substrate
  • ES modules and modern build tooling (pnpm workspace)
  • Zero framework dependency inside the core package

License

LikhaEditor is distributed under the MIT License.

  • Free for personal and commercial use
  • Redistribution allowed without attribution
  • No hidden clauses or feature gating

Contributing

Contributions are welcome and encouraged. You can help by:

  • Implementing new plugins
  • Improving documentation and examples
  • Fixing bugs or regressions
  • Reviewing architecture decisions
  • Writing starter templates for new frameworks

Please review CONTRIBUTING.md before submitting a pull request.

Roadmap to Version 1.0

  • ✅ Ship the core editor engine
  • ✅ Release a starter plugin bundle (20 plugins)
  • ✅ Publish the plain HTML adapter
  • ✅ Launch official documentation site (likhaeditor.netlify.app)
  • 🚧 Deliver the React adapter (in progress)
  • ⏳ Deliver the Laravel Blade component (planned)
  • ⏳ Finalize Livewire integration package (planned)
  • ⏳ Bootstrap community plugin gallery (planned)

Vision

LikhaEditor aims to become the default open-source editor for developers seeking freedom, control, and simplicity without licenses, clouds, or lock-in. The goal is a modular platform that grows with your product and embraces the ecosystems you already trust.

Frequently Asked Questions

Is LikhaEditor really free?

Yes, completely free. MIT licensed with no hidden costs, premium tiers, or feature gating. Use it in commercial projects without attribution requirements.

Does LikhaEditor require a backend server?

No mandatory backend. LikhaEditor runs entirely in the browser. You only need a server if you want features like image uploads, which you control and implement yourself.

Can I use LikhaEditor offline?

Yes, LikhaEditor works completely offline once loaded. No internet connection required for editing.

How does Likha compare to TipTap?

Both are excellent. LikhaEditor focuses on framework-agnostic design with first-class Laravel/Livewire support and works in plain HTML without build tools. TipTap is React/Vue focused and requires a build step.

Will there be a paid version?

No. LikhaEditor will remain 100 percent free and open source forever. No premium plans, no enterprise editions, no feature paywalls.

How is collaborative editing implemented?

Collaborative editing is planned as an optional self-hosted module using operational transformation or CRDT algorithms. You host your own WebSocket server - no third-party services required.

Can I migrate from CKEditor or TinyMCE?

Yes, migration guides and content conversion tools are planned to help you switch from other editors while preserving your existing content.

What is the browser support?

LikhaEditor targets modern evergreen browsers (Chrome, Firefox, Safari, Edge). IE11 is not supported.

How can I get help?

Check the documentation, browse examples, open an issue, or join our community discussions.

Community and Support

Support the Project

LikhaEditor is and always will be free. You can support its development by:

  • Star the repository on GitHub
  • Share LikhaEditor with your network and colleagues
  • Report bugs with detailed reproduction steps
  • Suggest features and integrations
  • Contribute code, documentation, or plugins
  • Write blog posts or tutorials about Likha
  • Sponsor development (GitHub Sponsors coming soon)
  • Help answer questions in Discussions

Acknowledgments

LikhaEditor is built on the shoulders of giants:

Author

Shiv Singh


Built with ❤️ by ProgrammerNomad

About

LikhaEditor is a fully open-source, self-hosted, framework-agnostic rich text editor designed for developers who want zero lock-in, no cloud dependency, and maximum flexibility.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published