Lebenslauf
Source files for my CV and cover letter written in Typst — a modern typesetting language. Clean, version-controlled, and trivially re-compilable to PDF.



The source for my CV and cover letter, written in Typst rather than LaTeX or a word processor. Typst's faster compile loop and more approachable markup make iterating on layout (margins, type scale, section spacing) quick, while still producing a precisely typeset PDF. Keeping it as plain text in git rather than a binary .docx means every revision is diffable and the whole history of edits is preserved — and regenerating an up-to-date PDF for a specific application is a single `typst compile` away, with no risk of layout drift between versions the way copy-pasting into a template can introduce.
Architecture
graph LR
Source["lebenslauf.typ / lebenslauf_eng.typ"] -->|typst compile| PDF[("lebenslauf.pdf")]Under the hood
Skill bars are drawn with Typst's layout primitives directly — no image assets, just a filled background box and a proportionally-sized overlay box.
let skill-with-level(name, level, icon) = {
let max-width = 100%
let bar-height = 4pt
block(spacing: 0.5em)[
#if icon != "" {
fa-icon(icon, font: "Font Awesome 6 Brands")
h(0.5em)
}
#name
#box(width: max-width)[
#box(width: 100%, height: bar-height, fill: rgb("#e0e0e0"), radius: bar-height / 2)
#place(top, box(width: level * 100%, height: bar-height, fill: primary-color, radius: bar-height / 2))
]
]
}