Personal academic CV and portfolio site for Brian Setz, Lead of the Digital Lab at the University of Groningen.
Live site: briansetz.nl · briansetz.github.io/briansetz.nl
- Eleventy (v3) — static site generator with Nunjucks templates
- Tailwind CSS (v4) — utility-first CSS
- Sharp — image processing (resizing, WebP conversion, OG card generation)
- GitHub Pages — hosting and deployment via GitHub Actions
Prerequisites: Node.js 18+
npm install
npm run devThe site is served at http://localhost:8080 with live reload.
| Command | Description |
|---|---|
npm run dev |
Start Eleventy + Tailwind in watch mode (runs image pipeline once first) |
npm run build |
Production build (output to _site/) |
npm run build:11ty |
Eleventy only |
npm run build:img |
Image pipeline only (Sharp) |
npm run build:css |
Tailwind CSS only |
npm run lint:html |
Validate HTML in _site/ with html-validate |
Place a high-resolution square portrait at src/img/profile-full.jpg (JPEG, ≥ 384 px). Running npm run build (or npm run build:img) will automatically generate all required variants in _site/img/:
| Output file | Dimensions | Use |
|---|---|---|
profile.jpg / profile.webp |
384 × 384 | Hero photo (2× retina) |
profile-192.jpg / profile-192.webp |
192 × 192 | Hero photo (1×) + apple-touch-icon |
og.jpg |
1200 × 630 | Open Graph / Twitter Card social preview |
The source file (profile-full.jpg) is never served publicly — the build step removes it from the output directory along with any other legacy image files.
All site content lives in src/_data/. Edit the YAML files to update your own information:
| File | Contents |
|---|---|
site.yml |
Name, title, bio, email, social links, SEO metadata, OG image config |
education.yml |
Degrees and institutions |
publications.yml |
Journal and conference papers |
projects.yml |
Research and teaching projects |
teaching.yml |
Courses taught |
supervision.yml |
PhD / MSc / BSc students supervised |
awards.yml |
Prizes and honours |
activities.yml |
Community service, committees, reviewing |
Templates are in src/_includes/sections/. The base layout is src/_includes/base.njk.
The GitHub Actions workflow runs on every push to main and on pull requests. It has three jobs:
| Job | What it does |
|---|---|
build |
Runs npm run build, uploads _site/ as a Pages artifact |
qa |
Validates HTML (html-validate), checks internal links (lychee), runs Lighthouse CI |
deploy |
Deploys to GitHub Pages — only runs on main after both build and qa pass |
Lighthouse score thresholds are configured in .lighthouserc.json. HTML validation rules are in .htmlvalidate.json.
To host at a subpath (e.g. username.github.io/repo-name), set the ELEVENTY_PATH_PREFIX environment variable in the workflow to /repo-name/.
The source code and templates in this repository are licensed under the MIT License.
Note: The personal content in
src/_data/,src/docs/, andsrc/img/— including publications, CV data, and profile images — is © Brian Setz, all rights reserved, and is not covered by the MIT License.