Theme System
A theme is a combination of template + variant:
theme: classic-navy# ^^^^^^^ ^^^^# | variant (color scheme)# template (layout)- Template = the HTML structure and typographic layout (
classic,compact,modern,technical). - Variant = a CSS file that defines colors, borders, and accents within that template.
All themes live in the open-source devresume-themes repo.
Available templates
Section titled “Available templates”| Template | Style |
|---|---|
classic | Traditional two-column layout with strong hierarchy. |
compact | Dense single-column. Good for technical CVs that fit on one page. |
modern | Clean single-column with generous whitespace. |
technical | Developer-focused, monospace accents. |
Available variants
Section titled “Available variants”| Template | Variants |
|---|---|
classic | dark, blue, navy, slate, burgundy |
compact | blue, charcoal, forest, navy, wine |
modern | navy, slate, teal, burgundy |
technical | light, dark, amber, ocean |
Eighteen themes total, all free. Set the full name in your YAML:
theme: technical-amberHow rendering works
Section titled “How rendering works”A rendered resume is built from three pieces:
<template>/template.html— Gohtml/templatewith{{.Name}},{{range .Sections}}, etc.<template>/themes/<variant>.css— color variables, typography, spacing for that variant.fonts/<font-id>/*.woff2— base64-inlined at render time for pixel-perfect output.
The HTML template has two placeholders that get substituted before Go-template parsing:
{{FONT_CSS}}—@font-facerules for the selected font.{{THEME_CSS}}— the selected variant CSS inlined verbatim.
The production backend and the local preview CLI produce byte-identical output, so what you see in the preview is exactly what production ships.
Picking a theme
Section titled “Picking a theme”Themes are cosmetic, not functional — every section type renders in every theme. Pick based on role and context:
classic-navy/classic-dark— general-purpose, looks professional in any industry.compact-*— when you have a lot of content and want one page.modern-*— when visual polish matters (design-adjacent roles, PM, marketing).technical-*— engineering roles that appreciate a developer aesthetic.
Want to build your own theme? See Contributing a Theme.