Build professional German-style resumes and cover letters — right in your browser, no sign-up required.
Live Demo · Architecture · Contributing
Too many simple tools cost money for no reason. This project exists because creating a CV or cover letter shouldn't require a subscription. It's free, it's open-source, and it always will be.
This application runs entirely in your browser. There is no backend server, no database, and no cloud storage involved.
- No data collection — Your personal information, resume content, and cover letters are never transmitted to any server. Period.
- No accounts, no sign-up — There is nothing to register for. Open the page and start working.
- Browser storage only — All data is persisted in your browser's
localStorage. It never leaves your device unless you explicitly export it. - No analytics, no tracking, no cookies — The application does not use any third-party analytics, tracking scripts, or advertising cookies.
- Fully auditable — The entire source code is open. You can verify every line of what runs on your machine.
Your data belongs to you. This tool simply helps you format it.
- German-style Lebenslauf & Anschreiben — DIN 5008 compliant cover letters, German resume conventions built-in
- Multiple layouts — Sidebar left/right, full-width, top-header
- Design presets — Classic, modern, minimal — or fully customize colors, fonts, spacing
- Live preview — See changes instantly as you type
- PDF export — Print-ready PDF via Paged.js, pixel-perfect pagination
- Cover letter builder — Sender/recipient, salutation, paragraphs, signature (upload or draw)
- Bilingual UI — German and English interface
- 100% client-side — Static site hosted on GitHub Pages, no server required
- No sign-up, no paywall, no tracking
No installation needed — just open the app in your browser:
https://oemererguen.github.io/lebenslauf-anschreiben-creator/
Everything runs client-side. Your data stays in your browser.
If you want to develop or self-host:
git clone https://github.com/OemerErguen/lebenslauf-anschreiben-creator.git
cd lebenslauf-anschreiben-creator
pnpm install
pnpm devOpen http://localhost:5173.
| Command | Description |
|---|---|
pnpm dev |
Start Vite dev server (port 5173) |
pnpm build |
Production build |
pnpm typecheck |
TypeScript check across all packages |
pnpm lint |
ESLint (flat config, v9) |
pnpm format |
Prettier |
pnpm test |
Run all tests (Vitest) |
pnpm test:e2e |
Playwright e2e tests |
pnpm clean |
Remove dist/cache artifacts |
| Layer | Tech |
|---|---|
| Framework | React 19, Vite 8 |
| State | Zustand with localStorage persistence |
| Styling | Tailwind CSS (app UI), CSS custom properties (CV rendering) |
| Rich text | TipTap |
| Paged.js polyfill in isolated iframe | |
| i18n | i18next / react-i18next |
| Schemas | Zod (Extended JSON Resume) |
| Monorepo | pnpm workspaces, Turbo |
| CI/CD | GitHub Actions, GitHub Pages |
packages/
├── core/ # Zod schemas, types, migrations, sample data
├── components/ # React CV components (Photo, SkillsList, etc.)
├── layouts/ # Layout definitions (sidebar-left, full-width, etc.)
├── layout-engine/ # Assembles layout + components + tokens → HTML + CSS
├── presets/ # Built-in design presets (classic, modern, minimal)
├── renderer/ # PagedRenderer: iframe + Paged.js → PDF
└── app/ # Vite + React editor UI
See docs/architecture.md for the full architecture guide.
Contributions are welcome and encouraged! Whether it's a bug fix, new feature, translation, or layout — every PR matters.
See the Contributing Guide to get started.
This project is and always will be free and open-source. If you find it useful and want to support ongoing development, consider buying me a coffee.
Made with care by Ömer Ergün
Essential tools should be free. Let's build them together.