https://github.com/thatbeautifuldream/json-resume
A lightweight solution to maintain your résumé in type-safe manner using TypeScript with Zod validation, generating JSON and styled HTML on demand.
https://github.com/thatbeautifuldream/json-resume
json-resume typescript zod-validation
Last synced: 3 months ago
JSON representation
A lightweight solution to maintain your résumé in type-safe manner using TypeScript with Zod validation, generating JSON and styled HTML on demand.
- Host: GitHub
- URL: https://github.com/thatbeautifuldream/json-resume
- Owner: thatbeautifuldream
- Created: 2025-04-17T00:56:16.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-23T15:39:08.000Z (about 1 year ago)
- Last Synced: 2025-06-23T16:53:55.619Z (about 1 year ago)
- Topics: json-resume, typescript, zod-validation
- Language: HTML
- Homepage: https://resume.milind.app
- Size: 108 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JSON Resume

> A lightweight solution to maintain your résumé in type-safe TypeScript with Zod validation, generating JSON and styled HTML on demand.
> [Resume Website](https://raw.githack.com/thatbeautifuldream/json-resume/main/resume.html)
> [Resume from JSON Registry](https://registry.jsonresume.org/thatbeautifuldream)
## Purpose
- Store your entire résumé in a single TypeScript file (`src/resume.data.ts`)
- Validate the data against a Zod schema (`src/resume.schema.ts`) based on the [JSON Resume](https://jsonresume.org/) standard
- Generate a standard `resume.json` file from the TypeScript source
- Render the JSON to a responsive HTML page (`resume.html`) using an off-the-shelf theme
## Files
- `src/resume.data.ts` - your primary resume data source (typed and validated)
- `src/resume.schema.ts` - Zod schema defining the structure and types for validation
- `resume.json` - the **generated** JSON output, compatible with the JSON Resume standard
- `resume.html` - the generated HTML output (can host or share)
- `package.json` - defines dependencies and scripts:
- `generate:resume` script: Runs `ts-node scripts/generate-resume.ts` to validate `resume.data.ts` and create `resume.json`
- `render` script: Runs `resumed render resume.json ...` to create `resume.html`
- Dependencies: `zod` for validation, `ts-node` to run TS scripts, `resumed` CLI, `jsonresume-theme-even` theme.
- `scripts/generate-resume.ts` - the script that validates data and generates `resume.json`
- `pnpm-lock.yaml` - lockfile if you use pnpm (you could also switch to npm or yarn)
## How it works
1. **Install dependencies:**
```bash
pnpm install
# or npm install
```
2. **Generate `resume.json`:**
Update your resume details in `src/resume.data.ts`. Then run:
```bash
pnpm run generate:resume
# or npm run generate:resume
```
This validates the data using the Zod schema and outputs `resume.json`.
3. **View or Deploy:**
Open or deploy `resume.html` anywhere (GitHub Pages, S3, Vercel, Netlify, your personal site, etc.)
## Benefits
- Keep your résumé source strongly-typed and validated using TypeScript and Zod
- Maintain data in a more developer-friendly format (`.ts`)
- Instantly regenerate a consistent, themeable HTML whenever you update your data
- Automatically generate the standard `resume.json` for compatibility with other tools