A personal blog showcasing my journey in software engineering, internships, and technical leadership. Built with Hugo and deployed to Firebase Hosting.
Live Site: calebaguirreleon.com
- Hugo Extended v0.151.0+
- Git
# Clone the repository
git clone https://github.com/Lementknight/blog.git
cd blog
# Install theme submodule
git submodule update --init --recursive
# Start local development server
make devmake dev # Local development (includes drafts)
make new_post # Create a new blog post (interactive)
make preview # Preview production build
make debug # Rebuild with cache disabled (troubleshooting)blog/
βββ content/ # Blog posts and pages
β βββ aboutMe.md
β βββ contact.md
β βββ archive.md
β βββ posts/ # Blog posts directory
βββ layouts/ # Custom Hugo templates
β βββ _default/
β βββ partials/ # Reusable template components
β βββ shortcodes/ # Custom markdown shortcodes
βββ assets/css/extended/ # Custom CSS
β βββ chroma-light.css # Light mode syntax highlighting
β βββ chroma-dark.css # Dark mode syntax highlighting
β βββ custom.css # Code block styling
β βββ extended.css # CSS imports
βββ static/ # Static files (images, favicons)
βββ archetypes/ # Content templates
βββ themes/PaperMod/ # Hugo theme (submodule)
βββ hugo.yml # Site configuration
βββ Makefile # Task automation
βββ .claude/ # AI assistant context (development)
make new_post
# Prompts: "Post title (e.g. my-new-post): "
# Creates: content/posts/my-new-post.mdPosts use YAML front matter. Example:
---
title: 'My Post Title'
description: 'Brief description for SEO meta tag'
date: '2026-04-12T15:30:00-04:00'
tags: ['python', 'tutorial']
draft: false
---
# Post content starts here...Front Matter Fields:
title(required) - Post titledescription(required) - SEO meta descriptiondate(required) - ISO 8601 format (YYYY-MM-DDTHH:MM:SSΒ±HH:MM)tags(optional) - Array of tags for categorizationdraft(optional) - Set totrueto hide from published site
See CONTENT_GUIDELINES.md for detailed guidelines.
- Theme: PaperMod (custom fork)
- Features: Dark/Light mode toggle, responsive design, code syntax highlighting
Custom styles are organized in assets/css/extended/:
chroma-light.css- Light mode syntax highlighting (Catppuccin Latte)chroma-dark.css- Dark mode syntax highlighting (Catppuccin Mocha)custom.css- Code block backgrounds and custom stylesprofile.css- Profile section stylingalerts.css- Alert/callout styling
Important: Use theme selectors ([data-theme="light"] / [data-theme="dark"]) to prevent CSS conflicts between themes.
The site auto-deploys to Firebase Hosting on every push to main via GitHub Actions.
Workflow:
- Push to
feature/website-refreshβ PR tomain - GitHub Actions runs tests (
test-hugo-build.yml) - Merge to
mainβ Firebase deploy (firebase-hosting-merge.yml)
# Build for production
hugo
# Deploy to Firebase (requires authentication)
firebase deployPull requests automatically get preview deployments via firebase-hosting-pull-request.yml.
make dev
# Opens http://localhost:1313/
# Watches for changes and rebuilds automatically
# Includes draft postsmake preview
# Simulates production build locally
# Useful for testing before merging to mainIf CSS changes aren't appearing:
make debug
# Clears cache and rebuilds from scratch
# Use when normal dev server doesn't reflect changes# View production-ready output
ls public/Edit hugo.yml for:
baseURL- Your domaintitle- Site titletheme- Hugo theme (PaperMod)params.profileMode- Hero section contentparams.socialIcons- Social media linksmenu.main- Navigation menu
Comments are powered by Giscus (GitHub Discussions). Configuration in hugo.yml:
params:
comments:
giscus:
repo: "Lementknight/blog"
repoId: "R_kgDONw3w3A"
category: "General"
categoryId: "DIC_kwDONw3w3M4CuwJI"- CodeQL Scanning: Enabled via GitHub Actions
- No Secrets in Repo: Firebase config in
.firebaserc(gitignored) - Content Security: Posts are Markdown-based, no arbitrary code execution
- Build Tool: Hugo v0.151.0
- Language: Go (Hugo is written in Go)
- Hosting: Firebase Hosting
- CI/CD: GitHub Actions
- Domain: calebaguirreleon.com
To contribute improvements to this blog:
- Create a feature branch:
git checkout -b feature/my-improvement - Make changes and test locally:
make dev - Commit with clear messages
- Push and create a Pull Request
See CONTENT_GUIDELINES.md for content standards.
This project is open source. The blog content and custom code are available under the same license as specified in the repository.
- Contact Form: calebaguirreleon.com/contact
- GitHub: @Lementknight
- LinkedIn: Caleb Aguirre-Leon
Last Updated: April 12, 2026