https://github.com/shaftoe/curriculum-vitae
Alexander Fortin's curriculum vitæ
https://github.com/shaftoe/curriculum-vitae
css-grid curriculum-vitae hugo hugo-partials insights jamstack netlify
Last synced: about 1 month ago
JSON representation
Alexander Fortin's curriculum vitæ
- Host: GitHub
- URL: https://github.com/shaftoe/curriculum-vitae
- Owner: shaftoe
- License: apache-2.0
- Created: 2020-01-17T08:00:41.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-02-28T14:11:32.000Z (over 4 years ago)
- Last Synced: 2025-01-14T19:12:45.574Z (over 1 year ago)
- Topics: css-grid, curriculum-vitae, hugo, hugo-partials, insights, jamstack, netlify
- Language: HTML
- Homepage: https://cv.l3x.in/
- Size: 352 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Curriculum Vitae
A modern, data-driven curriculum vitae built with [Eleventy](https://www.11ty.dev/) that generates both a responsive web version and a PDF document.
## Features
### π¨ **Modern Web CV**
- **Responsive Design**: Mobile-friendly layout that adapts to different screen sizes
- **Clean UI**: Built with [Pico CSS](https://picocss.com/) framework with custom styling
- **Font Awesome Icons**: Visual icons for navigation links (contact, GitHub, website, PDF)
- **Print-Optimized**: Special print styles for generating PDF-friendly output
### π **Dual Output Format**
- **HTML Version**: Fully responsive web page hosted on Netlify
- **PDF Generation**: Automatically generates a PDF version using PDFKit during build
- **SEO Optimized**: Includes meta tags, keywords, and structured data
### ποΈ **Data-Driven Architecture**
- **JSON Configuration**: Main CV data stored in `_data/main.json` (personal info, skills, languages, links)
- **Markdown Job Entries**: Each work experience is a separate markdown file in `_jobs/` directory
- **Numbered Sorting**: Jobs are automatically sorted by filename prefix (e.g., `1_company.md`, `2_company.md`)
- **Frontmatter Support**: Each job includes metadata (title, company, location, period, tech stack)
### π οΈ **Tech Stack Display**
- **Collapsible Details**: Tech stack for each job is shown in expandable `` elements
- **Comma-Separated Lists**: Clean, inline display of technologies
- **Dynamic Keywords**: Automatically generates SEO keywords from job technologies and skills
### π **Structured Sections**
- **Professional Experience**: Chronologically ordered work history
- **Technical Skills**: Comprehensive list of technical competencies
- **Soft Skills**: Professional and interpersonal skills
- **Languages**: Language proficiencies
- **Open Source Projects**: Links to personal projects
### β‘ **Build & Performance**
- **HTML Minification**: Output HTML is automatically minified
- **Static Generation**: Fast, pre-rendered static site
- **Asset Optimization**: CSS and assets are optimized for production
### π **Deployment**
- **Netlify Integration**: Configured for automatic deployment via Netlify
- **Build Automation**: PDF generation happens automatically during build process
- **Version Control**: Full Git history for tracking CV updates
## Project Structure
```
.
βββ _data/
β βββ main.json # Main CV data (personal info, skills, links)
βββ _includes/
β βββ base.njk # Base HTML template
β βββ index.njk # Main CV content template
βββ _jobs/
β βββ 1_company.md # Job entries (numbered for sorting)
β βββ 2_company.md
β βββ ...
βββ lib/
β βββ pdf-generator.js # PDF generation logic
βββ _site/ # Build output directory
βββ .eleventy.js # Eleventy configuration
βββ bundle.css # Custom styles
βββ index.md # Entry point
βββ netlify.toml # Netlify deployment config
```
## Getting Started
### Prerequisites
- Node.js (v14 or higher)
- npm
### Installation
```bash
npm install
```
### Development
Start the development server with live reload:
```bash
npm run serve
```
The site will be available at `http://localhost:8080`
### Build
Generate the static site and PDF:
```bash
npm run build
```
Output will be in the `_site/` directory.
### Other Commands
- `npm run format` - Format code with Prettier
- `npm run lint` - Run ESLint
- `npm run lint:fix` - Fix ESLint issues automatically
- `npm run clean` - Remove build output directory
## Customization
### Updating Personal Information
Edit `_data/main.json` to update:
- Name, role, title
- Skills (tech skills, soft skills, languages)
- Navigation links (contact, GitHub, website)
- Open source projects
### Adding/Editing Jobs
1. Create or edit a markdown file in `_jobs/` directory
2. Use numbered prefix for ordering (e.g., `11_newjob.md`)
3. Include frontmatter with:
```yaml
---
title: Job Title
company: Company Name
location: City, Country
period: 2020 - 2023
tech:
- Technology 1
- Technology 2
---
```
4. Write job description in markdown below the frontmatter
### Styling
- Main styles: `bundle.css`
- Framework: Pico CSS (loaded via CDN)
- Print styles: Included in `bundle.css` for PDF generation
## Technologies Used
- **Eleventy (11ty)**: Static site generator
- **Nunjucks**: Template engine
- **Pico CSS**: Minimal CSS framework
- **PDFKit**: PDF generation library
- **Font Awesome**: Icon library
- **html-minifier-terser**: HTML minification
## License
ISC