Two-column magazine-style layout, suitable for blogs focused on article lists and body reading
kopi — Hugo Blog Template
By bect
Kopi is an MIT-licensed Hugo blog theme that provides a two-column magazine-style layout, system-following dark mode, Turbo-based page navigation, and Mermaid diagram support. It requires the Hugo Extended version to build.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Dark mode automatically switches based on system settings
Uses Turbo for in-site page navigation
Supports rendering Mermaid diagrams in content
Built-in optional Radio component, with the radio list configured via data/radio.yaml
Provides a GitHub Pages deployment workflow that can be copied directly into a repository
Template Details
Kopi is a Hugo theme for blogs that uses a two-column magazine-style layout and automatically switches to dark mode based on system settings. Page navigation is powered by Turbo to reduce full-page reloads during in-site navigation; the theme also supports rendering Mermaid diagrams in content. Styles are compiled from SCSS using Dart Sass, so the Extended build of Hugo is required.
There are three installation methods: create a new Hugo site and add the theme as a git submodule, add the submodule to an existing Hugo site and set theme in hugo.yaml, or directly use the theme's included GitHub Pages deployment workflow. That workflow automatically clones the theme repository when themes/kopi is missing, and forces theme to kopi when no theme is configured or a different theme is configured.
The theme includes an optional Radio component: add RADIO to the homepage outputs to enable it, and remove it to disable it; the radio list is maintained via /data/radio.yaml, where each entry can include a title, description, stream URL, location, and official website URL. The theme code is MIT-licensed and may be used, modified, used commercially, and distributed for free, but third-party assets such as demo images, fonts, and icons require separate license verification.
Is it right for your project?
Use Cases
- Building a Hugo blog from scratch and applying an existing theme
- Changing an existing Hugo site to a two-column magazine-style appearance
- Deploying a static blog on GitHub Pages and using the included workflow for builds
- Embedding Mermaid diagrams in blog posts
- Displaying a customizable radio playlist on the site homepage
Suitable For
- Bloggers using Hugo who want a two-column magazine-style layout
- Static sites that need dark mode and smooth in-site navigation
- Users planning to deploy to GitHub Pages via GitHub Actions
- Writers who need to display Mermaid diagrams in articles
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
The Hugo Extended version is required because the theme compiles SCSS via Dart Sass
- 2
When creating a new site, you can add the theme to themes/kopi as a git submodule and set theme: 'kopi' in hugo.yaml
- 3
For an existing site, you only need to add the submodule and configure the theme field
- 4
When deploying to GitHub Pages, you can copy exampleSite/.github/workflows/deploy.yml into the repository and set Source to GitHub Actions in Settings → Pages
- 5
The Radio component is disabled by default; add RADIO to the homepage outputs and maintain radio entries via /data/radio.yaml
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version in the public repository under the MIT license; the free scope applies to that version's code and does not mean external services or third-party assets are free.
Must comply with when using
- The code of this version may be used, modified, used commercially, and distributed for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- The Hugo Extended build (0.157.0 or later) is required because the theme compiles SCSS via Dart Sass; standard Hugo cannot build it.
- When using the included GitHub Pages deployment workflow, if themes/kopi is missing, the theme repository is cloned automatically, and the site theme is forced to kopi, which may overwrite your existing theme configuration.
- The deployment workflow forces theme to kopi when no theme is configured or a different theme is configured, which is an automatic rewrite of the site configuration.
- The Radio component is disabled by default; add RADIO to the homepage outputs and maintain radio entries via /data/radio.yaml. External services such as radio stream URLs are provided by the user, who bears the corresponding costs and compliance responsibilities.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
it requires the **Extended** build of Hugo
Original README
The workflow makes these fallbacks so a bare site always builds with Kopi:
Original README
If no `theme` is configured, or `theme` points to any other theme, the workflow forces `theme: 'kopi'`
Original README
https://github.com/bect/kopi/blob/main/LICENSEhttps://github.com/bect/kopi/blob/main/README.mdedit `/data/radio.yaml` using this format per station
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 83 / 100
- Technologies
- Hugo
- Website type
- Blog
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-09-16
- Screenshot last checked
- 2026-10-02
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Hugo as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: eb997fa0f556ce6ca295d470047a073d014e28290d3ed69800c80606de0f5784
2026-10-02T17:10:24.450Z
Source file / repository# Kopi Hugo Theme
Kopi is a Hugo theme with a two-column magazine layout, system-driven dark mode, Turbo-based page navigation, and Mermaid diagram support. It compiles SCSS with Dart Sass, so it requires the **Extended** build of Hugo.
[](https://github.com/bect/kopi/actions/workflows/deploy.yml)
**[Live Demo](https://bect.github.io/kopi/)**
[](https://bect.github.io/kopi/)
## Requirements
Hugo **Extended** version `0.157.0` or higher.
## Installation
Choose one of the three setup routes below.
### 1. New Hugo blog
Start a site from scratch and add the theme as a submodule:
```bash
hugo new site your-blog
cd your-blog
git init
git submodule add https://github.com/bect/kopi.git themes/kopi
echo "theme: 'kopi'" >> hugo.yaml
hugo server -D
```
### 2. Existing Hugo blog
Add the theme to a site you already have:
```bash
git submodule add https://github.com/bect/kopi.git themes/kopi
```
Then set the theme in `hugo.yaml`:
```yaml
theme: 'kopi'
```
### 3. Deploy to GitHub Pages instantly
The theme ships a ready-to-use deployment workflow at
`exampleSite/.github/workflows/deploy.yml`. Copy it into your repo and push —
no local theme setup required.
```bash
# inside your site's repository
mkdir -p .github/workflows
cp /path/to/kopi/exampleSite/.github/workflows/deploy.yml .github/workflows/
git add .github/workflows/deploy.yml
git push
```
Then complete the setup in GitHub:
1. Push the site's repository to GitHub (your site lives at the repo root).
2. In **Settings → Pages**, set *Build and deployment* → *Source* to **GitHub Actions**.
3. Push a commit to `main` (or run the workflow manually from the **Actions** tab).
The workflow makes these fallbacks so a bare site always builds with Kopi:
- If `themes/kopi` is not present (or not added as a submodule), the workflow
clones `https://github.com/bect/kopi.git` into `themes/kopi`.
- If no `theme` is configured, or `theme` points to any other theme, the
workflow forces `theme: 'kopi'` in `hugo.yaml`/`config.yaml`/`config.toml`
(or creates `hugo.yaml` if no config file exists).
## Configuration
Add the following to your site's `hugo.yaml`. See `exampleSite/hugo.yaml` for a full example.
```yaml
baseURL: 'https://example.com/'
languageCode: 'en-US'
title: 'Your Site Title'
theme: 'kopi'
params:
subtitle: 'Your site subtitle or tagline'
author:
name: "Your Name"
bio: "A short bio about yourself."
link: "#" # Link to your profile or about page
role: "Your Role"
menus:
main:
- name: 'Home'
pageRef: '/'
weight: 10
- name: 'About'
url: '/about'
weight: 20
mediaTypes:
application/radio+json:
suffixes:
- json
outputFormats:
RADIO:
mediaType: application/radio+json
baseName: radio
isPlainText: true
notAlternative: true
outputs:
home:
- HTML
- RSS
- JSON
- RADIO
```
## Radio Widget
The radio widget is controlled by your site's `hugo.yaml`.
- **Enable**: add `RADIO` to the `outputs` list for the home page (shown in the configuration above).
- **Disable**: remove `RADIO` from the `outputs` list:
```yaml
outputs:
home:
- HTML
- RSS
- JSON
```
**Customize the playlist**: edit `/data/radio.yaml` using this format per station:
```yaml
- title: "Station Name"
description: "A short description of the station."
stream_url: "https://stream.url/here"
location: "City, Country"
website_url: "https://station-website.com"
```
## License
This theme is licensed under the **MIT License**. See the LICENSE file for more details.
## Acknowledgements
- Turbo.js for the fast navigation.
- Mermaid.js for diagram rendering.Explore similar templates
Compare previews and descriptions within the same stack and category.

hugo-PaperMod
A fast, clean, responsive Hugo theme for blogs and lightweight portfolios, with three layout modes (Regular, Home-Info, Profile), automatic and manual light/dark themes, Fuse.js client-side search, multilingual support, and built-in Open Graph, Twitter Cards, and Schema.org data.
Hugo · Portfolio

LoveIt
LoveIt is a clean, elegant, and feature-rich Hugo blog theme derived from LeaveIt and KeepIt, MIT-licensed. It offers light/dark modes, responsive layout, multilingual support, and search via Lunr.js or Algolia.
Hugo · Blog

hugo-coder
hugo-coder is a minimalist Hugo blog theme maintained by luizdepra under the MIT license. It provides a clean, text-focused blog appearance, configuration documentation in the docs directory, and a complete exampleSite with hugo.toml.
Hugo · Blog

blowfish
Blowfish is a Hugo personal website and blog theme built with Tailwind CSS 4, focused on lightness, simplicity, and content-first presentation.
Hugo · Blog

hugo-paper
hugo-paper is a simple, clean, and customizable Hugo blog theme configured through config.toml or hugo.toml.
Hugo · Blog

hextra
Hextra is a Hugo theme for documentation and blog sites, built on Hugo and Tailwind CSS with design referencing Nextra.
Hugo · Documentation
