A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
$ npx -y skills add amruthpillai/reactive-resume --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: amruthpillai/reactive-resume
What's inside
Reactive Resume makes building resumes straightforward. Pick a template, fill in your details, and export to PDFโno account required for basic use. For those who want more control, the entire application can be self-hosted on your own infrastructure.
Built with privacy as a core principle, Reactive Resume gives you complete ownership of your data. The codebase is fully open-source under the MIT license, with no tracking, no ads, and no hidden costs.
Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Thank you to every sponsor who helps fund hosting, maintenance, and continued development for the community.
Atlas Cloud supports Reactive Resume as a project sponsor. Atlas Cloud provides a unified AI platform for developers, with access to hundreds of models for chat, image generation, video generation, media processing, and GPU cloud workloads through one API key, one endpoint, and one billing account.
If your company would like to sponsor Reactive Resume, email hello@amruthpillai.com.
Resume Building
Templates
Privacy & Control
Extras
The quickest way to run Reactive Resume locally:
# Clone the repository
git clone --depth=1 https://github.com/amruthpillai/reactive-resume.git
cd reactive-resume
# Start all services
docker compose up -d
# Access the app
open http://localhost:3000
For detailed setup instructions, environment configuration, and self-hosting guides, see the documentation.
| Category | Technology |
|---|---|
| Framework | TanStack Start (React 19, Vite) |
| Runtime | Node.js |
| Language | TypeScript |
| Database | PostgreSQL with Drizzle ORM |
| API | ORPC (Type-safe RPC) |
| Auth | Better Auth |
| Styling | Tailwind CSS |
| UI Components | Base UI + shadcn-style package |
| State Management | Zustand + TanStack Query |
Comprehensive guides are available at docs.rxresu.me:
| Guide | Description |
|---|---|
| Getting Started | First-time setup and basic usage |
| Self-Hosting | Deploy on your own server |
| Development Setup | Local development environment |
| Project Architecture | Codebase structure and patterns |
| Exporting Your Resume | PDF and JSON export options |
Reactive Resume can be self-hosted using Docker. The stack includes:
From v5.1.0 onwards โ PDF generation now runs entirely client-side via
@react-pdf/renderer. New deployments no longer require Browserless, Chromium, or any external print service as a dependency. ThePRINTER_*andBROWSERLESS_*environment variables are no longer read and can be removed from your.env.
Pull the latest image from Docker Hub or GitHub Container Registry:
# Docker Hub
docker pull amruthpillai/reactive-resume:latest
# GitHub Container Registry
docker pull ghcr.io/amruthpillai/reactive-resume:latest
See the self-hosting guide for complete instructions.
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:
Contributions make open-source thrive. Whether fixing a typo or adding a feature, all contributions are welcome.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)See the development setup guide for detailed instructions on how to set up the project locally.
MIT โ do whatever you want with it.
.design-sync/
build-css.mjs
config.json
conventions.md
NOTES.md
previews/
Accordion.tsx
Alert.tsx
AlertDialog.tsx
Attachment.tsx
Avatar.tsx
Badge.tsx
BrandIcon.tsx
Bubble.tsx
Button.tsx
ButtonGroup.tsx
ComboboxRoot.tsx
Command.tsx
ContextMenu.tsx
Dialog.tsx
DropdownMenu.tsx
FormItem.tsx
HoverCard.tsx
Input.tsx
InputGroup.tsx
Kbd.tsx
Label.tsx
Marker.tsx
Message.tsx
MessageScroller.tsx
Popover.tsx
ResizableGroup.tsx
ScrollArea.tsx
Separator.tsx
Sheet.tsx
Sidebar.tsx
Skeleton.tsx
Slider.tsx
Spinner.tsx
Switch.tsx
Tabs.tsx
Textarea.tsx
Toaster.tsx
Toggle.tsx
Tooltip.tsx
tw-entry.css
.dockerignore
.env.example
.github/
.well-known/
funding.json
FUNDING.yml
ISSUE_TEMPLATE/
1-bug-report.yml
2-feature-request.yml
config.yml
workflows/
autofix.yml
crowdin-sync.yml
docker-build.yml
e2e.yml
.gitignore
.markdownlint-cli2.yaml
.ncurc.cjs
.superpowers/
sdd/
pr-3274-review-followups-plan/
task-1-report.md
.vscode/
extensions.json
settings.json
AGENTS.md
apps/
server/
package.json
src/
app-version.ts
http/
app.test.ts
app.ts
auth.test.ts
auth.ts
headers.ts
health.ts
public-resume-pdf.test.ts
public-resume-pdf.ts
resume-pdf.test.ts
resume-pdf.ts
index.ts
mcp/
auth.ts
handler.ts
server.ts
openapi/
generate-spec.ts
generator.test.ts
generator.ts
handler.ts
metadata.test.ts
metadata.ts
rpc/
handler.ts
locale.ts
services/
stylesheet-preflight.test.ts
stylesheet-preflight.ts
startup/
checks.ts
static/
schema.test.ts
schema.ts
seo.test.ts
seo.ts
uploads.test.ts
uploads.ts
web.test.ts
web.ts
vite-env.d.ts
workers/
stylesheet-preflight-inspection.ts
stylesheet-preflight.test.ts
stylesheet-preflight.ts
tsconfig.json
tsdown.config.ts
turbo.json
vitest.config.ts
web/
components.json
index.html
lingui.config.ts
locales/
af-ZA.po
am-ET.po
ar-SA.po
az-AZ.po
bg-BG.po
bn-BD.po
ca-ES.po
cs-CZ.po
da-DK.po
de-DE.po
el-GR.po
en-GB.po
en-US.po
es-ES.po
fa-IR.po
fi-FI.po
fr-FR.po
he-IL.po
hi-IN.po
hu-HU.po
id-ID.po
it-IT.po
ja-JP.po
km-KH.po
kn-IN.po
ko-KR.po
lt-LT.po
lv-LV.po
ml-IN.po
mr-IN.po
ms-MY.po
ne-NP.po
nl-NL.po
no-NO.po
or-IN.po
pl-PL.po
pt-BR.po
pt-PT.po
ro-RO.po
ru-RU.po
sk-SK.po
sl-SI.po
sq-AL.po
sr-SP.po
sv-SE.po
ta-IN.po
te-IN.po
th-TH.po
tr-TR.po
uk-UA.po
uz-UZ.po
vi-VN.po
zh-CN.po
zh-TW.po
zu-ZA.po
package.json
public/
apple-touch-icon-180x180.png
favicon.ico
favicon.svg
fonts/
fira-sans-condensed-500.ttf
ibm-plex-serif-400.ttf
ibm-plex-serif-600.ttf
funding.json
icon/
dark.svg
light.svg
logo/
dark.svg
light.svg
manifest.webmanifest
maskable-icon-512x512.png
opengraph/
banner.jpg
features.jpg
logo.svg
photos/
sample-picture.jpg
pwa-192x192.png
pwa-512x512.png
pwa-64x64.png
robots.txt
screenshots/
mobile/
1-landing-page.webp
2-resume-dashboard.webp
3-builder-screen.webp
4-template-gallery.webp
web/
1-landing-page.webp
2-resume-dashboard.webp
3-builder-screen.webp
4-template-gallery.webp
sitemap.xml
sounds/
switch-off.mp3
switch-on.mp3
sponsors/
atlas-cloud-logo-black.svg
atlas-cloud-logo-white.svg
templates/
jpg/
azurill.jpg
bronzor.jpg
chikorita.jpg
ditgar.jpg
ditto.jpg
gengar.jpg
glalie.jpg
kakuna.jpg
lapras.jpg
leafish.jpg
meowth.jpg
onyx.jpg
pikachu.jpg
rhyhorn.jpg
scizor.jpg
pdf/
azurill.pdf
bronzor.pdf
chikorita.pdf
ditgar.pdf
ditto.pdf
gengar.pdf
glalie.pdf
kakuna.pdf
lapras.pdf
leafish.pdf
meowth.pdf
onyx.pdf
pikachu.pdf
rhyhorn.pdf
scizor.pdf
videos/
timelapse-v1.mp4
timelapse-v1.webp
src/
components/
animation/
comet-card.test.tsx
comet-card.tsx
count-up.test.tsx
count-up.tsx
spotlight.test.tsx
spotlight.tsx
text-mask.test.tsx
text-mask.tsx
input/
chip-input.test.tsx
chip-input.tsx
color-picker.test.tsx
color-picker.tsx
github-stars-button.test.tsx
github-stars-button.tsx
icon-picker.test.tsx
icon-picker.tsx
rich-input.test.ts
rich-input.tsx
rich-input.utils.ts
url-input.test.tsx
url-input.tsx
layout/
breakpoint-indicator.test.tsx
breakpoint-indicator.tsx
error-screen.test.tsx
error-screen.tsx
loading-screen.test.tsx
loading-screen.tsx
not-found-screen.test.tsx
not-found-screen.tsx
level/
combobox.test.tsx
combobox.tsx
display.test.tsx
display.tsx
typography/
combobox.test.tsx
combobox.tsx
font-display.tsx
get-next-weights.test.ts
get-next-weights.ts
ui/
combobox.test.tsx
combobox.tsx
copyright.test.tsx
copyright.tsx
donation-toast.test.tsx
donation-toast.tsx
dialogs/
api-key/
create.tsx
registry.tsx
schema.ts
auth/
change-password.tsx
disable-two-factor.tsx
enable-two-factor.tsx
registry.tsx
schema.ts
manager.tsx
renderer-registry.ts
renderers.tsx
resume/
import.test.ts
import.tsx
import.utils.ts
index.tsx
registry.tsx
schema.ts
sections/
award.tsx
certification.tsx
cover-letter.tsx
custom.test.ts
custom.tsx
education.tsx
experience.tsx
interest.tsx
language.tsx
profile.tsx
project.tsx
publication.tsx
reference.tsx
section-item-dialog.tsx
skill.tsx
summary-item.tsx
volunteer.tsx
template/
data.test.ts
data.ts
gallery.test.tsx
gallery.tsx
schemas.ts
store.test.ts
store.ts
features/
applications/
components/
application-actions-menu.tsx
application-ai-copilot.tsx
application-card.tsx
application-detail-sheet.tsx
application-form-sheet.tsx
board.tsx
file-attachment-field.tsx
import-applications-sheet.tsx
insights-view.tsx
table-view.tsx
csv.test.ts
csv.ts
insights.test.ts
insights.ts
queries.ts
tile-color.ts
types.ts
auth/
components/
social-auth.tsx
layout.tsx
pages/
forgot-password.tsx
login.tsx
register.tsx
reset-password.tsx
resume-password.tsx
verify-2fa.tsx
command-palette/
index.tsx
... 1318 moreFAQ
reactive-resume is a Claude Code plugin with 1 hand-picked skill for content work, indexed on Flowy. Install it with the command on its page. It includes resume-builder. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.