Contributing a Theme
All themes live in the open-source devresume-themes repo. Anyone can contribute, no access to the main devResume backend required.
You need Go 1.24 or newer (for the preview CLI) and git.
git clone https://github.com/STACK25/devresume-themes.gitcd devresume-themes/cligo run .The last command starts a local preview server at http://localhost:7171 that live-reloads
on every CSS, YAML, or font edit. It renders with the real bundled fonts so what you see
matches production exactly.
Full CLI flags and live-reload details are in the CLI README.
Workflow
Section titled “Workflow”1. Pick a template to build on
Section titled “1. Pick a template to build on”Four templates are available: classic, compact, modern, technical. Choose the one
whose layout is closest to what you want. You do not create a new template, only a new
variant inside an existing template.
2. Copy an existing variant as a starting point
Section titled “2. Copy an existing variant as a starting point”cp classic/themes/navy.css classic/themes/my-theme.cssVariant CSS files only define colors, borders, and accents. Layout comes from the parent template’s HTML. See any existing variant for the full list of CSS variables the templates consume.
3. Iterate with live reload
Section titled “3. Iterate with live reload”In one terminal:
cd cli && go run .Edit classic/themes/my-theme.css in your editor. The browser at http://localhost:7171
reloads on every save.
To switch theme while iterating, edit the theme: field in _examples/sample.yaml:
theme: classic-my-themeThe watcher picks up YAML changes and reloads — no CLI restart needed.
4. Test across section types
Section titled “4. Test across section types”Make sure your variant renders cleanly with every section type: text, experience, skills,
projects, education, certifications, languages. The bundled _examples/sample.yaml
already covers all seven.
5. Open a pull request
Section titled “5. Open a pull request”- Branch name:
theme/<your-variant-name> - Commit message:
feat(classic): add "<variant>" theme(or the template you chose) - Include a screenshot of the rendered sample YAML in the PR description
Renovate auto-merges theme repo updates into the main devResume backend, so your variant will be live on devresume.io shortly after the PR is merged.
Guidelines
Section titled “Guidelines”- Respect the existing CSS variable API. Templates define variables like
--color-accent,--color-text,--bg-primary. Override those; do not re-style elements directly, or you will break when the template HTML changes. - Keep contrast accessible. Aim for WCAG AA (contrast ratio 4.5:1 for body text).
- Test at print sizes. The resume is generally rendered at A4 / Letter in PDF. Open the CLI preview at 8.5” wide and confirm text, spacing, and borders all look right.
- No external assets. Keep everything inline in the CSS. No
@import, no external fonts. Fonts come from the bundled font pipeline.
What makes a good theme
Section titled “What makes a good theme”- Clear visual hierarchy. Name > title > sections > items. A reader should scan the resume and know where to look for each piece.
- Readable body text. Size, line height, and contrast matter more than decoration.
- Consistent spacing. Gutters, margins, and paddings should feel intentional across every section.
- Works on both screen and paper. Remember the final artifact is usually a PDF.