Personal website built with Hugo and the aboutme-v2-theme. No Node.js required β SCSS is compiled natively by Hugo Pipes.
- Hugo Extended v0.163.0 or higher
- Go 1.23+ (for module resolution)
git clone https://github.com/lbenicio/lbenicio.github.io.git
cd lbenicio.github.io
hugo serverThat's it. No npm install, no node_modules. Hugo handles everything β SCSS compilation, CSS minification, and asset fingerprinting.
.
βββ content/ # All page content (front matter driven)
β βββ _index.md # Homepage (heading, subtitle, avatar, socials)
β βββ about/index.md # About page (name, role, skills, certifications)
β βββ contact/index.md # Contact page (postUrl, email, pgpKey)
β βββ timeline/index.md # Timeline milestones
β βββ publications/ # Academic publications
β βββ reading/ # Reading list
βββ static/
β βββ static/ # Static assets β /static/ URL prefix
β βββ images/ # Profile pictures, institution logos
β βββ files/ # PDFs, sheets
β βββ pgp/ # PGP public key
βββ hugo.toml # Site configuration
βββ go.mod # Hugo module dependencies
βββ .github/workflows/ # CI/CD (build β obfuscate β deploy)
All page content is sourced from front matter, not site config. The hugo.toml only holds global defaults:
[params]
appMode = "ABOUT_ONLY" # Render mode
siteUrl = "https://lbenicio.dev"
githubHandler = "lbenicio" # Social defaults (overridable per page)
linkedinHandler = "leonardo-benicio"
twitterHandler = "lbenicio_"Homepage (content/_index.md):
heading: "About Leonardo Benicio"
subtitle: "Personal tagline"
avatar: "static/images/avatar/profile-picture.png"
github: "lbenicio"About (content/about/index.md):
name: "Leonardo Benicio"
role: "Computer Scientist"
skills: ["Algorithms", "Distributed Systems", ...]
certifications:
- id: aws-cloud-practitioner
name: AWS Certified Cloud Practitioner
...Contact (content/contact/index.md):
email: "hi@lbenicio.dev"
postUrl: "https://formbold.com/s/..."
pgpKey: "/static/pgp/public.asc"- Class/ID obfuscation: All HTML, CSS, and JS identifiers are deterministically obfuscated post-build.
- PGP encryption: Contact form supports OpenPGP encryption via
openpgp.js. - No external scripts: Only self-hosted assets (except Umami analytics).
Pushes to main trigger the deploy workflow:
- Install Go + Hugo dependencies
- Build with Hugo (
--minify --environment production) - Obfuscate class/id/data-* names
- Deploy to GitHub Pages
Manual build:
hugo --minify --environment productionZero Node.js dependencies. The only requirement is Hugo Extended (for SCSS compilation via LibSass).
require github.com/lbenicio/aboutme-v2-theme v0.3.0
- Email: hi@lbenicio.dev
- GitHub: @lbenicio
- LinkedIn: leonardo-benicio
Built with Hugo + aboutme-v2-theme β’ Β© 2026 Leonardo Benicio