Skip to content

Daniel-wambua/cv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

176 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Daniel wambua - CV


This repo contains the source for my personal CV
A website (Svelte) and PDF (LaTeX) auto-built from jsonresume data
🌐 danielwambua.dev | πŸ“„ Daniel-Wambua-CV.pdf

Buy Me a Coffee via Paystack

Motive

To automate my CV generation, and make it easier to maintain. All content defined in YAML, then a script generates a LaTeX PDF and deploy a web version. I did it this way so that I don't need to f**k around with Microsoft Word.

About the Developer

Professional Background
I'm an Information Technology student with a strong focus on cybersecurity, offensive security, and vulnerability assessment. My experience includes hands-on work in penetration testing labs, CTF competitions, and security tooling. I am passionate about learning, security research, and building systems that automate and simplify technical workflows. You can find my open source projects on GitHub and learn more at danielwambua.dev.

This CV automation project reflects my philosophy: why spend time on repetitive tasks when you can build systems that work for you? The entire CV generation pipeline is designed for maximum efficiency and maintainability.


About

The resume content is defined in resume.yml following the jsonresume.org standard, and validated against schema.json. A LaTeX document is then generated from template.jinja formatted with resume-format.cls, which is then compiled into a PDF by GitHub Actions, and published under the Releases tab.

The system features automatic PDF generation through a web download endpoint - when you visit the download link, the PDF is dynamically generated from the YAML source, ensuring it's always up-to-date. A markdown version is also generated by lib/markdown.py, as well as a CV website which is built as a static site with SvelteKit, and deployed to GitHub Pages and Vercel, at cv.danielwambua.dev.

The entire pipeline is optimized for content accuracy and layout precision, with automatic handling of link overflow and content formatting to ensure professional presentation.

Why? ...Because why spend 30 minutes writing your CV, when you could spend 30 hours automating it, obviously!


Usage

Option #1 - GitHub

  1. Fork the repo
  2. Update resume.yml with your own content
  3. Create a tag, or trigger the GH actions workflow
  4. ....and a PDF and website gets magically generated
Workflows
Workflow Description Status
tag Creates a new Git tag. Optionally specify the tag name and description, or by default it will just bump the sem ver patch number by 1 🏷️ Tag
generate Generates your resume in PDF form as an artifact. If triggered by a tag, then a new release will be created, with the PDF attached Generate PDF
validate Validates your resume data against the schema. This will also run whenever a new PR is opened, to ensure it's valid and working β˜‘οΈ Validate Resume
mirror Backs up repository and content to our (non-Microsoft) Codeberg mirror πŸͺž Mirror to Codeberg

Option #2 - Local

See the Makefile for all the available commands. Or, just run make from the root, to install deps, validate content, generate LaTeX, and compile PDF

  1. Clone the repo
  2. Update resume.yml with your own content
  3. Run make from the root, to install deps, validate content, generate LaTeX, and compile PDF

Or, to deploy the web version

  1. Follow steps above (clone, edit, validate)
  2. Run make web to generate dist/
  3. upload to any CDN, web server or static hosting provider (I use Vercel)
Commands
  • make install - Download dependencies
  • make validate - Validate content
  • make generate - Generate LaTex
  • make compile - Compile PDF
  • make clean - Remove generated files
  • make watch - Watch for changes, recompile and refresh
  • make web - Launches web version, installs NPM deps, builds and serves the site
flowchart LR
    GA([πŸ€– GitHub Actions<br><sup>Triggered on <code>resume.yml</code> change</sup>]) --> A3

    A1([πŸš€ Start<br><sup>Clone repo & cd into it</sup>]) --> A2[✏️ Update <code>resume.yml</code><br><sub>Your resume content goes here</sub>]
    A2 --> A3[βœ… make validate<br><sub>Check for content or schema issues</sub>]

    %% PDF PATH
    A3 --> PDF[πŸ“„ PDF Output]
    PDF --> B1[πŸ“¦ make install<br><sub>Install all dependencies</sub>]
    B1 --> B2[πŸ›  make generate<br><sub>Generate LaTeX from resume.yml</sub>]
    B2 --> B3[πŸ“„ make compile<br><sub>Compile LaTeX to PDF</sub>]
    B3 --> B4([βœ… View at <code>out/resume.pdf</code>])

    %% WEB PATH
    A3 --> Web[🌐 Website Output]
    Web --> C1[🌐 make web<br><sub>Build static site into <code>./dist</code></sub>]
    Web --> C2[πŸ§ͺ make web_dev<br><sub>Start local dev server at <code>localhost:5173</code></sub>]
    C1 --> C3([πŸš€ Deploy <code>./dist</code> to your host])
    C2 --> C4([πŸ” View site locally in browser])
Loading

Editing

Modify data by editing resume.yml
If you need to customize the layout, edit template.jinja
Or to change the styles and formatting, edit resume-format.cls
All the scripts used to generate output are located in lib/
These are triggered either by the Makefile or via GitHub Actions with the workflows/
The source for the website version is located in web/


Screenshot

Web 🌐

PDF πŸ“„


Contributing

Pull Requests

No point contributing. Just fork the repo and do whatever changes you like there.

Issues

No point in raising issues here. It works on my machine. Therefore I see no issue, lol


Attribution

This project uses the following open-source libraries and resources:

Contributors


License

Daniel Wambua/CV is licensed under MIT Β© Daniel Wambua 2025.
For information, see TLDR Legal > MIT

Expand License
The MIT License (MIT)
Copyright (c)  Daniel Wambua <daniel@wambua.com>

Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and associated documentation files (the "Software"), to deal 
in the Software without restriction, including without limitation the rights 
to use, copy, modify, merge, publish, distribute, sub-license, and/or sell 
copies of the Software, and to permit persons to whom the Software is furnished 
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included install 
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Β© Daniel Wambua 2025
Licensed under MIT

Thanks for visiting :)

About

πŸ’Ό Source code for my CV | Auto-generated LaTex PDF and website from JSONResume data

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors