A modern, open-source rich-text editor for JavaScript and Python ecosystems.
OllowEditor provides one editing experience through a framework-independent browser implementation, a published npm package with a React adapter, and a Python package with Django, Django REST Framework, Flask, and FastAPI integrations. The project is maintained by CodeFortify.
- Rich text, headings, lists, links, tables, code blocks, quotes, and embeds
- Image, gallery, and attachment workflows with configurable server uploads
- HTML source mode, Markdown import/export, and document import/export tools
- Responsive desktop, tablet, and mobile toolbars
- Light, dark, and automatic themes
- Textarea synchronization for standard forms and APIs
- JavaScript plugin and keyboard-shortcut APIs
- TypeScript declarations and a React component
- Packaged static assets and upload integrations for Python web frameworks
- Safe plain-text and media previews for Django admin list views
| Ecosystem | Location | Distribution |
|---|---|---|
| Vanilla JavaScript | packages/javascript/ |
Direct integration |
| JavaScript and React | packages/npm/ |
@codefortify/olloweditor |
| Python web frameworks | packages/python/ |
olloweditor |
The npm package contains the framework-independent core and a React adapter. Its examples also cover TypeScript, Next.js, Vue, Express upload handling, and NestJS upload handling. The Python distribution contains implemented Django, DRF, Flask, and FastAPI integrations.
Use the files in packages/javascript/ directly:
<link rel="stylesheet" href="path/to/ollow.css">
<script src="path/to/ollow.js"></script>
<textarea id="editor" name="content"></textarea>
<script>
OllowEditor.init("#editor");
</script>See the Vanilla JavaScript guide.
npm install @codefortify/olloweditorimport { createOllowEditor } from "@codefortify/olloweditor";
import "@codefortify/olloweditor/style.css";
createOllowEditor("#editor");React and framework examples are in the npm package guide.
pip install olloweditor
pip install "olloweditor[django]" # choose only the integration you needAvailable extras are django, drf, flask, fastapi, and all. See the
Python package guide for setup, uploads, static
assets, and safe preview behavior.
.
├── .github/ # contribution templates and automation
├── docs/ # cross-project architecture and development docs
├── packages/
│ ├── javascript/ # dependency-free browser implementation
│ ├── npm/ # npm core, React adapter, and JS examples
│ └── python/ # PyPI distribution and Python integrations
└── website/ # project website and combined documentation
Examples stay with the implementation that owns and tests them. This avoids
duplicating package-specific setup under a second root examples tree. See
docs/repository-structure.md for details.
Clone the repository and run checks from the relevant implementation:
git clone https://github.com/CodeFortifyCloud/olloweditor.git
cd olloweditor
npm run check:javascript
npm run check:npm
npm run check:python-frontendPython checks require a virtual environment and development extras:
python -m venv .venv
. .venv/bin/activate
python -m pip install -e "./packages/python[all,test,dev]"
python -m pytest packages/python/tests
python -m ruff check packages/python
python -m mypy packages/python/srcDetailed setup is in docs/development.md. Architecture
and release boundaries are documented in docs/architecture.md
and docs/release-process.md.
Read CONTRIBUTING.md before opening a pull request. Use
GitHub Issues for reproducible bugs and follow SUPPORT.md for
questions. Potential vulnerabilities must be reported privately according to
SECURITY.md, not posted in a public issue.
OllowEditor is available under the MIT License. Package-specific copies are retained with the published npm and Python distributions.
Copyright (c) 2026 CodeFortify.
