{"id":34501494,"url":"https://github.com/mwakidenis/cv","last_synced_at":"2025-12-24T02:02:32.243Z","repository":{"id":328785386,"uuid":"1116436767","full_name":"mwakidenis/cv","owner":"mwakidenis","description":"🛠️My polished CV (in progress)🛠️. Turning caffeine into code. ✨📄☕⏳","archived":false,"fork":false,"pushed_at":"2025-12-17T15:50:06.000Z","size":15568,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-18T09:05:58.759Z","etag":null,"topics":["jinja","python-3","schema","scss","sveltekit","tex","typescript"],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mwakidenis.png","metadata":{"files":{"readme":".github/README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"mwakidenis"}},"created_at":"2025-12-14T21:14:48.000Z","updated_at":"2025-12-18T06:37:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mwakidenis/cv","commit_stats":null,"previous_names":["mwakidenis/cv"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mwakidenis/cv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwakidenis%2Fcv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwakidenis%2Fcv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwakidenis%2Fcv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwakidenis%2Fcv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwakidenis","download_url":"https://codeload.github.com/mwakidenis/cv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwakidenis%2Fcv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27992996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jinja","python-3","schema","scss","sveltekit","tex","typescript"],"created_at":"2025-12-24T02:02:12.693Z","updated_at":"2025-12-24T02:02:32.238Z","avatar_url":"https://github.com/mwakidenis.png","language":"TeX","funding_links":["https://github.com/sponsors/mwakidenis"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eDenis Mwaki - CV\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/mwakidenis/cv\"\u003e\u003cimg src=\"https://i.ibb.co/G4vGDwtD/cv-logo.png?\" width=\"48\" /\u003e\u003cbr /\u003e\u003c/a\u003e\n\u003ci\u003eThis repo contains the source for my personal CV\u003c/i\u003e\n\u003cbr /\u003e\n\u003ci\u003eA website (Svelte) and PDF (LaTeX) auto-built from jsonresume data\u003c/i\u003e\n\u003cbr /\u003e\n\u003cb\u003e🌐 \u003ca href=\"https://cv.mwakiden.com/\"\u003ehttps://mwakidenis.github.io/cv/mwakidenis-CV.pdf\u003c/a\u003e | 📄 \u003ca href=\"https://cv.mwakidenis.github.io/cv/mwakidenis-CV.pdf\"\u003e\u003ccode\u003emwakidenis-CV.pdf\u003c/code\u003e\u003c/a\u003e\u003c/b\u003e \u003cbr /\u003e\n\u003c/p\u003e\n\n\n\n## Motive\nTo automate my CV generation, and make it easier to maintain.\nAll content defined in YAML, then a script generates a LaTeX PDF and deploy a web version.\nI did it this way so that I don't need to f\\*\\*k around with Microsoft Word.\n\n\u003cdetails\u003e\n  \u003csummary\u003eMotive (legacy)\u003c/summary\u003e\n\n\n\u003e **Backstory**\u003cbr\u003e\n\u003e I'm just about to be made redundant 😢 (Aug '24), which I am gutted about. I've never been laid off before, and I loved my job and the people I worked with. So I'm now on the market, looking for a new role!\n\u003e\n\u003e I've kept my CV/resume **very** brief, in an attempt respect the hiring manager's time. But in short, I'm an experienced, Principle-level full stack engineer with a love for quality, performance, mentoring, tech and open source. The best judge of a developer is their code, and while I cannot share what I've done professional or for private clients, I have got many open source projects on my [GitHub](https://github.com/mwakidenis) and at [mwakidenis](https://github.com/mwakidenis).\n\n  \n\u003c/details\u003e\n\n---\n\n## About\n\nThe resume content is defined in [`resume.yml`](/resume.yml) following the [jsonresume.org](https://jsonresume.org/) standard, and validated against [`schema.json`](/schema.json).\nA LaTex document is then generated from [`template.jinja`](/template.jinja) formated with [`resume-format.cls`](/tex/resume-format.cls), which is then [compiled into a PDF](https://github.com/mwakidenis/cv/actions/workflows/compile.yml) by GitHub Actions, and published under the [Releases](https://github.com/mwakidenis/cv/releases) tab.\nA markdown version is also generated by [`lib/markdown.py`](/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.mwakidenis.com](https://github.com.mwakidenis).\n\nWhy? ...Because why spend 30 minutes writing your CV, when you could spend 30 hours automating it, obviously!\n\n\n---\n\n## Usage\n\n### Option #1 - GitHub\n1. Fork the repo\n2. Update resume.json with your own content\n3. Create [a tag](/.github/workflows/tag.yml), or trigger the GH actions workflow\n4. ....and a PDF and website gets magically generated\n5. View the PDF in the [Releases](https://github.com/mwakidenis/cv/releases) tab, and the website source in the [`website`](https://github.com/Lissy93/cv/tree/website) branch, or deployed to GitHub Pages (for me, this is [cv.mwakidenis.com](https://cv.mwakidenis.com))\n\n---\n\n### Option #2 - Local\nSee the [`Makefile`](/Makefile) for all the available commands. Or, just run `make` from the root, to install deps, validate content, generate LaTex, and compile PDF\n\n1. Clone the repo\n2. Update resume.json with your own content\n1. Run `make` from the root, to install deps, validate content, generate LaTex, and compile PDF\n\nOr, to deploy the web version\n1. Follow steps above (clone, edit, validate)\n2. Run `make web` to generate `dist/`\n3. upload to any CDN, web server or static hosting provider (I use Vercel)\n\n\u003cdetails\u003e\u003csummary\u003eCommands\u003c/summary\u003e\n\n- `make install` - Download dependencies\n- `make validate` - Validate content\n- `make generate` - Generate LaTex\n- `make compile` - Compile PDF\n- `make clean` - Remove generated files\n- `make watch` - Watch for changes, recompile and refresh\n- `make web` - Launches web version, installs NPM deps, builds and serves the site\n\u003c/details\u003e\n\n```mermaid\nflowchart LR\n    GA([🤖 GitHub Actions\u003cbr\u003e\u003csup\u003eTriggered on \u003ccode\u003eresume.yml\u003c/code\u003e change\u003c/sup\u003e]) --\u003e A3\n\n    A1([🚀 Start\u003cbr\u003e\u003csup\u003eClone repo \u0026 cd into it\u003c/sup\u003e]) --\u003e A2[✏️ Update \u003ccode\u003eresume.yml\u003c/code\u003e\u003cbr\u003e\u003csub\u003eYour resume content goes here\u003c/sub\u003e]\n    A2 --\u003e A3[✅ make validate\u003cbr\u003e\u003csub\u003eCheck for content or schema issues\u003c/sub\u003e]\n\n    %% PDF PATH\n    A3 --\u003e PDF[📄 PDF Output]\n    PDF --\u003e B1[📦 make install\u003cbr\u003e\u003csub\u003eInstall all dependencies\u003c/sub\u003e]\n    B1 --\u003e B2[🛠 make generate\u003cbr\u003e\u003csub\u003eGenerate LaTeX from resume.yml\u003c/sub\u003e]\n    B2 --\u003e B3[📄 make compile\u003cbr\u003e\u003csub\u003eCompile LaTeX to PDF\u003c/sub\u003e]\n    B3 --\u003e B4([✅ View at \u003ccode\u003eout/resume.pdf\u003c/code\u003e])\n\n    %% WEB PATH\n    A3 --\u003e Web[🌐 Website Output]\n    Web --\u003e C1[🌐 make web\u003cbr\u003e\u003csub\u003eBuild static site into \u003ccode\u003e./dist\u003c/code\u003e\u003c/sub\u003e]\n    Web --\u003e C2[🧪 make web_dev\u003cbr\u003e\u003csub\u003eStart local dev server at \u003ccode\u003elocalhost:5173\u003c/code\u003e\u003c/sub\u003e]\n    C1 --\u003e C3([🚀 Deploy \u003ccode\u003e./dist\u003c/code\u003e to your host])\n    C2 --\u003e C4([🔍 View site locally in browser])\n```\n\n---\n\n## Editing\nModify data by editing [`resume.yml`](/resume.yml)\u003cbr\u003e\nIf you need to customize the layout, edit [`template.jinja`](/template.jinja)\u003cbr\u003e\nOr to change the styles and formatting, edit [`resume-format.cls`](/tex/resume-format.cls)\u003cbr\u003e\nAll the scripts used to generate output are located in [`lib/`](/lib/)\u003cbr\u003e\nThese are triggered either by the [`Makefile`](/Makefile) or via GitHub Actions with the [`workflows/`](/.github/workflows)\u003cbr\u003e\nThe source for the website version is located in [`web/`](/web)\n\n---\n\n## Screenshot\n\n\u003ch3 align=\"center\"\u003eWeb 🌐\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\u003ca href=\"(https://github.com/mwakidenis/cv/blob/main/cv-main/.github/screenshots/screenshot-web.png)\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003ePDF 📄\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\u003ca href=\"(https://github.com/mwakidenis/cv/blob/main/cv-main/.github/screenshots/screenshot-web.jpg?)\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n---\n\n## Status\n\n| Workflow     | Description      | Status                     |\n| :----------- | :--------------- | :------------------------: |\n| `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](https://github.com/mwakidenis/cv/actions/workflows/tag.yml/badge.svg)](https://github.com/mwakidenis/cv/actions/workflows/tag.yml)  |\n| `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 attatched   | [![Generate PDF](https://github.com/mwakidenis/cv/actions/workflows/compile.yml/badge.svg)](https://github.com/mwakidenis/cv/actions/workflows/compile.yml) |\n| `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](https://github.com/mwakidenis/cv/actions/workflows/validate.yml/badge.svg)](https://github.com/mwakidenis/cv/actions/workflows/validate.yml) |\n| `website`     | Compiles the web version as a SvelteKit interactive résumé site | [![🪁 Make Site](https://github.com/mwakidenis/cv/actions/workflows/build-site.yml/badge.svg)](https://github.com/mwakidenis/cv/actions/workflows/build-site.yml) |\n| `mirror`     | Backups up repository and content to our (non-Microsoft) Codeberg mirror | [![🪞 Mirror to Codeberg](https://github.com/mwakidenis/cv/actions/workflows/mirror.yml/badge.svg)](https://github.com/mwakidenis/cv/actions/workflows/mirror.yml) |\n\n\n---\n\n## Contributing\n\n### Pull Requests\nNo point contributing. Just fork the repo and do whatever changes you like there.\n\n### Issues\nNo point in raising issues here. It works on my machine. Therefore I see no issue, lol\n\n---\n  \n---\n\n## License\n\n\u003e _**[mwakidenis/CV](https://github.com/mwakidenis/cv)** is licensed under [MIT](https://github.com/mwakidenis/cv/blob/HEAD/LICENSE) © [Mwaki Denis](https://mwakidenis.com) 2026._\u003cbr\u003e\n\u003e \u003csup align=\"right\"\u003eFor information, see \u003ca href=\"https://tldrlegal.com/license/mit-license\"\u003eTLDR Legal \u003e MIT\u003c/a\u003e\u003c/sup\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eExpand License\u003c/summary\u003e\n\n```\nThe MIT License (MIT)\nCopyright (c) Mwaki Denis \u003cmwakidenice@gmail.com\u003e \n\nPermission is hereby granted, free of charge, to any person obtaining a copy \nof this software and associated documentation files (the \"Software\"), to deal \nin the Software without restriction, including without limitation the rights \nto use, copy, modify, merge, publish, distribute, sub-license, and/or sell \ncopies of the Software, and to permit persons to whom the Software is furnished \nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included install \ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, FITNESS FOR A\nPARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n\n\u003c/details\u003e\n\n\u003c!-- License + Copyright --\u003e\n\u003cp  align=\"center\"\u003e\n  \u003ci\u003e© \u003ca href=\"https://github.com/mwakidenis\"\u003eMwaki Denis\u003c/a\u003e 2026\u003c/i\u003e\u003cbr\u003e\n  \u003ci\u003eLicensed under \u003ca href=\"https://gist.github.com/mwakidenis/143d2ee01ccc5c052a17\"\u003eMIT\u003c/a\u003e\u003c/i\u003e\u003cbr\u003e\n  \u003ca href=\"https://github.com/mwakidenis\"\u003e\u003cimg src=\"https://i.ibb.co/4KtpYxb/octocat-clean-mini.png\" /\u003e\u003c/a\u003e\u003cbr\u003e\n  \u003csup\u003eThanks for visiting :)\u003c/sup\u003e\n\u003c/p\u003e\n\n\u003c!-- Dinosaur --\u003e\n\u003c!-- \n                        . - ~ ~ ~ - .\n      ..     _      .-~               ~-.\n     //|     \\ `..~                      `.\n    || |      }  }              /       \\  \\\n(\\   \\\\ \\~^..'                 |         }  \\\n \\`.-~  o      /       }       |        /    \\\n (__          |       /        |       /      `.\n  `- - ~ ~ -._|      /_ - ~ ~ ^|      /- _      `.\n              |     /          |     /     ~-.     ~- _\n              |_____|          |_____|         ~ - . _ _~_-_\n--\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmwakidenis%2Fcv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmwakidenis%2Fcv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmwakidenis%2Fcv/lists"}