Apollon
July 1, 2026 ยท View on GitHub
Apollon is an open-source UML modeling editor for the web. Draw 13 UML and modeling diagram types (class, component, activity, BPMN, SFC, and more) in the browser, collaborate in real time, and export to SVG, PNG, PDF, or JSON.
This monorepo contains every piece of the Apollon platform:
library/: the embeddable@tumaet/apolloneditor (npm).standalone/: the standalone web app (server and webapp) built on the library.vscode-extension/: the Apollon VS Code extension.docs/: the Docusaurus documentation site, published at https://ls1intum.github.io/Apollon/.
Use the library
npm install @tumaet/apollon react react-dom @xyflow/react yjs y-protocols
react, react-dom, @xyflow/react, yjs, and y-protocols are required
peer dependencies โ the editor renders on the host's single React and Yjs
instance instead of bundling its own. See the
library README for the full API and per-framework guides.
Run the stack locally
git clone git@github.com:ls1intum/Apollon.git
cd Apollon
nvm install && nvm use
pnpm install
pnpm dev
pnpm dev starts three processes together:
- Library build watch (auto-rebuilds on changes).
- Server (
tsx watch) on a printed local HTTP port with a matching WebSocket relay port. - Webapp (Vite HMR) on a printed local dev URL.
The launcher handles the setup:
- Resolves port collisions for the webapp, server, WebSocket relay, and Redis.
- Reuses an existing local Redis if one is running; otherwise it starts a Redis container on a free host port (Docker is only required in that case).
- Needs no
.envfiles. The defaults match the local setup.
Override ports via APOLLON_WEBAPP_PORT, APOLLON_SERVER_PORT, APOLLON_WS_PORT, or APOLLON_REDIS_PORT.
To preview the documentation site instead, run pnpm dev:docs from the repo root. It builds the library and starts the Docusaurus dev server.
Tech stack
| Component | Technology |
|---|---|
| Library | React, TypeScript, React Flow (@xyflow/react), Yjs, Zustand, Vite |
| Server | Hono 4, Redis (RedisJSON), WebSocket relay |
| Webapp | React, TypeScript, Vite, shadcn-style UI (Base UI), Tailwind |
| Storage | Redis with RedisJSON (diagrams expire after 120 days via native TTL) |
| Reverse proxy | Traefik v3 (production) |
Requirements
- Node.js: version pinned in
.nvmrc(Node 24 LTS). - pnpm 11+: the package manager. The exact version is pinned in the
packageManagerfield ofpackage.json. Install it withnpm install -g pnpm@11. - Docker: only when
pnpm devneeds to start a local Redis.
Documentation
The docs are a Docusaurus site published at https://ls1intum.github.io/Apollon/. Sources live in docs/; preview them locally with pnpm dev:docs.
- Library: embedding the
@tumaet/apolloneditor. - User Guide: getting started, requirements, and self-hosting.
- Contributor: project structure, scripts, deployment, and troubleshooting.
Operations, legal pages, and TUM DSMS material live in ops/ in this repo.
Contributing
Open an issue or a pull request at https://github.com/ls1intum/Apollon. Guidelines live in CONTRIBUTING.md; see also the CODE_OF_CONDUCT.md.
License
MIT. See LICENSE.