Skip to content

zurefx/repdown

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RepDown Logo

RepDown

A collaborative Markdown β†’ PDF report editor built for security professionals

Node.js License Platform

Write your pentest reports in Markdown. Compile to professional PDF with XeLaTeX, pdfLaTeX or wkhtmltopdf. Collaborate in real-time.


RepDown Dashboard

✨ Features

  • Markdown-first editor β€” write in clean Markdown with live syntax highlighting
  • Multi-engine PDF compilation β€” XeLaTeX Β· pdfLaTeX Β· LuaLaTeX Β· wkhtmltopdf
  • Real-time collaboration β€” multiple operators edit the same report simultaneously via WebSocket
  • Project management β€” dashboard with search, tags, templates and stats
  • ZIP import/export β€” portable project archives, bulk backup of all projects
  • Smart error reporting β€” YAML frontmatter validation, LaTeX error parsing with actionable hints
  • 6 built-in templates β€” OSCP, Red Team, Corporate Blue, Minimalist, Thesis, OSINT
  • No cloud, no account β€” runs entirely on your local machine

πŸ“Έ Screenshots

Dashboard Project Dashboard Editor Markdown Editor
PDF Preview Live PDF Preview Templates Template Gallery

πŸ—‚ Project Structure

repdown/
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ index.js              # Express + Socket.io entry point
β”‚   β”œβ”€β”€ database.js           # SQLite via better-sqlite3
β”‚   └── routes/
β”‚       β”œβ”€β”€ projects.js       # CRUD + ZIP import
β”‚       β”œβ”€β”€ files.js          # File read/write per project
β”‚       β”œβ”€β”€ compile.js        # pandoc + LaTeX pipeline
β”‚       β”œβ”€β”€ templates.js      # Template discovery
β”‚       └── backup.js         # Bulk ZIP backup
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ index.html            # Dashboard SPA
β”‚   β”œβ”€β”€ editor.html           # Editor SPA
β”‚   β”œβ”€β”€ styles.css            # Shared dark theme
β”‚   └── image.png             # App logo
β”œβ”€β”€ templates/                # Built-in report templates
β”‚   β”œβ”€β”€ oscp-purple/
β”‚   β”œβ”€β”€ redteam-dark/
β”‚   β”œβ”€β”€ corporate-blue/
β”‚   β”œβ”€β”€ minimalist/
β”‚   β”œβ”€β”€ thesis-style/
β”‚   └── osint-report/
β”œβ”€β”€ projects/                 # Created at runtime (gitignored)
β”œβ”€β”€ data/                     # SQLite DB (gitignored)
β”œβ”€β”€ build.sh                  # Install + launch script
β”œβ”€β”€ run.sh                    # CLI compile runner
└── deps.sh                   # System dependency installer

⚑ Quick Start

1 β€” Clone the repository

git clone https://github.com/zurefx/repdown.git
cd repdown

2 β€” Install system dependencies

Run the auto-detect installer β€” it detects your distro and installs everything needed:

chmod +x deps.sh
./deps.sh
Manual install by distro

Debian / Ubuntu / Kali / Parrot

sudo apt update
sudo apt install -y curl unzip git pandoc \
  texlive-xetex texlive-latex-extra \
  texlive-fonts-recommended texlive-fonts-extra \
  wkhtmltopdf
# Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

Arch / Manjaro / EndeavourOS

sudo pacman -S --noconfirm curl unzip git pandoc \
  texlive-xetex texlive-latexextra \
  texlive-fontsrecommended nodejs npm
# wkhtmltopdf via AUR
yay -S wkhtmltopdf-static

Fedora / RHEL / Rocky / Alma

sudo dnf install -y curl unzip git pandoc \
  texlive-xetex texlive-collection-latexextra \
  texlive-collection-fontsrecommended
# Node.js 20
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo dnf install -y nodejs

3 β€” Build and launch

chmod +x build.sh
./build.sh

This single command:

  • Verifies all dependencies
  • Runs npm install (only if node_modules is missing)
  • Creates required directories
  • Starts the RepDown server

4 β€” Open in browser

http://localhost:3000

Port can be overridden: REPDOWN_PORT=8080 ./build.sh


πŸ–Š Editor Keybindings

Text Formatting

Action Shortcut
Bold Ctrl+B
Italic Ctrl+I
Strikethrough Ctrl+D
Inline Code `Ctrl+``
Code Block `Ctrl+Shift+``
Link Ctrl+K

Structure

Action Shortcut
Heading 1 Ctrl+1
Heading 2 Ctrl+2
Heading 3 Ctrl+3
Bullet List Ctrl+U
Numbered List Ctrl+O
Blockquote Ctrl+Q
Horizontal Rule Ctrl+R
Insert Table Ctrl+T

File & Compile

Action Shortcut
Save Ctrl+S
Compile PDF Ctrl+Enter
Export ZIP Ctrl+Shift+E

Search & Replace

Action Shortcut
Find (live) Ctrl+F
Find & Replace Ctrl+H
Next match Enter
Previous match Shift+Enter
Close search Esc

Editor

Action Shortcut
Undo Ctrl+Z
Redo Ctrl+Y
Select All Ctrl+A
Indent Tab
Outdent Shift+Tab
Toggle Comment Ctrl+/

πŸ“„ Report Format

Reports are written in Markdown with a YAML frontmatter block:

---
title: "OSCP Penetration Test Report"
author: "Operator"
date: "2025-01-01"
target: "10.10.10.X"
---

# Executive Summary

This document presents the results of a penetration test...

## Scope

| Item | Value |
|------|-------|
| Target IP | 10.10.10.X |
| Engagement | Internal Pentest |
| Duration | 1 day |

## Findings

### Critical β€” Remote Code Execution

**CVSS Score:** 9.8  
**Affected Host:** 10.10.10.5

![Proof of Concept](img/poc.png)

Tip: All images must be placed in the img/ folder inside your project and referenced as img/filename.png


πŸ—œ Import & Export

Export a project as ZIP

Click ZIP in the editor topbar β€” downloads the entire project as a portable archive.

Import a ZIP

From the dashboard, click Import .zip and upload any RepDown project archive.

Backup all projects

Click Backup All in the dashboard topbar β€” downloads a master ZIP containing one ZIP per project:

repdown-backup-20250303.zip
  β”œβ”€β”€ OSCP Report (abc12345).zip
  β”œβ”€β”€ Red Team Engagement (def67890).zip
  └── ...

πŸ–₯ CLI Usage

Compile a project directly from the terminal:

# Basic usage (XeLaTeX by default)
./run.sh <project-id>

# Specify engine
./run.sh <project-id> pdflatex
./run.sh <project-id> lualatex
./run.sh <project-id> wkhtmltopdf

# List all projects
curl http://localhost:3000/api/projects | python3 -m json.tool

The CLI runner automatically:

  • Starts the server if it's not already running
  • Validates YAML frontmatter before compiling
  • Parses LaTeX/pandoc errors and shows actionable hints

Example error output:

  RepDown β€” Compile Runner
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  βœ“ Server already running on port 3000

  Project : d8d3297b-19c7-4ceb-9f5b-607d62d9f8bf
  Engine  : xelatex

  βœ— Compilation failed

  β–Έ Missing LaTeX Package
    File 'somepackage.sty' not found
    β†’ Install: sudo tlmgr install somepackage

🎨 Templates

Template Description Best for
oscp-purple Dark purple header, clean body OSCP / HTB reports
redteam-dark Aggressive dark styling Red team engagements
corporate-blue Professional corporate layout Client deliverables
minimalist Clean, no-frills white Academic / internal
thesis-style Chapter-based long form Research / thesis
osint-report Info-dense, grid layout OSINT investigations

Templates


πŸ”§ Configuration

Environment Variables

Variable Default Description
REPDOWN_PORT 3000 HTTP server port

Custom Templates

Add a folder to templates/ with the following structure:

templates/my-template/
β”œβ”€β”€ report.md          # starter content
β”œβ”€β”€ template.json      # metadata
β”œβ”€β”€ img/               # template images
β”œβ”€β”€ lua/               # pandoc lua filters
└── config/            # pandoc/LaTeX config

template.json format:

{
  "id": "my-template",
  "name": "My Template",
  "description": "Short description shown in the UI",
  "tags": ["custom", "pentest"]
}

πŸ— Tech Stack

Layer Technology
Backend Node.js + Express
Real-time Socket.io
Database SQLite (better-sqlite3)
Editor CodeMirror 5
PDF pipeline pandoc + XeLaTeX / pdfLaTeX / LuaLaTeX
Archive archiver + unzipper
File upload multer

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Commit your changes: git commit -m 'Add my feature'
  4. Push the branch: git push origin feature/my-feature
  5. Open a Pull Request

πŸ“œ License

MIT Β© RepDown Contributors


Built for operators, by operators.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors