A clean, distraction-free microblog powered by GitHub Issues and Hugo. Easily write, tag, and publish posts with a beautiful, mobile-friendly interface.
Demo: Live Site
- Microblog Style: Full content display, no click-through required
- GitHub Issues as CMS: Write and manage posts directly from GitHub
- Mobile Friendly: Responsive design for all devices
- Tag Support: Organize content with GitHub labels
- Dark Mode: Automatic and manual theme switching
- No Database Required: All content stored in GitHub Issues
- Minimalist Design: Pure black & white, subtle borders, right-aligned metadata
- Congo Theme Powered: Built on the highly customizable Congo theme for Hugo
- Multilingual Support: Theme supports 30+ languages out of the box
- Modern Hugo Features: Utilizes latest Hugo capabilities for optimal performance
📖 Based on Two Excellent Projects
This microblog combines the power of two outstanding open-source projects:
- issues-blog - GitHub Issues as CMS integration
- Congo Theme - Modern, highly customizable Hugo theme
For initial setup and deployment, please follow the comprehensive Quick Start Guide from the original issues-blog project.
- Create Repository: Use this template → "Use this template" → "Create a new repository"
- Edit Configuration:
- Modify
go.mod(first line) to your<user>/<repo> - Update
config/_default/config.toml→ setbaseURLto your domain
- Modify
- Create Content: Add issues to your repository using Markdown
- Deploy: Close issues to trigger GitHub Actions → Enable GitHub Pages
For detailed instructions, see the original quick start guide.
Once you have the basic setup working, use these instructions for local development and customization:
- Install Hugo (extended version required):
To install a specific version (e.g., 0.145.0):
brew install hugo
brew uninstall hugo brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/5e5c3e1c33c8cef9e7d3cf3cfec74027e0698ece/Formula/h/hugo.rb
- Install Deno (for GitHub Issues integration):
brew install deno
- Start the Hugo development server:
hugo server -D
- Open your browser and visit the local server address (usually http://localhost:1313/).
- Edit files in the
content/posts/directory. Hugo will auto-refresh the site.
- Set environment variables:
Note: Register token: https://github.com/settings/tokens
export GITHUB_TOKEN="your-github-token" export GITHUB_REPOSITORY="owner/repo"
- Run:
This fetches content from GitHub Issues and starts the dev server.
make fetch # just fetch content from github make dev # fetch content and run local server make clean # clean up fetched data which MUST be applied before pusing code to github
This project uses the Congo theme which provides extensive customization options:
- Theme Parameters: Extensive configuration via
config/_default/params.toml - Multi-language Support: 30+ languages supported out of the box
- Color Schemes: Built-in color schemes (congo, avocado, cherry, fire, ocean, sapphire, slate)
- Layout Options: Multiple homepage layouts (page, profile, custom)
- Advanced Features: Analytics integration, SEO optimization, social sharing
📖 For complete theme configuration options, see: Congo Documentation
- Edit files in
layouts/for instant changes. - Key files:
layouts/index.html– Home pagelayouts/posts/list.html– Post listlayouts/partials/extend-head.html– Custom head (appearance switcher, etc.)
- Edit
assets/css/custom.cssfor custom styles. - Use browser dev tools (F12) for live CSS tweaks, then copy changes to
custom.css.
Common adjustments:
- Top margin:
.microblog-containerpadding-top - Post spacing:
.microblog-postmargin-bottom - Border:
.microblog-postborder - Padding:
.microblog-postpadding - Date position:
.microblog-post .post-metamargin-top/padding-top
- Site title:
config/_default/languages.en.toml(title) - Navigation:
config/_default/menus.en.toml - Parameters:
config/_default/params.toml - Congo Theme Settings: See Congo configuration docs for all available options
- Add Markdown files to
content/posts/ - Test text, code, images, etc.
- About page: Edit
content/about.md
hugo --gc --minify
ls -la public/.
├── layouts/ # Templates
│ ├── index.html # Home page
│ ├── posts/
│ │ └── list.html # Post list
│ └── partials/
│ └── extend-head.html # Custom head (CSS, appearance switcher)
├── assets/
│ └── css/
│ └── custom.css # Custom styles
├── content/
│ ├── posts/ # Posts
│ └── about.md # About page
├── config/
│ └── _default/
│ ├── config.toml # Main config
│ ├── languages.en.toml # Language & title
│ ├── menus.en.toml # Navigation
│ └── params.toml # Theme params
└── scripts/
└── main.ts # GitHub Issues sync
- Home (
/) – All microblog posts - Posts (
/posts/) – Post list - Tags (
/tags/) – All tags - About (
/about/) – About page
- Light/dark mode toggle in the top navigation bar
- Code in
layouts/partials/extend-head.html - Features:
- Auto-detects and adds to navigation
- Supports light/dark mode
- Uses localStorage for user preference
- Responsive icon (sun/moon)
- Hugo Version Errors:
hugo version
- Styles Not Applied:
- Clear browser cache
- Restart Hugo server
- Check
layouts/partials/extend-head.htmlfor CSS
- Content Not Displayed:
- Ensure posts are in
content/posts/ - Check frontmatter
- Run
hugo server -Dfor drafts
- Ensure posts are in
- Appearance Switcher Not Visible:
- Check browser console for JS errors
- Ensure
layouts/partials/extend-head.htmlexists - Clear browser cache and refresh
IMPORTANT:
Before deploying, always edit
config/_default/config.tomland setbaseURLto your own domain. If you skip this, domain mapping will not work correctly, even if you set up DNS or custom domains.
For Custom Domain Deployment:
If using a custom domain, you MUST update the CNAME configuration in
.github/workflows/build.yml:- name: Add CNAME for custom domain run: echo 'your-domain.com' > public/CNAME # Replace with your domainOtherwise, every GitHub Actions run will reset your custom domain settings and cause deployment failures.
Remove test files before deploying:
rm content/posts/test-*.mdOr use:
make clean