This is a repo for my personal portfolio site. The site is built with Hugo and uses Docker for local development (no local Hugo installation required).
See site-infra for hosting. This repo contains the content and build configuration.
.
├── hugo-site/ # Hugo site
│ ├── config.toml # Site configuration
│ ├── content/ # Site content
│ ├── data/ # Data files (work experience, projects)
│ │ ├── work.yaml
│ │ └── projects.yaml
│ └── themes/portfolio/ # Custom theme
│ ├── layouts/ # HTML templates
│ └── static/ # CSS, images, etc.
└── Makefile # Build commands
All commands use Docker, so you don't need Hugo installed locally. Just Docker!
make help # Show all available commands
make docker-build # Build the Hugo Docker image
make build # Build the site (output in hugo-site/public/)
make serve # Serve the site locally at http://localhost:1313
make clean # Clean build artifacts
make clean-all # Clean build artifacts and Docker image-
Start the development server:
make serve
This will start Hugo's development server at
http://localhost:1313with live reload enabled. -
Make your changes:
- Edit content in
hugo-site/data/(work experience, projects) - Edit configuration in
hugo-site/config.toml - Edit templates in
hugo-site/themes/portfolio/layouts/ - Edit styles in
hugo-site/themes/portfolio/static/css/
- Edit content in
-
The browser will automatically reload when you save changes
-
Build for production:
make build
The static site will be generated in
hugo-site/public/
Edit hugo-site/data/work.yaml:
- title: "Company Name"
duration: "2024 - Present"
description: "Description of your role and achievements"Edit hugo-site/data/projects.yaml:
- title: "Project Name"
type: "Project Type"
description: "Description of the project"Edit hugo-site/config.toml to change:
- Site title and metadata
- Social media links (LinkedIn, GitHub)
- About section text
The custom portfolio theme includes:
- Responsive design (mobile, tablet, desktop)
- Dark mode support (automatically follows system preference)
- Clean, minimal design
- SEO-friendly meta tags
- Semantic HTML structure
The site uses a custom Docker image built on official Debian base image with Hugo installed from the official Hugo releases.
- Base image:
debian:bookworm-slim(official Debian image) - Hugo version: 0.139.3 (downloaded from official Hugo GitHub releases)
- Build:
make docker-buildor automatic when runningmake buildormake serve
No local installation of Hugo is required. The Docker image is built locally on first use.