Own productLive
German Letter
DIN 5008 letters in the browser, ready for a window envelope.
- Role
- Design and engineering
- Year
- 2026

Overview
Writing a formal letter in Germany means following DIN 5008: where the return address goes, where the recipient sits so it shows through the envelope window, how the date and references line up. German Letter does the layout, so the writer only fills in what the letter says.
It started as a Typst template we use for our own letters and grew into a web app on the same template. The page typesets the letter in the browser and hands back a PDF; there is no account, no server and nothing stored beyond a draft in that browser.
Highlights
- Live preview of the real PDF as you type
- DIN 5008 Form B, so the address fits a DL or C6/5 window envelope
- Letters in German or English, with the right salutation, closing and date format
- Reference rows, attachments and an optional signature image
- The draft stays in the browser until you clear it; the signature is never stored
How it's built
- Typst compiled to WebAssembly with typst.ts, running in a Web Worker so the form stays responsive
- The same template the command-line archive uses, kept compiling on the Typst version typst.ts bundles
- A Content-Security-Policy that only allows connections to its own origin, so the privacy claim is checkable in DevTools
- The build fails if anything from the private sender profiles or archived letters reaches the bundle
- Served as static assets from a Cloudflare Worker, deployed from main
Stack · 5
- TypeScript
- React
- Vite
- Cloudflare
- typst