{"id":24691480,"url":"https://github.com/engineervix/cv","last_synced_at":"2025-08-02T22:14:58.246Z","repository":{"id":274178609,"uuid":"922146850","full_name":"engineervix/cv","owner":"engineervix","description":"Write your CV in Markdown and generate both a responsive web page and a professional PDF with minimal setup. Features modern tooling (Vite, Puppeteer), beautiful icons, and automated PDF generation via CI/CD. See example below 👇","archived":false,"fork":false,"pushed_at":"2025-01-25T15:03:24.000Z","size":271,"stargazers_count":51,"open_issues_count":2,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-22T01:17:23.502Z","etag":null,"topics":["cv","markdown","pdf-generation","puppeteer","resume","vite"],"latest_commit_sha":null,"homepage":"https://engineervix.github.io/cv/","language":"JavaScript","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/engineervix.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-25T12:52:38.000Z","updated_at":"2025-03-07T07:41:26.000Z","dependencies_parsed_at":"2025-01-25T14:17:49.011Z","dependency_job_id":"6867776c-6585-4dfe-917f-f239ffd6fb8f","html_url":"https://github.com/engineervix/cv","commit_stats":null,"previous_names":["engineervix/cv"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/engineervix/cv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineervix%2Fcv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineervix%2Fcv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineervix%2Fcv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineervix%2Fcv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/engineervix","download_url":"https://codeload.github.com/engineervix/cv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineervix%2Fcv/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268465311,"owners_count":24254280,"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-08-02T02:00:12.353Z","response_time":74,"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":["cv","markdown","pdf-generation","puppeteer","resume","vite"],"created_at":"2025-01-26T19:16:38.161Z","updated_at":"2025-08-02T22:14:58.197Z","avatar_url":"https://github.com/engineervix.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CV\n\nWrite your CV in Markdown and generate both a responsive web page and a professional PDF with minimal setup.\n\n[![Node v20](https://img.shields.io/badge/Node-v20-teal.svg)](https://nodejs.org/en/blog/release/v20.0.0)\n[![code style: prettier](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/)\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n**Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*\n\n- [Features](#features)\n- [Quick Start](#quick-start)\n- [Customization](#customization)\n  - [Content](#content)\n  - [Customization Examples](#customization-examples)\n    - [Styling Changes](#styling-changes)\n    - [Icons and Section Headings](#icons-and-section-headings)\n    - [Customize Technical Skills Display](#customize-technical-skills-display)\n    - [Modify Contact Information Display](#modify-contact-information-display)\n  - [PDF Generation](#pdf-generation)\n- [Deployment](#deployment)\n  - [Automated Deployment](#automated-deployment)\n    - [GitHub Pages](#github-pages)\n    - [GitLab Pages](#gitlab-pages)\n- [Resources](#resources)\n- [License](#license)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Features\n\n- 📝 Write your CV in simple Markdown (parsed with [Marked](https://marked.js.org/))\n- 🎨 Modern, responsive webpage built with [Vite](https://vite.dev/)\n- 📄 Print-optimized PDF generation using [Puppeteer](https://pptr.dev/), with automatic PDF rebuilds via CI\n- 💅 Beautiful icons from [Phosphor Icons](https://phosphoricons.com)\n- 🛠️ Easy to customize with [SCSS](https://sass-lang.com/) and vanilla JavaScript\n- 🚀 Ready to deploy to GitHub/GitLab Pages (or your preferred platform)\n- ✨ No LaTeX knowledge required\n\n## Quick Start\n\n1. Clone the repository\n2. Install dependencies (requires Node.js 20+):\n   ```bash\n   npm install\n   ```\n3. Edit `src/cv.md` with your information\n4. Preview your CV:\n   ```bash\n   npm run dev     # Start a dev server with live reload\n   ```\n5. Generate PDF:\n   ```bash\n   npm run pdf     # Generate PDF\n   ```\n\n## Customization\n\n### Content\n\nEdit `src/cv.md` using Markdown. The file supports front matter for your personal information:\n\n```yaml\n---\ntitle: Your Name\nheadline: Your Title\nemail: you@example.com\ngithub: '@username'\n---\n```\n\n\u003e [!TIP]\n\u003e This project uses [Marked](https://github.com/markedjs/marked) to parse markdown. Marked supports the original `markdown.pl` implementation, [CommonMark](http://spec.commonmark.org/0.31.2/) and [GitHub Flavored Markdown](https://github.github.com/gfm/), which should generally suffice for most use cases. You could even add [custom extensions](https://marked.js.org/using_pro#extensions) to extend the functionality, if you needed to.\n\n### Customization Examples\n\n#### Styling Changes\n\nModify colors, fonts, and layout in `src/css/main.scss`:\n\n```scss\n// Change the primary color\n$color-primary: #0073e6;  // Default blue\n$color-primary: #2ecc71;  // Change to green\n\n// Change font family\n$font-sans: avenir, montserrat, corbel, 'URW Gothic', sans-serif;       // default\n$font-sans: optima, candara, 'Noto Sans', source-sans-pro, sans-serif;  // Use different fonts\n// or, if you prefer a Serif font, you could specify $font-serif to replace $font-sans\n```\n\n#### Icons and Section Headings\n\nAdd icons to your section headings using [Phosphor Icons](https://phosphoricons.com). The project uses the regular style by default, but you can switch to thin, light, bold, fill, or duotone styles by updating the import in `src/js/main.js`:\n\n```javascript\n// Default style\nimport '@phosphor-icons/web/regular'\n\n// Or use another style\nimport '@phosphor-icons/web/bold'\nimport '@phosphor-icons/web/duotone'\n```\n\nAdd icons to your markdown:\n\n```markdown\n## Skills [ph-wrench]           \u003c!-- Adds wrench icon --\u003e\n\n## Experience [ph-briefcase]    \u003c!-- Adds briefcase icon --\u003e\n\n## Education [ph-graduation-cap] \u003c!-- Adds graduation cap icon --\u003e\n```\n\n#### Customize Technical Skills Display\n\nModify skill categories and icons in `src/js/utils/skills.js`:\n\n```javascript\n// Change icons for skill categories\nfunction getCategoryIcon(categoryText) {\n  const category = categoryText.toLowerCase()\n  const iconMap = {\n    frontend: 'ph ph-browser',\n    backend: 'ph ph-database',\n    devops: 'ph ph-cloud',\n    mobile: 'ph ph-device-mobile',\n    // Add your own categories\n  }\n  // change Default icon from 'ph ph-toolbox' to, say 'ph-caret-double-right'\n  return Object.entries(iconMap).find(([key]) =\u003e category.includes(key))?.[1] || 'ph-caret-double-right'\n}\n```\n\n#### Modify Contact Information Display\n\nAdjust contact info layout in `src/js/utils/header.js`:\n\n```javascript\n// Add new social media or contact types, for example, gitlab\nif (metadata.gitlab) {\n  const gitlabUsername = metadata.gitlab.replace(/^@/, '')\n  contactDiv.appendChild(\n    createContactItem('ph-gitlab-logo', metadata.gitlab, `https://gitlab.com/${gitlabUsername}`)\n  )\n}\n\n// Change icon styles\n// First update main.js to import duotone icons:\n// import '@phosphor-icons/web/duotone'\n// Then update the icon class:\niconElement.className = `ph-duotone ${iconClass}`  // Use duotone icons instead of regular\n```\n\nThese files control the main aspects of the CV:\n\n- `src/css/main.scss` - Overall styling and layout\n- `src/js/utils/skills.js` - Technical skills section logic\n- `src/js/utils/header.js` - Contact information and header\n- `src/js/utils/timeline.js` - Experience and education entries\n- `src/js/utils/headings.js` - Section headings and icons\n- `src/js/utils/table.js` - Responsive table handling\n\n### PDF Generation\n\n- Run `npm run pdf` locally to create a PDF version of your CV\n- PDFs are automatically generated by CI when you push to your repository:\n  - For GitLab: The PDF is generated as a job artifact in the CI pipeline\n  - For GitHub: The PDF will be generated as part of the GitHub Actions workflow\n\n## Deployment\n\nTo build your project for production:\n\n```sh\nnpm run build\n```\n\nThe built site will be in the `./dist` directory. You can preview the build via\n\n```sh\nnpm run preview\n```\n\n### Automated Deployment\n\nThis project includes ready-to-use CI/CD configurations for both GitHub and GitLab Pages.\n\n#### GitHub Pages\n\n1. Enable GitHub Pages in your repository:\n   - Go to your repository's Settings\n   - Navigate to \"Pages\" in the sidebar\n   - Under \"Build and deployment\", select \"GitHub Actions\" as your source\n2. Push your code to GitHub - the included GitHub Actions workflow will handle the rest!\n\n#### GitLab Pages\n\n1. The included `.gitlab-ci.yml` configuration will automatically deploy to GitLab Pages\n2. For proper URL handling:\n   - Go to your repository's Settings \u003e Pages\n   - Uncheck \"Use unique domain\" (this is checked by default)\n   - Your CV will be available at `https://\u003cusername\u003e.gitlab.io/\u003crepo-name\u003e`\n\nYou can also deploy your CV to other platforms like Cloudflare Pages, Vercel, Netlify, or your own server. See the [Vite docs](https://vite.dev/guide/build.html) for more information.\n\n## Resources\n\n- [Vite Guide](https://vite.dev/guide/)\n- [Marked Documentation](https://marked.js.org/)\n- [Modern Font Stacks](https://github.com/system-fonts/modern-font-stacks)\n- favicon generated via \u003chttps://favicon.io/favicon-generator/\u003e\n- og image by [Amjith S on Unsplash](https://unsplash.com/photos/black-and-orange-computer-keyboard-NOY_FzRublM)\n\n## License\n\nMIT - Feel free to use and adapt for your needs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineervix%2Fcv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengineervix%2Fcv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineervix%2Fcv/lists"}