# clone
git clone [email protected]:metaory/jsonresume-theme-legacy.git
# navigate
cd jsonresume-theme-legacy
# install dependencies
npm install
# run development
npm run dev
# view sample page
http://localhost:5173
# build sample pdf
npm run build:sample
# duplicate the resume data
cp src/pages/index.json src/pages/private.json
# update the resume data
nvim src/pages/private.json
# customize theme (optional)
# set "theme-hue": 120 and "theme-sat": 5 in meta.themeOptions (JSON-first)
# starts in light mode (matches PDF exports)
# view newly created page
http://localhost:5173/private
# build private pdf
npm run build:private
# optimize and version pdf (creates: private.{USER}.v{VERSION}.pdf)
npm run optimize:pdf
# or combine both steps
npm run build:private && npm run optimize:pdf
# for sample pdf optimization
npm run build:sample && npm run optimize:pdf out/sample.pdf
Note
PDF generation requires a Chromium-based browser. Update package.json
scripts to use your browser: chrome
, edge
, brave
, etc.
Tip
Additional scripts: npm run optimize:images
| npm run optimize:pdf
| npm run build:screenshot
| npm run preview
Uses Iconify. Override in meta.themeOptions.iconMap
:
Keys must be lowercase. Restart dev server after changes.
Remote or local paths (local from root):
{
"basics": {
"image": "https://avatars.githubusercontent.com/u/9919",
"logo": "/.dev/my-private-logo.png"
}
}
basics.summary
accepts raw HTML.
Control section order, visibility, and titles:
{
"meta": {
"themeOptions": {
"sections": {
"basics": true,
"work": "Professional Experience",
"skills": true,
"projects": false
}
}
}
}
- Default: All sections render in default order
- Visibility: Set to
false
to hide section - Titles: String values override defaults,
true
uses default title - Order: CSS Grid areas (todo)
Examples
Default behavior (no config):
// Renders all sections in default order
Hide specific sections:
{
"meta": {
"themeOptions": {
"sections": {
"projects": false,
"volunteer": false
}
}
}
}
Custom order + hide + custom titles:
{
"meta": {
"themeOptions": {
"sections": {
"work": "Professional Experience",
"skills": true,
"basics": true,
"projects": false
}
}
}
}
Minimal config (just reorder):
{
"meta": {
"themeOptions": {
"sections": {
"work": true,
"skills": true,
"basics": true
}
}
}
}
Override in meta.themeOptions.sectionTitles
.
{
"meta": {
"themeOptions": {
"theme-hue": 300, // 0-360 degrees
"theme-sat": 5 // 0-100%
}
}
}
Live theme editor in top-right corner with hue/saturation sliders. Starts in light mode.
- Dev server must be running before PDF builds
- Requires Chromium-based browser for PDF exports (Chrome, Edge, Brave, etc.)
- Update
package.json
scripts to use your browser:chrome
,edge
,brave
, etc. - Tested on Linux and macOS (Windows may work but untested)
Note
rev3
- Astro over Handlebars + Vite
- 50% smaller (~1,535 vs ~3,110 lines)