RenderCV PDF API
by: Tomás Ospina.
Overview
A FastAPI service that renders a CV written in RenderCV YAML syntax into a finished PDF, exposed both as an HTTP endpoint and as an interactive web editor with live preview.

Problem & Solution
Keeping a CV in version control means keeping it in text — but text is not what anyone wants to receive. This service closes that gap: the CV lives as YAML, and any client that can POST gets back a typeset PDF.
RenderCV 2.x compiles through Typst rather than LaTeX, which is what makes the whole thing containerisable in a sane image size — no TeX Live install, no font package archaeology.
Technical Specifications
| Item | Detail |
| ———– | ———————————————————- |
| Runtime | Python 3.10+ (built on 3.13) |
| Framework | FastAPI + Uvicorn, Swagger UI at /docs |
| Renderer | rendercv[full] 2.x — Typst compiler, no LaTeX dependency |
| Interface | Web editor at / with YAML input and PDF preview |
| Deployment | Docker + Docker Compose, Caddy as the reverse proxy |
My Role & Key Contributions
- Built the FastAPI service and the YAML → PDF rendering endpoint.
- Wrote the browser editor with live preview so the API is usable without a client.
- Containerised the service and put it behind Caddy for TLS and routing.
What I Learned
Choosing the Typst-based path over LaTeX turned a multi-gigabyte image into a practical deployment — the toolchain decision mattered more here than anything in the application code.
🔒 Private repository — happy to walk through the code on request.