This is the source code for https://blog.sunix.org - Sun Seng David TAN's (a.k.a Sunix) personal blog about Java, Cloud, and Open Source Software Development.
This blog is built with the following technologies:
- Quarkus 3.25 - Supersonic Subatomic Java Framework
- Roq 1.8 - Static site generator for Quarkus
- Java 21 - Programming language
- Maven - Build tool
- Tailwind CSS - CSS framework (via Quarkus Web Bundler)
- Qute - Templating engine
- GitHub Pages - Hosting platform
- Surge.sh - PR preview deployments
- Java 21 or higher
- Maven 3.9+ (or use the included Maven wrapper
./mvnw)
-
Clone the repository:
git clone https://github.com/sunix/blog.sunix.org.git cd blog.sunix.org -
Run the development server:
./mvnw quarkus:dev
The site will be available at
http://localhost:8080Dev mode features live reload - any changes to content or templates will be instantly reflected.
-
Build the site:
./mvnw clean package
The built application will be in
target/quarkus-app/
Create a new directory under content/posts/ with the format YYYY-MM-DD-post-slug/:
mkdir -p content/posts/2026-01-22-my-new-postCreate an index.md file inside with frontmatter:
---
layout: layouts/post.html
title: "My New Post Title"
date: "2026-01-22"
category: "articles"
tags:
- Java
- Quarkus
- Cloud
---
Your content here...Create HTML or Markdown files in the content/ directory:
touch content/my-page.htmlWith frontmatter:
---
layout: main
title: My Page Title
---
<div>
Your page content here...
</div>The blog is automatically deployed to GitHub Pages when changes are pushed to the gh-pages branch.
You can preview your changes before merging by commenting /preview on a pull request. This will trigger a GitHub Actions workflow that builds and deploys your PR to Surge.sh.
To enable PR previews, add a SURGE_TOKEN secret to the repository:
- Install surge:
npm install -g surge - Login:
surge login - Generate token:
surge token - Add the token as a secret in GitHub Actions settings:
- Go to: Repository Settings > Secrets and variables > Actions > New repository secret
- Name:
SURGE_TOKEN - Value: (paste the token from step 3)
On any pull request, comment /preview to trigger a preview build. The bot will:
- Comment when the build starts
- Deploy to
https://pr-{number}-sunix-blog-preview.surge.sh - Update the comment with the preview URL when ready
Enjoy.