Build resumes and cover letters with live preview, PDF export, and self-hosting.
not yet reviewed by publik. It is live now; the founder has not reviewed this version yet.

Every step written out. No terminal experience needed. Pick your setup.
[!IMPORTANT] Reactive Resume now lives at
reactive-resume/reactive-resumeon GitHub.
GHCR images publish toghcr.io/reactive-resume/reactive-resume.
Docker Hub stays atamruthpillai/reactive-resume.
Reactive Resume is a free and open-source resume builder for writing resumes and cover letters, checking your work, and tracking job applications.
Sponsored by
|
|
|
|
Create a free account, import an existing resume or start fresh, and see the finished page as you write. Download a PDF, Word, Markdown, or JSON file, or share your resume with a public link. You can also run the whole application on your own infrastructure.
You own your data. The codebase is open source under the MIT license, with no tracking, no ads, and no paid tier. Optional AI features use a provider you connect; hosting and provider usage may have their own costs.

Write, Design, and Check
Templates and Customization
Resume Checks
Documents and Cover Letters
Job Applications
AI Assistant
Import, Export, and Sharing
Privacy and Control
Azurill |
Bronzor |
Chikorita |
Ditto |
|
Gengar |
Glalie |
Kakuna |
Lapras |
|
Leafish |
Onyx |
Persian |
Pikachu |
Rhyhorn |
Ditgar |
Meowth |
Scizor |
Porygon |
Smeargle |
Use the hosted app to start writing, or build this checkout locally with Docker and Docker Compose:
# Clone the repository
git clone --depth=1 https://github.com/reactive-resume/reactive-resume.git reactive-resume
cd reactive-resume
# Create your local configuration
cp .env.example .env
# Edit .env: set AUTH_SECRET and a separate ENCRYPTION_SECRET.
# Generate each secret with: openssl rand -hex 32
# Build the app and start PostgreSQL, Redis, and SeaweedFS
docker compose up -d --build
# Open http://localhost:3000 in your browser
This builds the checked-out source. For a deployment using published images, follow the Docker guide. For source development, see the development setup guide.
| Category | Technology |
|---|---|
| Web app | React 19 SPA, TanStack Router, and Vite |
| Server | Hono on Node.js 24 or Cloudflare Workers |
| Language | TypeScript |
| Monorepo | pnpm and Turborepo |
| Database | PostgreSQL with Drizzle ORM |
| API | oRPC, OpenAPI REST, and MCP |
| Auth | Better Auth |
| Styling | Tailwind CSS |
| UI Components | Base UI + shared UI package |
| State Management | Zustand + TanStack Query |
| PDF rendering | Forme, with PDF.js for the viewer |
| Rich text | TipTap |
| Localization | Lingui |
The full documentation lives at docs.rxresu.me:
| Guide | Description |
|---|---|
| Getting started | First-time setup and basic usage |
| What's new in v6 | Changes and where familiar features moved |
| Checking your resume | Readability, job match, and writing reviews |
| Using the assistant | Ask for changes and review proposed edits |
| Writing a cover letter | Create a letter and link it to a resume |
| Tracking job applications | Saved jobs, stages, interviews, and insights |
| Exporting your resume | PDF, Word, Markdown, and JSON downloads |
| API and MCP | Connect scripts and external assistants |
| Self-hosting | Deploy on your own infrastructure |
| Migrating from v5 | Migrations and integration changes |
| Development setup | Local development environment |
| Project architecture | Codebase structure and package boundaries |
Reactive Resume runs the same application everywhere: PostgreSQL for data, plus storage for uploads. Pick the option that fits how much you want to manage.
| Option | Best for | Guide |
|---|---|---|
| Hostinger | A ready-made VPS with no setup | Hostinger guide |
| Vercel | Serverless, with managed database and storage | Vercel guide |
| Cloudflare Workers | Workers, R2 and your own PostgreSQL | Cloudflare guide |
| Docker and Kubernetes | Your own server, homelab or cluster | Docker · Kubernetes |
PDF generation in v6 uses Forme in the browser and on the server. No Browserless, Chromium, or external print service is needed. Legacy
PRINTER_*andBROWSERLESS_*environment variables can be removed.
The quickest way to get going is a 1-click deploy on Hostinger, starting at $6.49/month. Their VPS plans include a ready-made Reactive Resume template that provisions the Docker environment and brings the app up for you, with weekly backups and a Docker manager UI included — so you can skip the setup entirely.
See the Hostinger guide for what the template sets up and what to configure afterwards, such as email, your own domain, and turning off sign-ups.
Vercel provisions Neon PostgreSQL, private Blob storage, and Upstash Redis through its deployment wizard. Supply two persistent secrets and use the Services framework preset. Static assets run in the frontend service, and Hono serves the application routes and APIs from the backend service. See the Vercel guide for setup, limits, and optional SMTP/OAuth configuration.
Cloudflare deployment requires Workers Paid and uses Static Assets, private R2 storage, SQLite Durable Objects, and PostgreSQL through Hyperdrive. Supply an existing PostgreSQL database and apply migrations before deployment. See the Cloudflare guide for setup and runtime limits.
The application needs:
Published releases are available from Docker Hub and GitHub Container Registry (latest tracks the latest stable release):
# Docker Hub
docker pull amruthpillai/reactive-resume:latest
# GitHub Container Registry
docker pull ghcr.io/reactive-resume/reactive-resume:latest
See the Docker guide or Kubernetes guide for complete instructions. Running on a NAS? See the Synology and UGREEN guides.
Every setting is listed in the environment variables reference. Self-hosters can also configure shared AI and job-search services and single sign-on.
Back up your database and uploads and stop all v5 instances before applying v6 migrations. Old visual style rules require a manual conversion; API and MCP integrations also have changes. Follow Migrating from v5.
Reactive Resume is and always will be free and open source. If it has helped you land a job or saved you time, please consider supporting continued development:
Other ways to support:
Every contribution helps, whether it is a typo fix or a new feature.
git checkout -b feature/amazing-feature)git commit -m 'feat: add amazing feature')git push origin feature/amazing-feature)See the development setup guide for how to run the project locally.
Maintainers review the status: needs triage queue
weekly. Triaged bugs become status: confirmed; feature proposals become status: accepted; reports that need details become
status: needs info.
MIT — do whatever you want with it.