This repository contains an Astro-based multilingual CV generation system that creates both web pages and professional PDFs from TOML configuration files.
Complete development workflow (like GitHub Actions pipeline):
# 1. Install dependencies
npm ci
# 2. Generate PDFs (the site links to them under public/pdfs/)
./scripts/generate_cv.sh config.cv.toml public/pdfs/Michael_Boiman_CV_DE.pdf de
./scripts/generate_cv.sh config.cv.toml public/pdfs/Michael_Boiman_CV_EN.pdf en
# 3. Build the website
npm run build
# 4. Start development server
npm run devThen open:
- German CV: http://localhost:4321/de/
- English CV: http://localhost:4321/en/
public/pdfs/.
- CV Content:
config.cv.toml— all CV data (profile, experience, projects, skills) with multilingual support, parsed bysrc/lib/toml-loader.ts - UI Strings:
src/lib/i18n.ts— localized interface strings (DE/EN) - Custom Configurations: Can be created for specific CV variants
- Languages: German (
de) and English (en), routed under/de/and/en/(Astro i18n,prefixDefaultLocale: true)
src/
├── components/ # Astro components (CVPage, AgentWidget, StoryPage, DarkModeToggle)
├── layouts/ # Page layouts
├── lib/ # toml-loader, i18n, markdown helpers
└── pages/
├── de/ # German routes (index, story, datenschutz, impressum)
└── en/ # English routes
public/ # Static assets (fonts, images, generated PDFs)
- PDF Generation:
scripts/html_to_pdf.jsuses Puppeteer to generate PDFs directly from the TOML config (own print template, independent of the web view) - Website Build:
astro buildrenders the static multilingual site - Static Assets: PDFs live in
public/pdfs/and are served as downloadable assets
# Generate PDFs with language specification
./scripts/generate_cv.sh <config.toml> <output.pdf> <language>
# Examples:
./scripts/generate_cv.sh config.cv.toml cv_german.pdf de
./scripts/generate_cv.sh config.cv.toml cv_english.pdf en
# Standalone mode (uses only the specified config)
./scripts/generate_cv.sh config.custom.toml output.pdf de --standalone- Professional A4 layout optimized for printing
- Compressed images for smaller file sizes
- Multilingual support (German/English)
- Direct generation from TOML configuration (no dependency on the built site)
npm ci # install dependencies
npm run dev # Astro dev server (http://localhost:4321)
npm run build # production build to dist/
npm run preview # preview the production build
# Quick PDF generation for testing
./scripts/generate_cv.sh config.cv.toml test_output.pdf deThe CV page embeds a chat widget (src/components/AgentWidget.astro) that talks
to a self-hosted A2A agent (JSON-RPC + SSE). The agent answers questions about
experience and stack, reads availability as free/busy, and takes meeting
requests that are only answered after personal approval.
The GitHub Actions workflow (.github/workflows/gh-pages.yml) automatically:
- Installs dependencies (
npm ci) - Generates PDFs in correct order
- Builds the Astro site
- Deploys to GitHub Pages
A manual preview workflow exists for feature branches (preview-deploy.yml).
Generate professional applications with tailored cover letters that map CV qualifications directly to job requirements.
# Interactive workflow via Claude Command
/bewerbung
# Direct script usage
./scripts/generate_application.sh config.cv.toml bewerbung_firma.pdf de cover_letter_data.json- Requirement Mapping: Cover letter shows exactly where in the CV each qualification is found
- Professional Layout: Consistent design between cover letter and CV
- AI-Assisted: Claude Command guides through the entire process
- Use
/bewerbungcommand → Interactive process with Claude - Analyze job posting → Extract requirements and company info
- Generate cover letter data → Create requirement mapping
- Generate application PDF → Cover letter + CV combined
The generated cover letter includes:
- Header: Same design as CV for consistency
- Company-specific introduction
- Requirement Mapping Section:
- "You need: [Requirement]"
- "I offer: [Your qualification]"
- "See CV: [Page reference]"
- Professional closing
The result is a professional PDF with the cover letter as page 1 and the complete CV following.
- Node.js and npm (Astro build + PDF generation via Puppeteer)
- Dependencies are auto-installed via
npm ci