A personal blog built with Hugo and the PaperMod theme.
- Hugo (v0.87+)
- Git
# Clone the repo
git clone <repo-url>
cd hugopaper-myblog
# Install theme (already included)
git submodule update --init --recursive
# Run locally
hugo server -DVisit http://localhost:1313 in your browser.
hugo new posts/my-post-title.mdCreate a new file in content/posts/ with this structure:
---
title: "Post Title"
date: 2025-12-21
draft: false
tag: [tag1, tag2]
description: "Brief summary"
---
Your content here...title— Post headingdate— Publication date (ISO format)draft: false— Set totrueto hide from sitetag— Tags for organizing posts (as list)description— Shows in post previews and metadata
- ✅ Set
draft: falsein frontmatter - ✅ Add meaningful
description(shows in search & OG previews) - ✅ Use
tagfield (helps with categorization) - ✅ Check date format:
YYYY-MM-DDTHH:MM:SS±ZZ:ZZorYYYY-MM-DD
- Markdown syntax supported (headings, lists, code blocks, links, images)
- Code highlighting works automatically
- Images go in
static/images/— reference as/images/filename - Table of contents auto-generated if post is long enough
- Edit
config.ymlfor:- Site title, description, author
- Social links (Twitter, GitHub, LinkedIn, etc.)
- Theme settings (dark mode, reading time, sharing buttons)
# Build static site (output in /public)
hugo
# Deploy to production (via Netlify, Vercel, etc.)
# Push to git — auto-deploys on Netlify
git pushhugo server -D # Preview locally (with drafts)
hugo # Build for production
hugo new posts/test.md # Create new post├── content/ # Blog posts
│ └── posts/
├── layouts/ # Custom templates (overrides theme)
├── static/ # Static files (images, etc.)
├── config.yml # Site config
└── themes/PaperMod/ # Theme