diff --git a/README.md b/README.md index 192f8b7877..c8a59a6614 100644 --- a/README.md +++ b/README.md @@ -1,80 +1,153 @@ -
-- Wiki • - Server Pro • - Contributing • - Mailing List • - Authors • - License -
+Verso is a fork of [Overleaf](https://github.com/overleaf/overleaf) adapted to compile [Quarto](https://quarto.org) documents instead of LaTeX. It keeps Overleaf's real-time collaboration infrastructure while replacing the LaTeX/CLSI compiler with Quarto, enabling collaborative editing of `.qmd` files with instant PDF (via Typst) or HTML (RevealJS) preview. -
-- Figure 1: A screenshot of a project being edited in Overleaf Community Edition. -
+--- -## Community Edition +## Features -[Overleaf](https://www.overleaf.com) is an open-source online real-time collaborative LaTeX editor. We run a hosted version at [www.overleaf.com](https://www.overleaf.com), but you can also run your own local version, and contribute to the development of Overleaf. +- **Real-time collaboration** — multiple users editing the same `.qmd` file simultaneously, powered by Overleaf's operational-transformation engine +- **Quarto compilation** — documents are compiled with Quarto on every save +- **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 -> [!CAUTION] -> Overleaf Community Edition is intended for use in environments where **all** users are trusted. Community Edition is **not** appropriate for scenarios where isolation of users is required due to Sandbox Compiles not being available. When not using Sandboxed Compiles, users have full read and write access to the `sharelatex` container resources (filesystem, network, environment variables) when running LaTeX compiles. +## Output formats -For more information on Sandbox Compiles check out our [documentation](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/server-pro-only-configuration/sandboxed-compiles). +In the YAML frontmatter of your `.qmd` file: -## Enterprise +```yaml +format: typst # → PDF preview via Typst (no LaTeX required) +format: revealjs # → HTML slideshow preview +``` -If you want help installing and maintaining Overleaf in your lab or workplace, we offer an officially supported version called [Overleaf Server Pro](https://www.overleaf.com/for/enterprises). It also includes more features for security (SSO with LDAP or SAML), administration and collaboration (e.g. tracked changes). [Find out more!](https://www.overleaf.com/for/enterprises) +Typst is bundled with Quarto — no separate installation is needed. -## Keeping up to date +## Quick start -Sign up to the [mailing list](https://mailchi.mp/overleaf.com/community-edition-and-server-pro) to get updates on Overleaf releases and development. +### With Docker -## Installation +```bash +docker run -d \ + -p 80:80 \ + -v ~/verso_data:/var/lib/overleaf \ + --name verso \ + registry.alocoq.fr/verso:latest +``` -We have detailed installation instructions in the [Overleaf Toolkit](https://github.com/overleaf/toolkit/). +Then open `http://localhost` in your browser. On first run, visit `/launchpad` to create an admin account. -## Upgrading +### Build from source -If you are upgrading from a previous version of Overleaf, please see the [Release Notes section on the Wiki](https://github.com/overleaf/overleaf/wiki#release-notes) for all of the versions between your current version and the version you are upgrading to. +```bash +# Build the base image (installs Quarto) +cd server-ce +make build-base -## Overleaf Docker Image +# Build the application image +make build-community +``` -This repo contains two dockerfiles, [`Dockerfile-base`](server-ce/Dockerfile-base), which builds the -`sharelatex/sharelatex-base` image, and [`Dockerfile`](server-ce/Dockerfile) which builds the -`sharelatex/sharelatex` (or "community") image. +The two Dockerfiles are: -The Base image generally contains the basic dependencies like `wget`, plus `texlive`. -We split this out because it's a pretty heavy set of -dependencies, and it's nice to not have to rebuild all of that every time. +| File | Purpose | +|------|---------| +| `server-ce/Dockerfile-base` | Base OS image — installs system deps and Quarto | +| `server-ce/Dockerfile` | Application image — installs Node services, compiles frontend | -The `sharelatex/sharelatex` image extends the base image and adds the actual Overleaf code -and services. +## Architecture -Use `make build-base` and `make build-community` from `server-ce/` to build these images. +Verso is a microservices monorepo (Yarn workspaces). All services run inside a single container managed by `runit`, with `nginx` as the front router. -We use the [Phusion base-image](https://github.com/phusion/baseimage-docker) -(which is extended by our `base` image) to provide us with a VM-like container -in which to run the Overleaf services. Baseimage uses the `runit` service -manager to manage services, and we add our init-scripts from the `server-ce/runit` -folder. +``` +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) → 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` | Quarto compiler — runs `quarto render` 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. + +## 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 -Please see the [CONTRIBUTING](CONTRIBUTING.md) file for information on contributing to the development of Overleaf. +Contributions are welcome. Please open an issue or pull request on the [Verso repository](https://git.alocoq.fr/alois/verso). -## Authors - -[The Overleaf Team](https://www.overleaf.com/about) +The upstream Overleaf contribution guidelines are in [CONTRIBUTING.md](CONTRIBUTING.md). ## License -The code in this repository is released under the GNU AFFERO GENERAL PUBLIC LICENSE, version 3. A copy can be found in the [`LICENSE`](LICENSE) file. +GNU Affero General Public License v3 — see [LICENSE](LICENSE). -Copyright (c) Overleaf, 2014-2025. +Copyright © Overleaf, 2014–2025 (original code). +Verso modifications © Alois Coquillard, 2025–present.