# Verso **A collaborative real-time editor for Quarto and LaTeX presentations and documents.** Verso is a fork of [Overleaf](https://github.com/overleaf/overleaf) that adds first-class [Quarto](https://quarto.org) support alongside Overleaf's existing LaTeX toolchain. It keeps Overleaf's real-time collaboration infrastructure and runs **three compilers side by side**, chosen automatically from the root file's extension: `.qmd` builds with Quarto (PDF via Typst, or HTML via RevealJS), `.tex` with `latexmk`/TeX Live, and `.typ` straight through [Typst](https://typst.app). All three coexist on one server. --- ## Features - **Real-time collaboration** — multiple users editing the same `.qmd` file simultaneously, powered by Overleaf's operational-transformation engine - **Three compilers** — `.qmd` builds with Quarto, `.tex` with `latexmk`/TeX Live, and `.typ` with Typst. The runner is chosen by the root file's extension, so Quarto, LaTeX and Typst projects live side by side - **Two output formats** — set `format: typst` in the YAML frontmatter for a PDF preview, or `format: revealjs` for an interactive HTML presentation rendered in an iframe - **Document outline** — headings (`#`, `##`, `###`) are extracted and shown in the sidebar outline panel - **Math, code, tables** — standard Quarto/Pandoc Markdown features all work - **Auto-compile** — the preview refreshes automatically 2.5 s after you stop typing - **Project history** — full change history inherited from Overleaf ## Output formats In the YAML frontmatter of your `.qmd` file: ```yaml format: typst # → PDF preview via Typst (no LaTeX required) format: revealjs # → HTML slideshow preview ``` Typst is bundled with Quarto — no separate installation is needed. ## Quick start ### With Docker ```bash docker run -d \ -p 80:80 \ -v ~/verso_data:/var/lib/overleaf \ --name verso \ registry.alocoq.fr/verso:latest ``` Then open `http://localhost` in your browser. On first run, visit `/launchpad` to create an admin account. ### Build from source ```bash # Build the base image (installs Quarto + TeX Live) cd server-ce make build-base # Build the application image make build-community ``` The two Dockerfiles are: | File | Purpose | |------|---------| | `server-ce/Dockerfile-base` | Base OS image — installs system deps, Quarto, and a TeX Live (`latexmk`) toolchain | | `server-ce/Dockerfile` | Application image — installs Node services, compiles frontend | ## Architecture Verso is a microservices monorepo (Yarn workspaces). All services run inside a single container managed by `runit`, with `nginx` as the front router. ``` browser ──→ nginx:80 ├── / ──────────────────→ web:4000 (main app, React UI) ├── /socket.io ──────────→ real-time:3026 (WebSocket, OT engine) └── /project/*/output/* → clsi-nginx:8080 (compiled output files) web → document-updater → Redis pub/sub → real-time → browser web → CLSI (quarto render / latexmk / typst) → output files → nginx → browser ``` Key services: | Service | Role | |---------|------| | `web` | HTTP API, React frontend, auth, project management | | `real-time` | WebSocket layer, live cursor and edit sync | | `document-updater` | Operational transformation, Redis pub/sub | | `clsi` | Compiler — runs `quarto render` (`.qmd`), `latexmk` (`.tex`) or `typst` (`.typ`) and serves output | | `docstore` | Document text storage (MongoDB) | | `filestore` | Binary file storage (S3 or local) | | `project-history` | Change history and version tracking | ## Writing a Quarto document Minimal working example (`main.qmd`): ```markdown --- title: My Presentation author: Your Name date: today format: revealjs --- ## Slide one Write **Markdown** here. ## Mathematics $$\int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}$$ ``` For PDF output, change `format: revealjs` to `format: typst`. > **Note on display math**: put `$$...$$` on a single line. > Multi-line display math blocks can cause YAML parse errors in some Quarto versions. ## Writing a LaTeX document LaTeX still works exactly as in Overleaf. A project whose root file is a `.tex` file (e.g. `main.tex`) compiles with `latexmk`/TeX Live instead of Quarto — the engine is chosen from the root file's extension, no setting required. The **Example LaTeX project** in the *New project* menu is a ready-made starting point; **Blank LaTeX project** gives you an empty `main.tex`. > The bundled TeX Live is a minimal `scheme-basic` install. Documents needing > extra packages may not build out of the box yet — see `server-ce/Dockerfile-base` > for how to switch to a fuller TeX Live scheme. ## Writing a Typst document A project whose root file is a `.typ` file compiles directly to PDF with [Typst](https://typst.app) — fast, modern markup with a real scripting language. No extra install is needed: Verso drives the Typst that ships inside Quarto (`quarto typst compile`). Use the **Blank Typst project** or **Example Typst project** entries in the *New project* menu to get started. ## Environment variables Verso inherits all of Overleaf's environment variables (prefixed `OVERLEAF_`). The most commonly needed ones: | Variable | Default | Description | |----------|---------|-------------| | `OVERLEAF_APP_NAME` | `Verso` | Name shown in the UI | | `OVERLEAF_MONGO_URL` | `mongodb://mongo/sharelatex` | MongoDB connection string | | `OVERLEAF_REDIS_HOST` | `localhost` | Redis host | | `OVERLEAF_SITE_URL` | — | Public URL (used in emails) | | `OVERLEAF_ADMIN_EMAIL` | — | Email for the first admin account | See the [Overleaf Server documentation](https://github.com/overleaf/overleaf/wiki) for the full list. ## Relation to Overleaf Verso is a fork of [Overleaf Community Edition](https://github.com/overleaf/overleaf) with the following changes: - LaTeX/CLSI compiler replaced by Quarto (PDF via Typst, HTML via RevealJS) - Default project template changed from `main.tex` to `main.qmd` - Document outline parser extended to read Markdown headings - Compiler selector in the UI replaced with a single "Quarto" option - Brand colours updated to Quarto's palette; name changed from Overleaf to Verso - TeX Live removed from the base Docker image; Quarto installed instead All other infrastructure — real-time collaboration, history, auth, file storage, project management — is unchanged from Overleaf. ## Contributing Contributions are welcome. Please open an issue or pull request on the [Verso repository](https://git.alocoq.fr/alois/verso). The upstream Overleaf contribution guidelines are in [CONTRIBUTING.md](CONTRIBUTING.md). ## License GNU Affero General Public License v3 — see [LICENSE](LICENSE). Copyright © Overleaf, 2014–2025 (original code). Verso modifications © Aloïs Coquillard, 2026–present.