HugoBlog

hugo-theme-lucent — Hugo Blog Template

By simple-is-awesome

Lucent is a single-column blog theme for Hugo that focuses on typography and does not rely on a JavaScript framework, with built-in dark mode, client-side search, table of contents, archives, KaTeX, giscus comments, and English and Simplified Chinese interfaces.

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-12View source

What stands out

A quick read of the recorded project description.

01

Single-column, typography-first layout that does not rely on a JavaScript framework

02

Dark/light mode follows the system and remembers the user's choice, with no flicker on load

03

Client-side search implemented with a JSON index generated by Hugo and native JS

04

Collapsible table of contents, archive page grouped by year, and tag cloud with counts

05

Code block copy buttons, dual-mode syntax highlighting, and hl_lines support

06

Built-in English and Simplified Chinese interface translations, plus a CJK-friendly font stack

Template Details

Lucent is a Hugo blog theme published on GitHub. It uses a single-column, typography-first layout and does not introduce a JavaScript framework. It is aimed at users who write personal blogs or content sites with Hugo, and it provides basic page structures such as post lists, post details, an archive page, and a search page.

In terms of features, the theme includes dark/light mode that follows the system and remembers the user's choice, client-side search implemented with a JSON index generated by Hugo and native JS, a collapsible table of contents that can be toggled per post, an archive page grouped by year and a tag cloud with counts, related posts based on Hugo content relationships, metadata such as reading time, word count, and last updated, code block copy buttons and dual-mode syntax highlighting, a reading progress bar and back-to-top button, image lightbox and lazy loading, optionally enabled KaTeX math formulas, giscus comments that load lazily and sync with the theme, Plausible/Umami/Google Analytics integration, and three shortcodes: notice, details, and quote. Interface text includes built-in English and Simplified Chinese translations, and a CJK-friendly font stack is provided.

There are some clear prerequisites for use: Hugo 0.128 or higher is required, and the standard version is sufficient because the theme does not use Sass; the search feature requires the home page to output JSON; syntax highlighting must use CSS classes; math formulas require enabling Goldmark's passthrough extension and writing with the specified delimiters; the archive page and search page require creating content files that use the archives and search layouts respectively; and comments require filling in the giscus repository and category identifiers yourself. Theme parameters, front matter options, and configuration examples are explained in the example site's hugo.toml.

Regarding licensing, the repository uses the MIT license, which allows use, modification, commercial use, and distribution of this version of the code, provided that the copyright and license notice are retained when distributing; third-party assets such as images, fonts, and icons in the demo need to be checked separately under their respective licenses.

HugoBlog

Is it right for your project?

Use Cases

  • Building a text-focused personal blog with Hugo
  • Static content sites that need dark mode and site search
  • Publishing technical articles with math formulas or code snippets
  • Adding comments to posts via giscus
  • Bilingual blogs aimed at Chinese and English readers

Suitable For

  • Users building sites with Hugo 0.128 or higher
  • Blog authors who prefer a single-column, typography-first reading experience
  • Developers who want to reduce front-end dependencies and implement interactions with native JS
  • Maintainers of content sites that need an archive page, tag cloud, and site search

Getting started & customization

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

  1. 1

    Requires Hugo 0.128 or higher; the standard version is sufficient, as the theme does not use Sass

  2. 2

    The search feature requires the home page output format to include json, i.e. outputs.home must include "json"

  3. 3

    Syntax highlighting requires setting markup.highlight.noClasses = false to use the theme's light and dark color schemes

  4. 4

    Math formulas require enabling the Goldmark passthrough extension and writing with $$…$$ and \(…\)

  5. 5

    The archive page and search page require creating content files that use the archives and search layouts respectively; giscus comments require filling in the repository, repository ID, category, and category ID

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 is this version of the code and does not mean that external services or third-party assets are free.

Must comply with when using

  • This version of the code may be used, modified, used commercially, and distributed free of charge.
  • 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 under 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.
  • The comment feature depends on the third-party service giscus; you must obtain and fill in configuration values such as the repository, repository ID, category, and category ID from giscus.app, which is an external service dependency.
  • Analytics requires integrating third-party external services such as Plausible, Umami, or Google Analytics, which may involve account registration and fees.
  • Using this theme requires Hugo version 0.128 or higher; the standard version is sufficient, and the extended version is not required.
  • The client-side search feature requires the home page output format to include JSON, and outputs.home must be set to include "json" in the configuration.
  • Syntax highlighting must use CSS classes, and markup.highlight.noClasses = false must be set; otherwise the theme's light and dark color schemes will not take effect.
  • Math formulas require enabling the Goldmark passthrough extension and writing with the $$…$$ and \(…\) delimiters; otherwise KaTeX cannot parse them correctly.
  • The archive page and search page require creating content files that use the archives and search layouts respectively; otherwise the corresponding pages cannot be generated.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Fill in the values from [giscus.app](https://giscus.app):

Original README

- 📈 **Analytics**: Plausible, Umami, or Google Analytics

Original README

Requires **Hugo ≥ 0.128** (standard edition is fine — no Sass).

Original README

# Search needs the JSON output format on the home page:

Original README

# Syntax highlighting must use CSS classes (the theme ships light+dark colors):

Original README

# For math: keeps LaTeX out of markdown processing so KaTeX sees it intact.

Original README

Create two content files (the example site already has them):

Original README
https://github.com/simple-is-awesome/hugo-theme-lucent/blob/main/LICENSEhttps://github.com/simple-is-awesome/hugo-theme-lucent/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-13. 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 · 80 / 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-07-13
Screenshot last checked
2026-10-13

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.

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

Inspect the recorded source material

SHA-256: 5c382ce1e8fa0bfa114349106e69ada9538f2b52a019f287916bb3367c19ed4a

2026-10-13T06:31:25.512Z

Source file / repository
# Lucent

A clean, fast and feature-rich blog theme for [Hugo](https://gohugo.io/).
Single-column, typography-first, zero JavaScript frameworks.

## Features

- 🌗 **Dark / light mode** — follows the system preference, remembers the visitor's choice, no flash on load
- 🔍 **Client-side search** — Hugo-generated JSON index + ~150 lines of vanilla JS, no dependencies
- 📑 **Table of contents** — collapsible, per-post toggle
- 🗂 **Archive page** grouped by year, and a **tag cloud** with counts
- 🔗 **Related posts** via Hugo's built-in content relations
- ⏱ **Reading time, word count, last-updated** meta
- 📋 **Copy button on code blocks**, syntax highlighting themed for both modes, `hl_lines` support
- 📊 **Reading progress bar** and back-to-top button
- 🖼 **Image lightbox**, lazy loading, `<figure>` captions from image titles
- 🧮 **KaTeX math** (opt-in per page or site-wide)
- 💬 **giscus comments** (lazy-loaded, theme-synced)
- 📈 **Analytics**: Plausible, Umami, or Google Analytics
- 🧩 **Shortcodes**: `notice` (note / tip / warning / danger), `details`, `quote`
- 🌍 **i18n** — English and Simplified Chinese included; CJK-friendly font stack
- 🔎 **SEO** — Open Graph, Twitter cards, JSON-LD, canonical URLs, RSS
- ♿ Skip link, focus styles, reduced-motion support, semantic HTML
- 📱 Fully responsive, print stylesheet included

Requires **Hugo ≥ 0.128** (standard edition is fine — no Sass).

## Quick start

```bash
hugo new site myblog && cd myblog
git init
git submodule add https://github.com/simple-is-awesome/hugo-theme-lucent themes/hugo-theme-lucent
cp themes/hugo-theme-lucent/exampleSite/hugo.toml .
cp -r themes/hugo-theme-lucent/exampleSite/content .
hugo server -D
```

Or preview the example site from inside this repo:

```bash
hugo server -s exampleSite --themesDir ../..
```

## Configuration

The example site's [`hugo.toml`](exampleSite/hugo.toml) documents every option.
The important non-obvious bits:

```toml
# Search needs the JSON output format on the home page:
[outputs]
  home = ["html", "rss", "json"]

# Syntax highlighting must use CSS classes (the theme ships light+dark colors):
[markup.highlight]
  noClasses = false

# Standalone images become <figure> elements:
[markup.goldmark.parser]
  wrapStandAloneImageWithinParagraph = false

# For math: keeps LaTeX out of markdown processing so KaTeX sees it intact.
# Write display math as $$…$$ and inline math as \(…\).
[markup.goldmark.extensions.passthrough]
  enable = true
  [markup.goldmark.extensions.passthrough.delimiters]
    block = [["\\[", "\\]"], ["$$", "$$"]]
    inline = [["\\(", "\\)"]]
```

### Theme params

| Param                 | Default          | What it does                                  |
| --------------------- | ---------------- | --------------------------------------------- |
| `description`         | —                | Site description (hero subtitle fallback, SEO) |
| `author`              | site title       | Byline, copyright, JSON-LD                    |
| `avatar`              | — (monogram)     | Home hero image, e.g. `images/avatar.png`     |
| `favicon`             | ✦ (inline SVG)   | Path to a favicon                             |
| `accent` / `accentDark` | indigo         | Accent color per mode, any CSS color          |
| `dateFormat`          | `Jan 2, 2006`    | Go date layout for post dates                 |
| `archiveDateFormat`   | `Jan 2`          | Date layout on the archive page               |
| `recentCount`         | `5`              | Posts on the home page                        |
| `showToc` / `tocOpen` | `true` / `true`  | Table of contents behavior                    |
| `showShare`           | `true`           | Share row under posts                         |
| `showReadingProgress` | `true`           | Top progress bar on posts                     |
| `math`                | `false`          | Load KaTeX site-wide                          |
| `hideCredits`         | `false`          | Hide the "Hugo · Lucent" footer credit        |
| `hero.title` / `hero.subtitle` | site title / description | Home hero text        |
| `socialIcons`         | —                | List of `{ name, url }` (see below)           |

Social icon names: `github`, `twitter`, `x`, `mail`, `rss`, `linkedin`,
`telegram`, `youtube`, `instagram`, `facebook`, `globe` — anything else
falls back to a link icon. Add `icon = "globe"` to override the glyph.

### Front matter

```yaml
title: "My post"
date: 2026-07-01
description: "Used for summaries and SEO."   # optional
tags: ["hugo"]
math: true        # load KaTeX for this page
showToc: false    # hide the TOC for this page
share: false      # hide the share row
comments: false   # disable giscus for this page
```

### Archives & search pages

Create two content files (the example site already has them):

```yaml
# content/archives.md
---
title: "Archive"
layout: "archives"
---

# content/search.md
---
title: "Search"
layout: "search"
---
```

### Comments (giscus)

Fill in the values from [giscus.app](https://giscus.app):

```toml
[params.comments.giscus]
  repo = "user/repo"
  repoId = "R_xxx"
  category = "Announcements"
  categoryId = "DIC_xxx"
```

### Chinese interface

Set `defaultContentLanguage = "zh-cn"` and the UI strings switch to the
bundled Simplified Chinese translations (`i18n/zh-cn.toml`).

## Shortcodes

```markdown
{{</* notice tip "Optional custom title" */>}}
Callout body with **markdown**.
{{</* /notice */>}}

{{</* details "Summary text" */>}}
Collapsible content.
{{</* /details */>}}

{{</* quote author="Ada Lovelace" source="Notes" url="https://…" */>}}
The quote itself.
{{</* /quote */>}}
```

## Credits

This theme is a work by **Claude Fable 5** (Anthropic's Claude Code).

## License

[MIT](LICENSE)
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.