HugoStarter

hugo-theme-yinyang — Hugo Starter Template

By joway

YinYang is a black-and-white Hugo blog theme that supports multilingual content, Disqus comments, and SEO-related configuration.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Minimalist black-and-white visual style

02

Multilingual content directory support

03

Disqus comment integration

04

Standalone SEO template partial

05

Images under assets/images automatically converted to WebP with srcset generation

06

Configurable extra head, extra CSS, and content inserted before and after posts

Template Details

YinYang is a minimalist black-and-white blog theme for Hugo. The repository is MIT-licensed, and the demo site is blog.joway.io. The theme centers on a black-and-white palette and minimalist typography, making it suitable for personal writing blogs.

In terms of features, the theme provides multilingual support (separate content directories per language via contentDir), Disqus comment integration, and a standalone SEO template partial. Configuration options cover the site title, main content sections (mainSections), footer social links, extra head content, extra CSS files, Twitter Cards, and content inserted at the top and bottom of posts.

There are clear usage constraints: Hugo extended 0.158 or later is required; older versions will error on .Language.Label or .Site.Language.Locale. Images under assets/images/ are converted to WebP and generate srcset, while images under static/ are served as-is. The lazyImage and staticPrefix parameters are no longer needed and will be ignored. Setting params.extraHeadProductionOnly = true skips extraHead during hugo server. Installation is done by adding the repository as a git submodule to themes/yinyang and setting theme = "yinyang" in config.toml.

HugoLauncher

Is it right for your project?

Use Cases

  • Building a personal writing blog
  • Running a multilingual blog site
  • Static blogs that need Disqus comments
  • Blogs that want unified control over additional content at the top and bottom of posts

Suitable For

  • Personal bloggers using Hugo
  • Writers who prefer minimalist black-and-white typography
  • Sites that need multilingual content organization
  • Developers who accept managing the theme as a git submodule

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Requires Hugo extended 0.158 or later; older versions will error on .Language.Label / .Site.Language.Locale.

  2. 2

    Run git submodule add https://github.com/joway/hugo-theme-yinyang.git themes/yinyang in the site root, and set theme = "yinyang" in config.toml.

  3. 3

    Images under assets/images/ are converted to WebP and generate srcset; images under static/ remain as-is.

  4. 4

    The lazyImage and staticPrefix parameters are no longer needed and will be ignored if set.

  5. 5

    Setting params.extraHeadProductionOnly = true skips extraHead during hugo server.

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version in the public repository under the MIT license; the free scope applies to this version's code and does not imply that external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute this version's code 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

  • Using this theme requires Hugo extended version 0.158 or later; older versions will error at .Language.Label or .Site.Language.Locale and cannot build properly.
  • The comment feature depends on the third-party Disqus service; you must register a Disqus account and enter the disqus account name in the configuration. Comment data is hosted by an external service.
  • If you need site analytics, you must integrate Google Analytics and enter your own G-XXXXXXXXXX tracking ID, which is an external third-party service.
  • The subscription link in the example configuration points to the author's own Mailchimp mailing list; using it directly will direct readers to the original author's subscription service, so it must be replaced with your own link.
  • The staticPrefix in the example points to the author's personal CDN repository address; copying it will reference someone else's resources. This parameter is ignored in newer versions.
  • The example footer includes images and links pointing to the CC BY-NC-ND 4.0 license, which prohibits commercial use and derivatives; if you retain this example content, note its non-commercial restrictions, and the images come from the author's site.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they 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

Hugo **extended** >= 0.158 (older versions fail on `.Language.Label` / `.Site.Language.Locale`).

Original README

[disqus](https://disqus.com) support

Original README

[services.googleAnalytics] id = "" # e.g. G-XXXXXXXXXX

Original README

postFooterContent = "<br/><br/><p>Subscribe:<a target='_blank' href='https://mailchi.mp/a1a0d59e7a19/joway'>Joway's Blog</a></p>"

Original README

staticPrefix = "https://cdn.jsdelivr.net/gh/joway/blog"

Original README

postFooterContent = '<br/><br/><p>Subscribe:<a target="_blank" href="https://mailchi.mp/a1a0d59e7a19/joway"><b>Mailchimp</b></a></p><br/><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://blog.joway.io/images/cc.png" /></a>'

Original README
https://github.com/joway/hugo-theme-yinyang/blob/master/LICENSE.mdhttps://github.com/joway/hugo-theme-yinyang/blob/master/README.md

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
Hugo Themes
Documentation and maintenance reference score
More documented · 83 / 100
Technologies
Hugo
Website type
Starter
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-12
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: 36edd2beb801378b9acac161493be342f41c5e7a5e2155ca543e5037e6534790

2026-10-02T14:55:14.019Z

Source file / repository
# YinYang

[YinYang](https://en.wikipedia.org/wiki/Yin_and_yang) is a black-white theme for [Hugo](https://gohugo.io/).

[**Demo**](https://blog.joway.io)

> **Requirements:** Hugo **extended** >= 0.158 (older versions fail on `.Language.Label` / `.Site.Language.Locale`).
> Images under `assets/images/` are converted to WebP with `srcset`; images under `static/` are served unchanged.
> `lazyImage` and `staticPrefix` are no longer needed (native `loading="lazy"` is used) and are ignored.
> Set `params.extraHeadProductionOnly = true` to skip `extraHead` during `hugo server`.


## Feature

- minimalist
- multi-language support
- [disqus](https://disqus.com) support
- [SEO Optimization](https://github.com/joway/hugo-theme-yinyang/blob/master/layouts/partials/seo.html)

## Screenshot

![](./images/screenshot.png)

## Installation

From the root of your site:

```shell
git submodule add https://github.com/joway/hugo-theme-yinyang.git themes/yinyang
```

Change `config.toml`:

```toml
theme = "yinyang"
```

## Configuration

### Head Title

```
[params]
headTitle = "Joway Wang"
```

If there is no `headTitle` in params, use `.Site.Params.author.name`.

### Main section

Set your main section:

```
[params]
mainSections = ["posts"]
```

### Multi-Language

```
[languages]
  [languages.en]
    contentDir = "content/en"
    languageName = "English"
    weight = 1
  [languages.cn]
    contentDir = "content/cn"
    languageName = "Chinese"
    weight = 2
```

Then your posts files should be put into `content/en` or `content/cn`.

### Footer

```
[[params.socials]]
name = "About Me"
link = "https://joway.io"
[[params.socials]]
name = "Github"
link = "https://github.com/joway"
```

### Extra Head

```
[params]
extraHead = '<script src="xxxx.js"></script>'
```

### Extra CSS files

```
[params]
extraCSSFiles = ["css/foo.css", "css/bar.css"]
```

### Twitter Cards

Add the following setting:

```
[params]
twitterCards = true
```

In a post's front matter, include a keyword `images` with a value of a list of
URLs of images that will be used for Twitter Cards.

### Insert content on every post

```
[params]
postHeaderContent = ""
postFooterContent = "<br/><br/><p>Subscribe:<a target='_blank' href='https://mailchi.mp/a1a0d59e7a19/joway'>Joway's Blog</a></p>"
```

### Example

```
# ---------- Site ----------
baseURL = "https://blog.joway.io/"
languageCode = "en-us"
theme = "yinyang"
title = "Random Thoughts"
DefaultContentLanguage = "cn"
canonifyURLs = false
enableRobotsTXT = true

# ---------- Content Language ----------
[languages]
# [languages.en]
#   contentDir = "content/en"
#   languageName = "English"
#   weight = 1
[languages.cn]
contentDir = "content/cn"
languageName = "简体中文"
weight = 2

# ---------- URL ----------
[permalinks]
post = "/blog/:title/"

# ---------- Markdown / Highlight ----------
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
[markup.highlight]
guessSyntax = true
noClasses = false
style = "tango"
tabWidth = 2

# ---------- Theme Params ----------
[params]
description = "Log something useless, but interesting." 
disqus = "joway" # disqus account name
extraHead = ''
favicon = "/logo.png" 
headTitle = "Random Thoughts" 
mainSections = ["posts"] 
postFooterContent = '<br/><br/><p>Subscribe:<a target="_blank" href="https://mailchi.mp/a1a0d59e7a19/joway"><b>Mailchimp</b></a></p><br/><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://blog.joway.io/images/cc.png" /></a>' 
postHeaderContent = "" 
staticPrefix = "https://cdn.jsdelivr.net/gh/joway/blog" 
# extraBody = '<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>'
# postAds = '<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6400651395935595" data-ad-slot="5705651853" data-ad-format="auto" data-full-width-responsive="true"></ins>'
lazyImage = true

# ---------- Analytics ----------
[services]
  [services.googleAnalytics]
    id = "" # e.g. G-XXXXXXXXXX

# ---------- Author ----------
[params.author]
homepage = "https://joway.io/"
name = "Joway"

# ---------- Social Links ----------
# [[params.socials]]
# name = "Telegram"
# link = "https://t.me/biosthinking"

# [[params.socials]]
# name = "RSS"
# link = "/index.xml"

# [[params.socials]]
# name = "Slides"
# link = "/presentations"

[[params.socials]]
link = "https://mailchi.mp/a1a0d59e7a19/joway"
name = "Subscribe"
[[params.socials]]
link = "/travel"
name = "Travel"
[[params.socials]]
link = "https://joway.io"
name = "About"

# ---------- Optional: Related Posts ----------
# [related]
# includeNewer = true
# threshold = 80
# toLower = false
# [[related.indices]]
# name = "date"
# weight = 100
# [[related.indices]]
# name = "keywords"
# weight = 100
```
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

hugo-xmin

hugo-xmin

hugo-xmin is an extremely minimal Hugo theme written by Yihui Xie for template beginners. HTML and CSS total about 140 lines, with no external dependencies, and it uses the MIT license.

Hugo · Starter

hugo-theme-gallery

hugo-theme-gallery

A Hugo Extended photo gallery theme that organizes images with Page Bundles, automatically generating album lists and gallery pages with a Justified layout and PhotoSwipe lightbox.

Hugo · Starter

reveal-hugo

reveal-hugo

reveal-hugo is a Hugo theme that converts Markdown content into Reveal.js-based HTML presentations. It supports slide separation with `---`, shortcodes for fragments, slides, sections, notes, Markdown, and MathJax, and organizes content as root or section presentations with order controlled by weight.

Hugo · Starter

anatole

anatole

Anatole is a minimalistic two-column Hugo theme ported from farbox-theme-Anatole, featuring dark mode, multilingual and RTL support, and optional portfolio, comments, analytics, KaTeX, and Mermaid integrations. It suits personal blogs, portfolios, or documentation sites built with Hugo.

Hugo · Starter

hugo-theme-diary

hugo-theme-diary

A Hugo diary-style theme ported from the Hexo theme Journal, with a grid homepage for essays and daily notes. It supports six languages, dark mode, table-of-contents scroll positioning, reading time, code highlighting, and configurable sidebar, fonts, and colors.

Hugo · Starter

risotto

risotto

risotto is a minimalist, responsive Hugo theme inspired by terminal ricing aesthetics. It uses semantic HTML and pure CSS with no JavaScript, and its layout relies on CSS Grid for native responsiveness without manual breakpoints.

Hugo · Starter