This blog is generated by a custom Static Site Generator (SSG) built from scratch with Go. It features a frontend pipeline and a fully automated deployment process using GitHub Actions.
Website link: https://chebread.github.io/
- Features
- Tech Stack
- How to Run
- How to Use devd
- How to Use localias
- How to Create Manual Anchor Links
- How to Deploy
- License
- Custom Go SSG
- Markdown-Based Content
- Build-Time Syntax Highlighting
- Image Zooming
- Manual Anchor Links for Headings
- Frontend Tooling
- Automated CI/CD Pipeline
- Static Site Generator (SSG): Go
- Content: Markdown with YAML Front Matter parsed with Goldmark
- Styling: SCSS compiled with Dart Sass
- JavaScript: TypeScript (bundled with esbuild)
- Image Zoom: medium-zoom
- Package Manager: pnpm
- Deployment: GitHub Actions
go install github.com/cortesi/devd/cmd/devd@latest
brew install chroma
chroma --html-styles --style=github > layout/styles/chroma.css
pnpm installpnpm run buildpnpm run servepnpm run watchThis command checks for changes to layout directory files and executes pnpm run build.
devd DIR_NAME # Run the server from the DIR_NAME directory
devd -l DIR_NAME # Run the server using livereload
devd -o DIR_NAME # Run the server and Open the browser
devd -ol DIR_NAME # Run the server and open a browser using livereload
killall devd # Kill devd processlocalias set devd.test 8000
localias remove devd.test
localias clear
localias list
localias status
localias start
localias stop
localias runYou can create links that jump to specific headings within a page. This is useful for building a table of contents.
Append {#your-custom-id} directly after your heading text. This ID will be the target for your link.
## My Awesome Section {#section-1}Use the standard Markdown link syntax. The URL part should be a # followed by the custom ID you created.
[Go to my awesome section](#section-1)## Table of Contents
- [Go to Section 1](#section-1)
- [Go to Section 2](#section-2)
## My Awesome Section {#section-1}
Here is the content for the first section.
## Another Awesome Section {#section-2}
Here is the content for the second section.It is recommended to use only letters, numbers, and hyphens (-) for IDs to ensure URL compatibility. Special characters (like ?, &) should be avoided. Korean characters are also supported.
To publish a new post or deploy changes, you must push a specially formatted Git tag. The deployment is handled automatically by GitHub Actions.
First, make sure all your new content and changes are committed to the main branch.
# Stage all changes
git add .
# Commit the changes
git commit -m "post: foo: boo"
# Push the commit to the main branch
git push origin mainThe deployment workflow is triggered by a tag. Create a new tag based on the current date. The format is post/YYYY-MM-DD-XX, where XX is a two-digit number for posts on the same day (e.g., 01, 02).
# Example for the first post on September 23, 2025
git tag post/2025-09-23-01Push the newly created tag to GitHub. This is the final step that will trigger the automatic build and deployment process.
git push origin post/2025-09-23-01You can now go to the Actions tab in your GitHub repository to watch the deployment progress. Your site will be live with the new content in a few minutes.
MIT LICENSE © 2025 Cha Haneum
