A Hugo static site for Bart Wagener's professional portfolio, using the CareerCanvas theme. This site is automatically deployed to GitHub Pages.
π Live Site: https://bartwagener.com/ π GitHub Pages URL: https://bwag84.github.io/bwag84/
- Hugo Extended (v0.128.0 or later)
- Node.js and npm
- Git
-
Clone the repository
git clone https://github.com/bwag84/bwag84.git cd bwag84 -
Initialize the theme submodule
git submodule update --init --recursive
-
Install dependencies
npm install
-
Run the development server
npm run dev # or hugo server -DVisit http://localhost:1313 to view the site.
Important: This is a one-time setup required after pushing to GitHub for the first time.
If you see a 404 error when visiting your site, you need to enable GitHub Actions as the deployment source:
-
Go to repository settings:
-
Change the deployment source:
- Under "Build and deployment" section
- Find the "Source" dropdown (may be set to "Deploy from a branch")
- Click the dropdown and select "GitHub Actions"
- It saves automatically
-
Trigger the first deployment:
- Go to the "Actions" tab: https://github.com/bwag84/bwag84/actions
- Click on "Deploy Hugo site to Pages" workflow on the left sidebar
- Click the "Run workflow" button (top right, green button)
- Click the green "Run workflow" button in the dropdown
-
Wait for deployment:
- Watch the workflow run (takes 1-2 minutes)
- Once it completes with a green checkmark β, your site is live
-
Visit your site:
Note: You only need to do this once. After the initial setup, every push to main will automatically trigger deployments.
This site uses a custom domain: bartwagener.com
The custom domain is configured using:
static/CNAMEfile containing the domain namebaseURLinhugo.tomlset tohttps://bartwagener.com/
If you need to verify or reconfigure the custom domain in GitHub:
- Go to: https://github.com/bwag84/bwag84/settings/pages
- Under "Custom domain", ensure it shows:
bartwagener.com - Check "Enforce HTTPS" (recommended)
- Ensure your DNS is configured correctly:
- For apex domain (bartwagener.com):
- Add A records pointing to GitHub Pages IPs:
185.199.108.153185.199.109.153185.199.110.153185.199.111.153
- Add A records pointing to GitHub Pages IPs:
- For www subdomain (www.bartwagener.com):
- Add CNAME record pointing to:
bwag84.github.io
- Add CNAME record pointing to:
- For apex domain (bartwagener.com):
Note: DNS changes can take up to 24-48 hours to propagate fully.
All content is managed through markdown files and configuration:
- Personal Info: Edit
hugo.toml- name, tagline, email, social links, etc. - About Section: Edit
content/about.md - Skills: Edit
content/skills.md - Experience: Edit
content/experience.md - Technical Stack: Edit
content/technical.md - Blog Posts: Add/edit files in
content/blog/
hugo new content blog/your-post-title.mdOr manually create a file in content/blog/ with front matter:
---
title: "Your Post Title"
date: 2025-01-15
draft: false
description: "SEO description for the post"
tags: ["SEO", "Digital Marketing"]
---
Your content here...Place images in static/images/ and reference them as /images/filename.png in your content.
The site automatically deploys to GitHub Pages when you push to the main branch.
-
Make your changes (edit content, add blog posts, update config, etc.)
-
Test locally
npm run dev
Verify everything looks good at http://localhost:1313
-
Commit your changes
git add . git commit -m "Your descriptive commit message"
-
Push to GitHub
git push origin main
-
Automatic deployment
- GitHub Actions will automatically build and deploy your site
- Check the "Actions" tab in your GitHub repository to monitor progress
- Site will be live at https://bwag84.github.io/bwag84/ in 1-2 minutes
The theme uses a three-tier color system in hugo.toml:
- Base colors: Hex values (single source of truth)
- Semantic colors: References to base colors
- Section colors: Component-specific colors
Change colors by editing the [params.colors] section in hugo.toml.
Custom layouts go in layouts/ to override theme defaults:
layouts/partials/hero.html- Hero sectionlayouts/partials/contact.html- Contact sectionlayouts/partials/footer.html- Footer
Theme layouts remain in themes/careercanvas/layouts/.
# Development server with drafts
npm run dev
# Production build
npm run build:css && npm run build
# Update theme
git submodule update --remote themes/careercanvas.
βββ .github/workflows/ # GitHub Actions for deployment
βββ content/ # All content (markdown files)
β βββ about.md
β βββ skills.md
β βββ experience.md
β βββ technical.md
β βββ blog/ # Blog posts
βββ layouts/ # Custom layout overrides
β βββ partials/
βββ static/ # Static assets (images, files)
β βββ images/
β βββ files/
βββ themes/ # Theme (git submodule)
β βββ careercanvas/
βββ hugo.toml # Main configuration file
βββ package.json # Node dependencies
- Check the "Actions" tab in your GitHub repo for errors
- Ensure GitHub Pages is enabled:
- Go to Settings β Pages
- Source should be "GitHub Actions"
git submodule update --init --recursive# Clear Hugo cache
hugo mod clean
# Reinstall dependencies
rm -rf node_modules package-lock.json
npm install- Project Guide: See
CLAUDE.mdfor detailed development instructions - Theme Docs:
themes/careercanvas/README.md - Color Customization:
themes/careercanvas/COLOR_CUSTOMIZATION.md - Blog Guide:
BLOG_GUIDE.md
This portfolio site is personal property of Bart Wagener.
- Email: bartwagener@gmail.com
- LinkedIn: https://linkedin.com/in/bartwagener
- GitHub: https://github.com/bwag84