HugoBlog

hugo-theme-nonentity — Hugo Blog Template

By snowme34

Nonentity is a minimal, responsive Hugo blog theme with a three-column layout: left navigation, main content, and right-side table of contents, tags, and categories. It includes full-text search, tag filtering, Giscus comments, and light/dark color scheme switching.

Explore the design

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

1 previews
Author preview
Author-provided previewTop of page

Preview provided in the project README.

One original preview is available. Open the full image to inspect the design.

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-04View source

What stands out

A quick read of the recorded project description.

01

Three-column layout: left navigation, main content, right-side table of contents and tags/categories

02

Responsive navigation: collapses to an icon bar on tablets and becomes a drawer on mobile

03

No JavaScript framework dependency; provides full-text search and tag AND/OR filtering

04

Supports Giscus comments, Cloudflare analytics, RSS, and instant light/dark color scheme switching

05

Links multilingual posts within the same section via the translations field in front matter

Template Details

Nonentity is a blog theme for Hugo that focuses on minimalism and responsiveness. The page uses a three-column structure: a navigation sidebar on the left, main content in the center, and table of contents, tags, and categories on the right. At tablet widths, the left navigation collapses into an icon bar; on mobile, it becomes a drawer-style navigation.

The theme does not rely on JavaScript frameworks. It provides full-text search across posts, pages, tags, and categories; the table of contents supports scroll position tracking; and tag filtering can switch between AND/OR modes. Comments use Giscus, analytics use Cloudflare, and RSS is supported. Code highlighting offers two color schemes: GitHub Light and Dracula Dark. The site color scheme can be switched instantly between light and dark.

Configuration is centralized under [params] in hugo.toml, covering site description, footer text, keywords, date format, favicon, pagination count, profile card, about link, social icons, left navigation extensions, table of contents, copyright and license badges, Giscus comments, and Cloudflare analytics. Post front matter supports categories, tags, toc, comment, excerpt, description, lang, and translations; translations links multilingual versions within the same section by listing each other's slugs, without enabling Hugo multilingual mode.

Before use, note the following: the theme requires Hugo >= 0.111.3; syntax highlighting and search depend on noClasses = false in [markup.highlight] and JSON output included for home in [outputs]. Comments render only on pages in the post section. Third-party assets such as demo images, fonts, and icons must be checked against their respective licenses; the code itself is under the MIT license.

HugoBlog

Is it right for your project?

Use Cases

  • Building a text-focused personal technical blog that needs a table of contents and tag/category organization
  • Projects that want to avoid front-end frameworks and rely solely on Hugo to output a static site
  • Blogs that need multilingual versions of the same post without enabling Hugo multilingual mode
  • Content sites using Giscus as the comment system and requiring tag filtering and full-text search

Suitable For

  • Developers familiar with Hugo configuration and front matter
  • Bloggers who prefer a minimal three-column reading layout
  • Writing sites that need light/dark color schemes and code highlighting
  • Users willing to prepare their own Giscus and Cloudflare credentials

Getting started & customization

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

  1. 1

    Requires Hugo >= 0.111.3; can be installed via git submodule or Hugo module, and set theme = "nonentity" in hugo.toml

  2. 2

    Must set noClasses = false in [markup.highlight] and add JSON to home in [outputs], otherwise syntax highlighting and search will not work

  3. 3

    Giscus comments require a public GitHub repository with Discussions enabled, and repoID and categoryID obtained from giscus.app

  4. 4

    Cloudflare analytics requires entering your own beacon token

  5. 5

    Third-party assets such as demo images, fonts, and icons must be checked for licenses separately; do not judge solely based on the code's MIT license

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; 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

  • 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

  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; do not judge solely based on the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
  • Enabling Giscus comments requires your own public GitHub repository with Discussions enabled, and obtaining credentials such as repoID and categoryID from giscus.app; this is an external service dependency.
  • Cloudflare analytics requires entering your own beacon token; this is an external service credential requirement.
  • Syntax highlighting and search depend on specific Hugo configuration (noClasses = false and home output including JSON); without them, the features are unavailable.
  • Comments render only on pages in the post section; other sections do not display comments.
  • Using this theme requires Hugo version 0.111.3 or later.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Requires a public GitHub repo with Discussions enabled. Get your IDs at [giscus.app](https://giscus.app).

Original README

token = "your-beacon-token"

Original README

These must be present for syntax highlighting and search to work correctly.

Original README

Comments are rendered only on pages in the `post` section.

Original README

Hugo `>= 0.111.3`

Original README
https://github.com/snowme34/hugo-theme-nonentity/blob/main/LICENSEhttps://github.com/snowme34/hugo-theme-nonentity/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-05. 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
Partly documented · 68 / 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-04-20
Screenshot last checked
2026-10-05

No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.

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.

Review declaration: [email protected] · 2026-10-05

Inspect the recorded source material

SHA-256: df2e63a9c314cfd079cc6f00276bd759007ab8db01f5bff4a2a9859b60e8e653

2026-10-05T00:45:36.015Z

Source file / repository
# Nonentity

A minimal, responsive, searchable Hugo blog theme. Three-column layout: left nav sidebar, content, right sidebar (TOC / tags / categories).

![Screenshot](example.png)

## Features

- No JavaScript frameworks
- Responsive — collapses to rail nav on tablet, drawer nav on mobile
- Full-text search across posts, pages, tags, and categories
- Table of contents with scroll tracking
- Tag filtering with AND/OR mode
- Giscus comments, Cloudflare Analytics, RSS
- Syntax highlighting (GitHub light / Dracula dark)
- Light and dark color scheme with instant switching

## Requirements

Hugo `>= 0.111.3`

## Installation

### Git submodule

```bash
git submodule add https://github.com/snowme34/hugo-theme-nonentity themes/nonentity
```

Set `theme = "nonentity"` in `hugo.toml`.

### Hugo module

```toml
[module]
  [[module.imports]]
    path = "github.com/snowme34/hugo-theme-nonentity"
```

## Configuration

All options go under `[params]` in `hugo.toml` unless noted otherwise.

### Site

```toml
[params]
  description           = "Used in <meta name=description> for SEO."
  footerText            = "Text shown at the bottom of every page."
  keywords              = ["blog", "developer"]   # <meta name=keywords>
  dateFormat            = "January 2, 2006"       # Go time format
  favicon               = "/images/favicon.png"   # Path to favicon
  enableRSS             = true                    # Adds RSS link in <head> and sidebar footer
  showColorSchemeToggle = true                    # Show the light/dark toggle button
  rightSidebarInfo      = "Text shown in the right sidebar info panel. Falls back to description if not set."
  rightSidebarInfoTitle = "About"                 # Title of the right sidebar info panel
```

### Pagination

```toml
[params]
  paginate         = 15   # Posts per page on home and section lists
  paginateArchive  = 10   # Posts per page on archive (/post/)
  paginateTaxonomy = 5    # Posts per page on a single tag or category page (e.g. /tags/hugo/)
  paginateTags     = 15   # Posts per page in the tag filter results on /tags/
```

### Profile card

Shown at the top of the left sidebar.

```toml
[params.profile]
  avatar = "/images/avatar.png"  # Path to avatar image
  name   = "Your Name"
  bio    = "Short bio line"
  link   = "/"                   # Where clicking the avatar goes
```

### About link

By default the "About" nav item links to your local `about/` page. Set `params.about.url` to redirect it to an external URL instead.

```toml
[params.about]
  url = "https://example.com/about"   # omit to use the local about/ page
```

### Social links

Displayed in the sidebar footer. Sorted by `weight` (ascending).

Built-in icon names: `github`, `x`, `instagram`, `mastodon`, `youtube`, `bilibili`, `rss`.

```toml
[[params.socials]]
  name   = "GitHub"
  url    = "https://github.com/you"
  icon   = "github"
  weight = 1
```

For a custom icon, use `iconSvg` instead of `icon`:

```toml
[[params.socials]]
  name    = "My Site"
  url     = "https://example.com"
  iconSvg = "<svg ...></svg>"
  weight  = 10
```

### Extra left nav items

Add custom links to the left sidebar navigation, either before (`prepend`) or after (`append`) the default items.

```toml
[params.leftNavExtra]
  enable = true

  [[params.leftNavExtra.items]]
    name     = "GitHub"
    link     = "https://github.com/you"
    location = "append"   # "append" or "prepend"
    svg      = "<svg ...></svg>"
```

### Table of contents

Enabled globally here; can be overridden per-page with `toc: false` in front matter.

```toml
[params.toc]
  enable = true

[markup.tableOfContents]
  startLevel = 2
  endLevel   = 4
```

### Copyright and license badge

```toml
[params.copyright]
  text = "© 2026 Your Name"

  [params.copyright.license]
    enable = true
    name   = "CC BY-NC-SA 4.0"
    image  = "/images/cc-by-nc-sa.png"
    link   = "https://creativecommons.org/licenses/by-nc-sa/4.0/"
```

### Comments (Giscus)

Requires a public GitHub repo with Discussions enabled. Get your IDs at [giscus.app](https://giscus.app).

```toml
[params.comments.giscus]
  enable          = true
  repo            = "username/repo"
  repoID          = "R_..."
  category        = "General"
  categoryID      = "DIC_..."
  mapping         = "pathname"
  strict          = "0"
  reactionsEnabled = "1"
  emitMetadata    = "0"
  inputPosition   = "bottom"
  theme           = "preferred_color_scheme"
  lang            = "en"
  loading         = "lazy"
```

Comments are rendered only on pages in the `post` section.

### Analytics (Cloudflare)

```toml
[params.analytics.cloudflare]
  enable = true
  token  = "your-beacon-token"
```

### Required Hugo settings

These must be present for syntax highlighting and search to work correctly.

```toml
[markup.highlight]
  noClasses = false   # Required: use CSS classes, not inline styles

[outputs]
  home = ["HTML", "JSON", "RSS"]  # Required: JSON output powers search
```

## Front matter

| Key | Type | Description |
| --- | --- | --- |
| `categories` | string[] | Categories for this post. |
| `tags` | string[] | Tags for this post. |
| `toc` | bool | Per-page TOC override. `true` forces it on, `false` forces it off, regardless of the global `params.toc.enable` setting. |
| `comment` | bool | Set to `false` to disable comments on a specific post. Has no effect if comments are not globally enabled. |
| `excerpt` | string | Custom summary shown in post lists. Falls back to the first 180 characters of the page's plain text. |
| `description` | string | Page `<meta name="description">` for SEO. Takes highest priority; falls back to `excerpt`, then the auto-generated summary, then `params.description`. |
| `lang` | string | Language of this post (`en`, `zh`, `jp`). Used to localize the "Also available in:" label when `translations` is set. |
| `translations` | string[] | Slugs of translated versions of this post. Renders an "Also available in:" list linking to each. |

### Translations

Link translated versions of a post by listing each other's slugs. All posts remain in the same section; no multilingual mode required.

It is recommended to name translated files with the same base slug suffixed by the 2-character language code:

```
content/post/my-post-en.md
content/post/my-post-zh.md
content/post/my-post-jp.md
```

```yaml
# content/post/my-post-en.md
lang: en
translations:
  - "my-post-zh"
  - "my-post-jp"

# content/post/my-post-zh.md
lang: zh
translations:
  - "my-post-en"
  - "my-post-jp"
```

Each post renders a localized "Also available in:" block with links to the others. If a slug does not match any page, it is silently skipped.

## Design Credit

A rewrite from scratch for [hexo-theme-symphony](https://github.com/snowme34/hexo-theme-symphony), which is my fork of

- [hexo-theme-pure](https://github.com/cofess/hexo-theme-pure)
- [hexo-theme-dawn](https://github.com/Ruffianjiang/hexo-theme-dawn)

## License

MIT — see [LICENSE](LICENSE).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.