A free, no-login resume editor built with Next.js. Write your resume as structured data, preview it live, switch layouts without losing content, and export it as PDF or JSON.
- Structured resume draft with typed sections for profile, summary, experience, projects, education, skills, and more
- Live preview with switchable layouts and presentation settings
- JSON import/export for portable resume data
- Client-side draft persistence with
localStorage - Server-side PDF export powered by Puppeteer locally and Cloudflare Browser Run in production
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS 4
- Zustand
- React Hook Form + Zod
- TipTap
- Vitest
pnpm install
pnpm devOpen http://localhost:3000.
pnpm dev
pnpm build
pnpm start
pnpm lint
pnpm test
pnpm test:watch
pnpm typecheck- The main editor lives at
/ - The PDF render target lives at
/resume-pdf - PDF export is handled by
POST /api/export-pdf - Resume drafts are stored locally in the browser and can be exported/imported as JSON
Optional:
PDF_EXPORT_PROVIDER=auto
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_BROWSER_RUN_API_TOKEN=
CLOUDFLARE_BROWSER_RUN_KEEP_ALIVE_MS=60000
PDF_EXPORT_TRUSTED_ORIGINS=https://example.com,https://admin.example.comPDF export uses local Puppeteer in development by default. In production, set PDF_EXPORT_PROVIDER=cloudflare-browser-run or leave auto and provide the Cloudflare Browser Run credentials above. Same-origin requests are allowed automatically; use PDF_EXPORT_TRUSTED_ORIGINS only for intentional cross-origin callers.
src/
app/ # Route entrypoints and route handlers
components/ui/ # Shared UI primitives
hooks/ # Reusable app-level hooks
lib/ # App-wide utilities
test/ # Test setup
features/resume-editor/
domain/ # Draft model, schema, presentation, rich text, section metadata
editor/ # Editor UI, section panels, shell, controller hooks
forms/ # Shared form helpers and schema adapters
preview/ # Layouts, live preview, PDF-facing rendering
server/ # Server-only PDF generation
state/ # Zustand store and draft state helpers