warbird site — documentation
table of contents
- project structure
- daily workflow
- writing blog posts
- managing projects
- updating about page
- adding social links
- customizing the look
- custom domain setup
- troubleshooting
project structure
~/warbird/
├── .github/
│ └── workflows/
│ └── deploy.yml ← github actions auto deploy
├── content/
│ ├── blog/ ← all blog posts go here
│ │ └── first-flight.md
│ ├── projects/
│ │ └── index.md ← projects page
│ └── about.md ← about page
├── themes/
│ └── warbird/
│ ├── layouts/ ← html templates
│ └── static/
│ └── css/
│ └── main.css ← all styles
└── hugo.toml ← site config
daily workflow
# 1. go to project
cd ~/warbird
# 2. make your changes (write post, edit page etc)
# 3. preview locally
hugo server
# open localhost:1313 in firefox
# 4. when happy, push to live
git add .
git commit -m "what you did"
git push
# site goes live in ~2 minutes automaticallywriting blog posts
every post is a markdown file inside content/blog/
create a new post:
nano ~/warbird/content/blog/your-post-name.mdrequired front matter at the top:
---
title: "Your Post Title"
date: 2026-03-04
summary: "one line that shows on homepage and blog list"
---
your content starts here...example post:
---
title: "Learning Vim"
date: 2026-03-04
summary: "why i switched to vim and never looked back"
---
## why vim
started using vim because i wanted full keyboard control...
## keybinds i use daily
- `dd` to delete a line
- `yy` to copy a line
- `p` to paste
## conclusion
vim is hard at first but worth it.push it live:
git add .
git commit -m "post: learning vim"
git pushnaming convention for post files:
good: learning-vim.md
good: my-cp-journey.md
bad: My Post.md
bad: post1.md
managing projects
edit the projects page:
nano ~/warbird/content/projects/index.mdformat for each project:
## project name
what it does, one or two lines
[visit →](https://link-to-project.com)
## another project
description here
[github →](https://github.com/abhkpr/repo)push:
git add .
git commit -m "projects: add new project"
git pushupdating about page
nano ~/warbird/content/about.mdfront matter must stay at top:
---
title: "About"
layout: "about"
date: 2026-03-01
---
your about content hereupdate this whenever: - you learn something new - you start a new project - your stack changes - you want to add/remove social links
adding social links
STEP 1 — add to hugo.toml:
nano ~/warbird/hugo.tomladd your links in the [params] section:
[params]
description = "thoughts, projects and notes"
author = "Abhishek Kumar"
github = "https://github.com/abhkpr"
notes = "https://abhkpr.github.io/notes"
twitter = "https://twitter.com/yourhandle"
linkedin = "https://linkedin.com/in/yourname"STEP 2 — add to about layout:
nano ~/warbird/themes/warbird/layouts/page/about.htmladd links inside .social-links div:
<div class="social-links">
<a href="{{ .Site.Params.github }}" target="_blank">github</a>
<a href="{{ .Site.Params.notes }}" target="_blank">notes</a>
<a href="{{ .Site.Params.twitter }}" target="_blank">twitter</a>
<a href="{{ .Site.Params.linkedin }}" target="_blank">linkedin</a>
</div>customizing the look
all styles are in one file:
nano ~/warbird/themes/warbird/static/css/main.csscolor variables at the top — change these to retheme entire site:
:root {
--bg: #1a1a14; /* main background */
--bg2: #222218; /* secondary background */
--cream: #e8dcc8; /* main text color */
--olive: #6b7c3a; /* primary accent */
--olive-lt: #8a9e4a; /* lighter accent */
--amber: #c8a84b; /* hover color */
--muted: #8a8a7a; /* muted text */
--border: #3a3a2a; /* border color */
}fonts:
:root {
--font-head: 'Special Elite', cursive; /* headings */
--font-mono: 'Share Tech Mono', monospace; /* body */
}to change fonts go to
themes/warbird/layouts/_default/baseof.html and update the
google fonts import link
custom domain setup
when you get a domain (free .tech from github student pack etc):
STEP 1 — update hugo.toml:
nano ~/warbird/hugo.tomlbaseURL = "https://yourdomain.tech/"STEP 2 — add CNAME file:
echo "yourdomain.tech" > ~/warbird/static/CNAMESTEP 3 — DNS settings on your registrar:
add these records:
Type: A Name: @ Value: 185.199.108.153
Type: A Name: @ Value: 185.199.109.153
Type: A Name: @ Value: 185.199.110.153
Type: A Name: @ Value: 185.199.111.153
Type: CNAME Name: www Value: abhkpr.github.io
STEP 4 — enable on github: - repo settings → pages - custom domain → enter your domain - enable enforce https
STEP 5 — push and wait:
git add .
git commit -m "add custom domain"
git pushDNS takes 10-30 mins to propagate
troubleshooting
site not updating after push: - check Actions tab on github — is workflow green? - if red, check the error in the failed step - wait 2-3 mins after green before checking live site
local preview broken:
hugo server --disableFastRenderworkflow permissions error: - repo → settings → actions → general - set read and write permissions - re-run failed jobs
post not showing up: - check date in front matter is
not in the future - check file is inside content/blog/ -
check SUMMARY is correct
styles not loading: - check baseURL in
hugo.toml matches your actual url - clear browser cache
ctrl + shift + r
quick reference
| task | command |
|---|---|
| new blog post | nano content/blog/name.md |
| preview locally | hugo server |
| push live | git add . && git commit -m "" && git push |
| edit styles | nano themes/warbird/static/css/main.css |
| edit config | nano hugo.toml |
| edit about | nano content/about.md |
| edit projects | nano content/projects/index.md |
✈ wheels up. keep writing, keep pushing.