A web based git managed latex editor
  • TypeScript 78.2%
  • CSS 15.9%
  • TeX 4.5%
  • Dockerfile 0.8%
  • JavaScript 0.4%
  • Other 0.2%
Find a file
root 81ba511879 feat: add support for creating projects from remote Git repositories
- Update ProjectMetadataService to support cloning from remote URL
- Add error handling and metadata cleanup for failed clones
- Update backend API to accept remoteUrl parameter
- Add Git Remote URL input and separator to Create Project modal
- Style the new modal elements in CSS
2026-06-03 12:05:53 +00:00
docker/latex-base vibed sth, probably not working and unsecure 2026-05-30 17:36:02 +00:00
examplelatex basic frontend layout test working 2026-05-30 15:38:56 +02:00
nginx fix: Update nginx WebSocket route to match all project files 2026-06-03 02:56:03 +02:00
src feat: add support for creating projects from remote Git repositories 2026-06-03 12:05:53 +00:00
.env.example fix: Update HOST_PROJECTS_DIR example to absolute host path for Docker-in-Docker 2026-06-03 02:24:21 +00:00
.gitignore gitginorenotleakinginfo 2026-05-30 18:13:10 +00:00
DEPLOYMENT.md docs: Add comprehensive production deployment guide 2026-06-03 03:06:31 +02:00
docker-compose.yml refactor: Centralize environment configuration 2026-06-03 03:00:54 +02:00
LICENSE Initial commit 2026-05-25 00:40:17 +02:00
logo.png feat: Add logo branding throughout the application 2026-06-03 01:36:36 +02:00
README.md docs: Update README with new collaboration and container management features 2026-06-03 01:11:29 +02:00

Paperoot

Paperoot is a professional-grade, online multi-user LaTeX editor built with Node.js and React. It features real-time collaboration, a sophisticated file management system, and integrated Dockerized LaTeX compilation.

🚀 Key Features

  • Real-time Collaboration: Powered by Yjs and CodeMirror 6, allowing multiple users to edit documents simultaneously with live cursor tracking.
  • Synchronized Compilation: When any user compiles, all connected collaborators instantly see:
    • Compilation results and logs
    • Error diagnostics in the editor
    • PDF preview updates
    • Auto-opening log panel on errors
  • Smart Container Management:
    • One container per project (automatic cleanup of orphans)
    • Auto-destroy after 30 minutes of inactivity
    • Manual container control with "Stop Container" button
    • Warm containers for near-instant compilation
  • Advanced File Explorer:
    • Subfolder and nested file support.
    • Drag-and-drop file moving.
    • Inline renaming and deletion (with confirmation).
    • Cloud upload for images and .tex files.
  • Integrated Version Control: Automatic Git commits on every compilation. Users can also configure remote URLs to push their projects to external servers (GitHub, GitLab, etc.).
  • Pro UI/UX:
    • Modern Dark Mode interface.
    • Resizable Layout: Drag headers to customize the widths of the Sidebar, Editor, and Preview panes.
    • Inline Diagnostics: LaTeX errors and warnings appear directly in the editor as underlined text with "jump to error" functionality.
    • Compilation Log Panel: Resizable bottom panel with ANSI color coding for errors/warnings
    • PDF Preview: Embedded PDF viewer with "Open in New Tab" fallback
  • Multi-User Project System:
    • Project dashboard with grid view
    • Create, share, and manage projects
    • Collaborator management by email
    • Public/private project visibility
    • Owner/collaborator/viewer permission levels
  • Security & Persistence:
    • JWT-based authentication.
    • Persistent user storage in /projects/users.json.
    • Automatic disk export of all project files for local backup.

🛠 Tech Stack

Frontend

  • Framework: React 19 (TypeScript)
  • Editor: CodeMirror 6 with LaTeX (stex) mode.
  • Collaboration: Yjs, y-websocket, y-codemirror.next.
  • Tree View: react-arborist, react-icons.
  • Styling: Modern Vanilla CSS (Global Dark Mode).

Backend

  • Runtime: Node.js 20
  • Framework: Express (TypeScript)
  • Real-time Server: y-websocket (customized for multi-file support).
  • Container Orchestration: dockerode (Docker API for Node.js).
  • Version Control: simple-git.
  • File Parsing: latex-utensils (Structured LaTeX log parsing).
  • Uploads: multer.

Infrastructure

  • Orchestration: Docker Compose
  • Database: PostgreSQL (Metadata)
  • Compiler: Ephemeral texlive/texlive Docker containers.

🏁 Getting Started

  1. Build the base image:

    docker compose build latex-base
    
  2. Start the entire stack:

    docker compose up --build -d
    
  3. Access the application:

    • Web UI: http://localhost:5173
    • API: http://localhost:3000

Paperoot - Write, Collaborate, Compile.