- Typst 92.9%
- Dockerfile 7.1%
| assets | ||
| components | ||
| data | ||
| extras/ai-check | ||
| templates | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.dev.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| mise.toml | ||
| nginx.conf | ||
| README.md | ||
CV
Typst sources for generating two versions of a CV:
humanish: visually styled versionats-compatible: version optimized for applicant tracking systems
The generated PDF is written to build/<type>.pdf.
🛠️ Requirements
- mise
- Docker, if using the container workflow
The required tool versions are defined in mise.toml. Install the project tools with:
mise trust
mise install
The score-cv task also requires an AI provider configured for pi.
🏗️ Build
Build a specific CV variant:
mise run build humanish
mise run build ats-compatible
Watch a template and rebuild it when files change:
mise run watch humanish
mise run watch ats-compatible
🐳 Docker
For a local image build, copy the example environment file and choose a variant:
cp .env.example .env
docker compose -f docker-compose.dev.yml up --build
The PDF is served by nginx at http://localhost:3090/cv.pdf.
The production Compose file uses the published image selected by CV_TYPE:
docker compose up -d
Set CV_TYPE to either humanish or ats-compatible in .env before starting the service.
✏️ Editing Content
Most CV content is stored in TOML files under data/:
data/job.toml: work experiencedata/education.toml: educationdata/skills.toml: skills and technologiesdata/pets.toml: personal projects
The layouts are defined in templates/, with reusable Typst components in components/. Images and icons are stored under assets/.
🙇♂️ Score a CV
Use the AI scoring task to review a CV file with the prompt in extras/ai-check/score-cv.md:
mise run score-cv path/to/cv.pdf
The task passes the file path to pi and formats the result with glow. Make sure the pi CLI is configured before running it.
🙉 Release
Update the image version in docker-compose.yml, create and push a release tag, then build and push both CV variants:
git tag -a 1.0.0 -m "Release 1.0.0"
git push 1.0.0
mise run buildx:create
mise run buildx:push:all 1.0.0
buildx:create is only needed when the multiplatform Buildx builder does not already exist. The release task produces images for linux/amd64 and linux/arm64.
To build and push only one variant:
git tag -a 1.0.0 -m "Release 1.0.0"
git push origin 1.0.0
mise run buildx:push 1.0.0 humanish