Selbst gehosteter Dienst
amruthpillai/reactive-resume avatar
amruthpillai/reactive-resume

Reactive Resume: Lebensläufe selbst hosten und als PDF exportieren

Reactive Resume ist ein selbst gehosteter Lebenslauf-Builder mit bearbeitbaren Layouts, PDF-Export, Import-Tools und datenschutzorientierter lokaler Kontrolle.

42.957 Sterne4.748 ForksTypeScriptMIT

Auf einen Blick

Was ist das?
Reactive Resume ist ein quelloffener Lebenslauf-Builder mit 15 Vorlagen, Export nach PDF, JSON und DOCX sowie Selbst-Hosting per Docker. Der Beitrag ordnet den Wechsel zur clientseitigen PDF-Erzeugung ab v5.1.0 ein.
Für wen ist es gedacht?
Reactive Resume passt zu allen, die Lebensläufe selbst hosten und ihre Daten keinem kommerziellen Dienst überlassen wollen, außerdem zu Bewerbern, die ohne Konto beginnen möchten. Wer einen rein quelltextbasierten Arbeitsweg bevorzugt oder keine PostgreSQL-Instanz betreiben will, fährt mit dem direkten JSON-Resume-Format besser.
Darf ich es kommerziell nutzen?
Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 3 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich TypeScript, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Reactive Resume zwischen rxresu.me und eigener Infrastruktur

Reactive Resume ist ein Lebenslauf-Builder, der kostenlos und quelloffen ist. Die Repository-Beschreibung hebt vier Punkte hervor: Selbst-Hosting, bearbeitbare Layouts, PDF-Export und datenschutzorientierte lokale Kontrolle. Für die grundlegende Nutzung ist laut README kein Konto nötig. Wer mehr Kontrolle will, betreibt die gesamte Anwendung auf der eigenen Infrastruktur. Das Projekt ist in TypeScript geschrieben und steht unter der MIT-Lizenz.

Die gehostete Ausgabe liegt unter rxresu.me, die Dokumentation unter docs.rxresu.me. Finanziert wird das Projekt über Sponsoren. Das README nennt Atlas Cloud namentlich und verweist außerdem auf GitHub Sponsors und Open Collective. Übersetzungen laufen über Crowdin, Fragen über einen Discord-Server. Als letzte Veröffentlichung im Material erscheint v5.2.9 vom 27. August 2026, davor liegen v5.2.8 und v5.2.7.

15 Vorlagen von Azurill bis Scizor und die Structured Style Rules

Für das Layout stehen nach README 15 Vorlagen bereit. Namentlich aufgeführt sind Azurill, Bronzor, Chikorita, Ditto, Gengar, Glalie, Kakuna, Lapras, Leafish, Onyx, Pikachu, Rhyhorn, Ditgar, Meowth und Scizor. Die Namen sagen nichts über das jeweilige Layout, die Auswahl erfolgt über Vorschaubilder auf der Projektseite.

Zur Feinsteuerung nennt das README die Papierformate A4 und Letter, einstellbare Farben, Schriften und Abstände sowie Structured Style Rules für die Gestaltung von Abschnitten und Text. Wie diese Regeln geschrieben werden, steht dort nicht. Die Syntax ist in der README weder definiert noch an einem Beispiel gezeigt, wer damit arbeiten will, muss auf die Dokumentation ausweichen.

Live-Vorschau und Export nach PDF, JSON und DOCX

Der Editor zeigt eine Live-Vorschau während der Eingabe. Abschnitte lassen sich per Drag-and-Drop umordnen, eigene Abschnitte sind für beliebige Inhaltstypen möglich, und für Text steht ein Rich-Text-Editor bereit. Der Export erfolgt wahlweise als PDF, als JSON oder als DOCX.

Importiert wird das JSON-Resume-Format, geteilt wird über eindeutige Links. Eine Schritt-für-Schritt-Anleitung für den Editor oder Abbildungen der Exportergebnisse enthält die README nicht. Für die Exportoptionen verweist sie auf den Leitfaden unter docs.rxresu.me/guides/exporting-your-resume, der PDF- und JSON-Export behandelt.

Datenhoheit mit PostgreSQL, SeaweedFS und Löschung per Klick

Datenschutz wird als Kernprinzip formuliert. Standardmäßig gibt es laut README kein Tracking und keine Analyse, Nutzer können ihre Daten jederzeit vollständig exportieren und mit einem Klick dauerhaft löschen. Wie die Löschung technisch abläuft, etwa ob hochgeladene Dateien im Speicher ebenfalls entfernt werden, beschreibt das README nicht.

Beim Selbst-Hosting besteht der Stack aus PostgreSQL für Nutzerdaten und Lebensläufe sowie optional aus SeaweedFS als S3-kompatiblem Speicher für Datei-Uploads. Die README führt SeaweedFS ausdrücklich als optional. Ob die Komponente bei einem Betrieb ohne Uploads vollständig entfallen kann, geht aus dem Material nicht hervor.

Schnellstart mit docker compose up -d auf Port 3000

Der Schnellstart setzt Docker voraus. Zuerst wird das Repository geholt: git clone --depth=1 https://github.com/amruthpillai/reactive-resume.git. Danach folgen cd reactive-resume und docker compose up -d. Anschließend ist die Anwendung unter http://localhost:3000 erreichbar. Der flache Klon mit der Option --depth=1 spart dabei die vollständige Historie.

Für den Betrieb ohne lokalen Klon gibt es fertige Images. Sie liegen auf Docker Hub unter amruthpillai/reactive-resume:latest und in der GitHub Container Registry unter ghcr.io/amruthpillai/reactive-resume:latest. Umgebungsvariablen, Selbst-Hosting und Entwicklungsumgebung sind nicht Teil der README, sondern der Dokumentation mit eigenen Abschnitten für den Docker-Einsatz und die lokale Entwicklung.

Clientseitige PDF-Erzeugung ab v5.1.0 statt Browserless

Ein Punkt mit praktischen Folgen ist der Wechsel der PDF-Erzeugung. Von v5.1.0 an läuft sie vollständig im Browser über @react-pdf/renderer. Neue Installationen brauchen damit kein Browserless, kein Chromium und keinen externen Druckdienst mehr. Die Umgebungsvariablen aus den Blöcken PRINTER_ und BROWSERLESS_ werden nicht mehr gelesen und können laut README aus der .env-Datei entfernt werden.

Der Weg über einen externen Druckdienst war die frühere Alternative. Er verlagerte das Rendern auf einen Server mit Chromium und damit auf eine weitere Komponente, die gepflegt und abgesichert werden musste. Beim Aufrüsten einer bestehenden Installation sind genau diese beiden Variablenblöcke der Anlass, die eigene Konfiguration einmal vollständig durchzusehen.

TanStack Start, Drizzle ORM, ORPC und Better Auth im Stack

Die Tabelle zum Technologie-Stack ist ungewöhnlich aussagekräftig. Als Framework dient TanStack Start mit React 19 und Vite, die Laufzeit ist Node.js, die Sprache TypeScript. Die Datenbank ist PostgreSQL, angesprochen über Drizzle ORM. Die API läuft über ORPC als typsicheres RPC, die Anmeldung über Better Auth.

Für das Aussehen sorgt Tailwind CSS, die Oberflächenbausteine kommen aus Base UI und einem shadcn-artigen Paket, den Zustand verwalten Zustand und TanStack Query. Warum diese Bausteine gewählt wurden und wie sie im Betrieb zusammenspielen, erläutert die README nicht. Dafür ist die Architekturseite unter docs.rxresu.me/contributing/architecture vorgesehen.

KI-Anbindung, Passkeys und die Lücken der README

Zu den Extras zählen eine KI-Anbindung an OpenAI, Google Gemini und Anthropic Claude, Mehrsprachigkeit, das Teilen über eindeutige Links, ein Dark Mode sowie Passkeys und Zwei-Faktor-Authentifizierung. Welche Konfigurationsschlüssel für die drei KI-Anbieter nötig sind, steht nicht in der README, sondern liegt in der Selbst-Hosting-Dokumentation.

Als Alternative zum visuellen Editor bietet sich das JSON-Resume-Format an, das Reactive Resume selbst als Importpfad nennt. Der Unterschied liegt im Ansatz: Die Datei ist quelltextnah und lässt sich ohne PostgreSQL und ohne ORPC-Ebene in einem Versionsverwaltungssystem führen, während Reactive Resume Datenbank und grafische Oberfläche dazwischen schaltet. Zur Werkzeugkette rund um das Format macht das Material keine Angaben.

Redaktionelles Fazit

Reactive Resume passt zu allen, die Lebensläufe selbst hosten und ihre Daten keinem kommerziellen Dienst überlassen wollen, außerdem zu Bewerbern, die ohne Konto beginnen möchten. Wer einen rein quelltextbasierten Arbeitsweg bevorzugt oder keine PostgreSQL-Instanz betreiben will, fährt mit dem direkten JSON-Resume-Format besser. Vor einer Installation sollte geprüft werden, ob die eigene .env-Datei noch Variablen aus den Blöcken PRINTER_ oder BROWSERLESS_ enthält, die seit v5.1.0 nicht mehr gelesen werden.

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community-Notizen

Community-Notizen