Dark-only mode; theme.js locks the dark class before first paint, with no light toggle
cyberlavandatea — Hugo Blog Template
By fundor333
CyberLavandaTea is a dark-only Hugo blog theme for development and code blogs, built with Tailwind CSS v4, with built-in IndieWeb/POSSE features, multiple feeds, and client-side search.
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.
Layouts use plain CSS and render correctly even without Tailwind content detection enabled; utility classes are retained for customization
The palette is defined in Tailwind @theme with six roles (primary green, content, link blue, visited, background, inactive), with surface and border derived from opacity
Provides RSS, Atom, JSON Feed 1.1, humans.txt, and a dynamic robots.txt; search is based on the SearchIndex output and a client-side Lunr index
Built-in IndieWeb/POSSE templates and scripts for Webmention, IndieAuth, Mastodon comments, Brid.gy Publish, and syndication
Content types include micro, photos, weeknote, event, now, and series, with Microformats2 and multiple response types
Template Details
CyberLavandaTea is a Hugo theme published by fundor333, positioned for development/code blogs. It provides only a dark appearance with no light toggle: assets/js/theme.js locks class="dark" before first paint. Layouts are written in plain CSS and render correctly even without Tailwind content detection enabled; Tailwind utility classes are retained for customization.
The theme requires Hugo 0.146 or later extended (using the new _partials/, _shortcodes/, _markup/ template system) and processes styles via @tailwindcss/cli together with Hugo's css.TailwindCSS, so a Node environment is required. Installation supports Hugo Module (recommended) or Git submodule.
For site configuration, Hugo merges the theme's params, related, services, mediaTypes, and build, but does not merge outputs, outputFormats, taxonomies, security, or markup; these blocks from the example configuration must be copied into the site's own hugo.toml. The theme includes an exampleSite for running a local demo.
Features cover common blog structures: baseof/main blocks, home, list grouped by year, single, 404, taxonomy, and term templates; the head includes meta, OG, Twitter, JSON-LD BlogPosting, canonical, hreflang, and rel=first/last/prev/next. Content types include micro, photos, weeknote, event, now, and series, with Microformats2 markup and reply/repost/like/bookmark/rsvp response types.
For syndication and discovery, it provides RSS, Atom, JSON Feed 1.1, humans.txt, and a dynamic robots.txt; search is generated via the SearchIndex output to /search.json and performed client-side with Lunr. IndieWeb capabilities include Webmention (client-rendered reactions and comments via webmention.io), optional IndieAuth endpoints, Mastodon comments and toot embeds, Brid.gy Publish, syndication display, and small-web elements such as 88×31 badges, webring, quote boxes, backlinks, and related.
The theme bundles Lunr, DOMPurify, and webmention.js locally in assets/js/vendor/ with fingerprinting; Font Awesome, KaTeX, and Google Fonts are optional external dependencies. The palette is defined in the Tailwind @theme in assets/css/main.css, with six roles: primary (green), content, link (blue), visited, background, and inactive, plus surface and border derived from opacity; Chroma syntax highlighting is limited to green and blue plus two tones, with an optional red error color. Fonts load from Google Fonts by default (Audiowide for display, Rajdhani for body) and can be self-hosted.
Is it right for your project?
Use Cases
- Building a personal blog focused on code and development notes, with a default dark, restrained reading interface
- Publishing multiple content types such as short posts, photos, weeknotes, events, and now pages, each with its own template
- Wanting the blog to support IndieWeb practices such as Webmention, IndieAuth, Mastodon comments, and POSSE distribution
- Needing RSS, Atom, JSON Feed, and client-side search so readers can subscribe and find content in multiple ways
- Adding small-web elements such as 88×31 badges, webring, quote boxes, and backlinks to the site
Suitable For
- Developer blogs using Hugo 0.146+ extended and accepting a Node build for Tailwind styles
- Sites that prefer a single dark appearance and do not need a light theme toggle
- Personal site authors interested in IndieWeb, POSSE, and Microformats2
- Blogs that need multiple feed formats and in-site client-side search
- Sites with many content types (short posts, photos, weeknotes, events, etc.) that want them rendered separately
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Hugo 0.146 or later extended and @tailwindcss/cli installed at the site root
- 2
Recommended to add the theme as a Hugo Module; it can also be installed via Git submodule into themes/cyberlavandatea
- 3
outputs, outputFormats, taxonomies, security, and markup are not merged from the theme configuration; copy the example configuration into the site's hugo.toml
- 4
Using css.TailwindCSS requires allowing node, npx, tailwindcss, and similar commands in security.exec.allow
- 5
To have Tailwind generate utility classes for custom content, enable hugo_stats.json and reference it via @source in main.css; otherwise add extra classes to safelist.txt
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 is the code of that version and does not mean external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- 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 own licenses; the code's MIT license alone is not sufficient.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
- The theme provides only a dark appearance with no light mode toggle and cannot be configured as a light theme.
- Must be built with Hugo 0.146 or later extended; the standard version cannot be used.
- Building styles requires a Node environment and @tailwindcss/cli installed, otherwise Tailwind cannot be processed via css.TailwindCSS.
- The theme configuration does not merge outputs, outputFormats, taxonomies, security, or markup; these must be manually copied into the site configuration.
- Font Awesome, KaTeX, and Google Fonts are optional external dependencies; when enabled, resources load from external services.
- Fonts load from Google Fonts by default, making requests to an external service; this can be changed to self-hosting.
- Webmention functionality relies on the external webmention.io service to render reactions and comments.
- Mastodon comments require accessing the Mastodon instance's /context endpoint to fetch data.
- Brid.gy Publish relies on the external Brid.gy service for content distribution.
- IndieAuth uses indieauth.com as the authorization and token endpoint by default, which is an external service.
- The pride corner feature relies on external pride.codes resources and is disabled by default.
- Bundled third-party scripts such as Lunr, DOMPurify, and webmention.js have separate LICENSES.md files; verify their licenses yourself.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Dark only, by design — there is no light toggle.
Original README
Hugo | **≥ 0.146** *extended* (new template system: `_partials/`, `_shortcodes/`, `_markup/`)
Original README
Node | for `@tailwindcss/cli`, used by `css.TailwindCSS`
Original README
It does **not** merge `outputs`, `outputFormats`, `taxonomies`, `security`, `markup` — copy this block into your own site config
Original README
**External, and optional:** **Font Awesome** (content-type icons — a Kit or the free CDN, or `disable`), **KaTeX** (only when `math` is set), **Google Fonts** (configurable via `params.fonts`).
Original README
Fonts are loaded from Google Fonts in `_partials/head.html` from `params.fonts`
Original README
**Webmention**: `rel=webmention`/`pingback` + the webmention.io client rendering a reactions facepile and inline comments into `#webmentions` (styled)
Original README
**Mastodon comments** (fetch `/context` + DOMPurify) + build-time toot embed
Original README
**Brid.gy Publish** with configurable targets + UTM
Original README
**IndieAuth**: `rel=authorization_endpoint`/`token_endpoint`, opt-in via `params.indieauth` (unset = no tags, clients discover via `rel=me`), defaults to indieauth.com
Original README
**LGBTQ+ corner** (pride.codes, top-right), opt-in `params.prideCorner` (default `false`)
Original README
https://github.com/fundor333/cyberlavandatea/blob/main/LICENSEhttps://github.com/fundor333/cyberlavandatea/blob/main/README.md**Vendored in the theme** (`assets/js/vendor/`, served locally, fingerprinted — see `LICENSES.md` there)
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-07. 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-09-27
- Screenshot last checked
- 2026-10-07
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-07
Inspect the recorded source material
SHA-256: 030a8d47c42ca37983c66ce63b8971c91c0d5095c2c3b5a52c563d74ea0aceab
2026-10-07T11:07:27.057Z
Source file / repository# CyberLavandaTea
A **dark-only Hugo theme** for dev / code blogs.
**Tailwind CSS v4**, a **6-role palette** (one blue, one green), an
**IndieWeb / POSSE** stack, multiple feeds, client-side search.
- Dark only, by design — there is no light toggle. `assets/js/theme.js` locks
`class="dark"` before first paint.
- The full layout is written in plain CSS, so the theme renders correctly even
without Tailwind's content detection; utilities stay available for
customisation.
## Requirements
| | |
|---|---|
| Hugo | **≥ 0.146** *extended* (new template system: `_partials/`, `_shortcodes/`, `_markup/`) |
| Node | for `@tailwindcss/cli`, used by `css.TailwindCSS` |
```bash
# in your site root
npm install -D @tailwindcss/cli
```
## Install
### As a Hugo Module (recommended)
```bash
hugo mod init github.com/you/your-site # if you don't have a module yet
```
```toml
# hugo.toml
[module]
[[module.imports]]
path = "github.com/fundor333/cyberlavandatea"
```
```bash
hugo mod get -u github.com/fundor333/cyberlavandatea
```
### As a Git submodule
```bash
git submodule add https://github.com/fundor333/cyberlavandatea themes/cyberlavandatea
```
```toml
# hugo.toml
theme = "cyberlavandatea"
```
## Minimal site configuration
Hugo merges `params`, `related`, `services`, `mediaTypes`, `build` from a theme
config. It does **not** merge `outputs`, `outputFormats`, `taxonomies`,
`security`, `markup` — copy this block into your own site config (it is
identical to `exampleSite/hugo.toml`):
```toml
[taxonomies]
series = "series"
category = "categories"
tag = "tags"
theme = "themes"
group = "group"
[mediaTypes."application/atom+xml"]
suffixes = ["xml"]
[outputFormats.SearchIndex]
baseName = "search"
mediaType = "application/json"
isPlainText = true
[outputFormats.Atom]
baseName = "atom"
mediaType = "application/atom+xml"
[outputFormats.humanstxt]
baseName = "humans"
mediaType = "text/plain"
isPlainText = true
[outputs]
home = ["html", "rss", "json", "SearchIndex", "Atom", "humanstxt"]
section = ["html", "rss", "json", "Atom"]
# Required for css.TailwindCSS (Hugo's exec security policy).
[security]
[security.exec]
allow = ['^(dart-)?sass$', '^git$', '^go$', '^node$', '^npx$', '^postcss$', '^tailwindcss$']
# Class-based highlighting (theme palette) and lone images as <figure> + caption.
[markup]
[markup.highlight]
noClasses = false
[markup.goldmark.parser]
wrapStandAloneImageWithinParagraph = false
```
### Tailwind — class detection (optional)
The theme's layout is plain CSS: **it works with no extra setup**. The Tailwind
utilities used in the templates have a fallback in `main.css`. If you want
Tailwind to generate *every* utility you use in your own content / shortcodes,
enable `hugo_stats.json`:
```toml
[build.buildStats]
enable = true
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = "hugo_stats.json"
target = "assets/notwatching/hugo_stats.json"
disableWatch = true
```
(`main.css` already does `@source "hugo_stats.json"`.) Otherwise add the extra
classes to `assets/css/safelist.txt`, or to an `assets/css/*.css` of your own
that imports `main.css` with your own `@source`.
## Run the demo
```bash
cd themes/cyberlavandatea # or wherever the theme lives
npm install
npm --prefix exampleSite install
hugo server -s exampleSite --themesDir ../..
```
## Palette
Defined once in [`assets/css/main.css`](assets/css/main.css) inside the Tailwind
`@theme` block, so it is available as utilities (`text-content`, `bg-surface`,
`border-border`, …) **and** as `--color-*` for the partials.
| Role | Tailwind token | Hex | Use |
|---|---|---|---|
| Primary *(green)* | `--color-primary` | `#5FD88F` | accent, `:hover`/`:focus`, active nav, focus ring, `blockquote` border, keyword |
| Content | `--color-content` | `#E6E6EC` | body text, headings, `strong`, code text |
| Links *(blue)* | `--color-link` | `#4D9FFF` | unvisited links, strings, added diff |
| Visited | `--color-visited` | `#7EA88E` | `a:visited` |
| Background | `--color-background` | `#14151A` | `body`, navbar, footer |
| Inactive | `--color-inactive` | `#8B8F9A` | meta, dates, borders, placeholders, comments |
| *(derived)* Surface | `--color-surface` | `#25262B` | `code`/`pre`/`.toc`/`blockquote`/`tr:nth-child(even)` |
| *(derived)* Border | `--color-border` | `#313237` | `hr`, separators, borders |
Chroma syntax highlighting stays within green + blue plus two tints
(`--color-code-fn` `#A8C9FF`, `--color-code-num` `#8FE0AF`) plus one optional red
for errors (`--color-code-err` `#FF6F6F`), inside `<pre>` only.
Fonts are loaded from Google Fonts in `_partials/head.html` from `params.fonts`
(`display` = Audiowide, `body` = Rajdhani; optional `signature` font-file URL for
the "written by a human" line). A site can self-host them instead.
## Runtime dependencies
**Vendored in the theme** (`assets/js/vendor/`, served locally, fingerprinted —
see `LICENSES.md` there): **Lunr** (search), **DOMPurify** (Mastodon comments),
**webmention.js** (the webmention.io client).
**External, and optional:** **Font Awesome** (content-type icons — a Kit or the
free CDN, or `disable`), **KaTeX** (only when `math` is set), **Google Fonts**
(configurable via `params.fonts`). Nothing else phones home at runtime.
## Features
| Area | Where |
|---|---|
| `baseof` + `main` block, `home`, `list` (by year), `single`, `404`, `taxonomy`, `term` | `layouts/*.html` |
| `<head>`: meta, OG, Twitter, JSON-LD `BlogPosting`, `canonical`, `hreflang`, `rel=first/last/prev/next` | `_partials/head.html`, `_partials/meta/*` |
| Asset pipeline: **Tailwind v4** → `minify` → `fingerprint`+`integrity`; `theme.js` in the head, `main.js`+`goToTop` at the end, `additionalScripts` | `_partials/head.html`, `_partials/scripts-*.html` |
| Nav: `Site.Menus.main` with children and `active` state, CSS-only hamburger, language switcher, "back to top" | `_partials/header.html`, `_partials/footer.html`, `assets/js/goToTop.js` |
| `postCard` with a per-type icon, starred, speaker, `<time datetime>` | `_partials/postCard.html`, `_partials/type-icon.html` |
| Bio + **h-card** — footer identity line: name, pronouns, nickname, location, status; each of pronouns / location / status toggled from config | `_partials/bio.html`, `_partials/hcard.html` |
| Social icons (`params.socialIcons`) rendered on the home page (below the bio) and in the footer | `_partials/socialIcons.html`, `layouts/home.html`, `_partials/footer.html` |
| i18n | `i18n/en.yaml`, `i18n/it.yaml` |
| Feeds: RSS (`exclude_from_rss`, `summary`/`full`, `media` namespace), **Atom** (`feedUUID`, `webfeeds`), **JSON Feed 1.1**, **humans.txt**, dynamic **robots.txt** | `layouts/rss.xml`, `list.atom.xml`, `list.json.json`, `index.humanstxt.txt`, `robots.txt` |
| Search: `SearchIndex` output → `/search.json`, `/search` section, `?q=` form, **Lunr** index, `<template>` rendering | `layouts/index.searchindex.json`, `layouts/search/list.html`, `_partials/search-*.html`, `assets/js/search.js` |
| Content types: `micro`, `photos` (EXIF from `exif.json` or `.Exif`), `weeknote`, `event` (`start`/`end`/`location`), `now`, `series` | `layouts/<type>/…` |
| Microformats2: `h-entry` / `e-content` / `u-photo` / `p-category` / `dt-published`; response types reply/repost/like/bookmark/rsvp | `layouts/single.html`, `_partials/micro.html` |
| Favicons entirely from config (`favicon`, `faviconSvg`, `appleTouchIcon`, `icon96`, `webmanifest`, `maskIcon`) | `_partials/favicons.html` |
| **Webmention**: `rel=webmention`/`pingback` + the webmention.io client rendering a reactions facepile and inline comments into `#webmentions` (styled) | `_partials/webmention.html`, `_partials/custom-head.html`, `assets/css/main.css` |
| **IndieAuth**: `rel=authorization_endpoint`/`token_endpoint`, opt-in via `params.indieauth` (unset = no tags, clients discover via `rel=me`), defaults to indieauth.com | `_partials/head.html` |
| **Mastodon comments** (fetch `/context` + DOMPurify) + build-time toot embed | `_partials/mastodon.html`, `_partials/toot.html` |
| **Brid.gy Publish** with configurable targets + UTM | `_partials/bridgy.html` |
| **Syndication** ("also posted on") | `_partials/syndication.html` |
| Render hooks: link (UTM + `target=_blank` + `↗`), image (`figure` + `u-photo`), heading (anchor), codeblock (`HighlightCodeBlock`) | `layouts/_markup/render-*.html` |
| Shortcodes: `toc`, `embed`, `toot`, `xkcd`, `allpages`, `88x31`, `buzzword`, `heart` | `layouts/_shortcodes/*` |
| Content-type icons ("category") with Font Awesome (Kit or free CDN), `params.postIcons` override | `_partials/fontawesome.html`, `_partials/type-icon.html`, `_partials/postCard.html` |
| **LGBTQ+ corner** (pride.codes, top-right), opt-in `params.prideCorner` (default `false`) | `_partials/pride-corner.html` |
| Small-web extras: **88×31** badges (folder + JSON, shuffled), **webring** (`webring.html`: icon / prev-next / web component), **"reference this post"** box (configurable preferred name / pronouns / "learn more" link + copy-URL), a collapsible panel styled like the TOC/series menu, "written by a human", **backlinks** (`findRE`), **related** ("See Also") | `_partials/88x31.html`, `_partials/webring.html`, `_partials/cite.html`, `_partials/inbound-links.html`, `_partials/comments.html`, `footer.html` |
| Palette / theming: 6 roles + surfaces derived by opacity, Chroma within green/blue | `assets/css/main.css` |
KaTeX (conditional, `_partials/helpers/katex.html`) and Google Analytics
(`hugo.IsProduction` + `site.GoogleAnalytics`) are wired up too.
## Params
```toml
[params]
description = "…" # fallback meta description
dateFormat = "2 January 2006"
homeRecentCount = 20 # posts on the home page
mainSections = ["post"]
secondarysections = ["micro"] # "Recent updates" list on the home page
feedSections = ["post", "micro", "photos", "weeknote"]
commentSections = ["post", "micro", "photos", "weeknote"]
suggestionSections= ["post"] # "See Also" block (Related)
toc = true
tocOpen = false
goToTop = true
linkUTM = false # UTM on external links (render hook)
writtenByHuman = true
shareButtons = true
cite = true # bool, or a [params.cite] table (below)
badges88x31 = true
additionalScripts = [] # extra JS assets, bundled + minified
themeColor = "#14151a"
feedUUID = "" # urn:uuid for the Atom feed
images = ["/img/og.png"] # fallback og:image
prideCorner = false # pride.codes corner top-right (opt-in)
# Favicons — used verbatim as URLs (relURL). Nothing set -> the theme's
# bundled /favicon.svg only.
favicon = "/favicon.ico"
faviconSvg = "/favicon.svg"
appleTouchIcon = "/apple-touch-icon.png"
icon96 = "/favicon-96x96.png"
webmanifest = "/site.webmanifest"
maskIcon = "" # Safari pinned-tab mono SVG (optional)
icon = "/favicon-196x196.png" # generic icon, also used by the feeds
[params.fontawesome] # content-type icons
kit = "" # a Kit URL (Pro too); empty = free CDN
version = "6.7.2" # free CDN version
disable = false # true = no Font Awesome
# FA icon per "category" (= section type). Sensible defaults included;
# override only the entries you want to change.
[params.postIcons]
post = "fa-solid fa-newspaper"
micro = "fa-solid fa-thumbtack"
photos = "fa-solid fa-camera"
weeknote = "fa-solid fa-mug-hot"
event = "fa-solid fa-calendar-days"
now = "fa-solid fa-hourglass-half"
series = "fa-solid fa-layer-group"
[params.fonts]
display = "Audiowide"
body = "Rajdhani:wght@400;500;600;700"
signature = "" # optional font-file URL for .written-by-human
[params.cite] # "Reference this post" box
enable = true
body = "" # intro sentence (default: i18n cite.body)
name = "" # -> "I prefer to be called <name>"
pronouns = "" # e.g. "he/him" (default: from params.hcard.pronouns)
nameAlt = "" # -> "… or <nameAlt>"
learnMoreUrl = "" # adds a "Learn more" line
[params.author]
name = "" ; intro = "" ; description = "" ; url = "" ; email = ""
fediverseAccount = "@user@instance"
[params.hcard] # the footer h-card
fullName = "" ; nickname = "" ; avatar = "img/logo.png" ; biography = ""
showPronouns = true # hide the pronouns with `false`
showLocation = true # opt-in; shows city/region/country
city = "" ; region = "" ; country = ""
status = "" # short status line, e.g. "open to freelance"
statusUrl = "" # optional link for the status
showStatus = true # hide the status with `false`
[params.hcard.pronouns]
nominative = "" ; oblique = "" ; possessive = ""
[params.webmention]
targetDomain = "example.com" # canonical prod domain: data-page-url becomes
# https://<targetDomain><path> (works on `hugo server`)
scheme = "https" # scheme for that canonical URL
script = "" # override client URL (default: bundled webmention.js)
wordcount = 40 # data-wordcount for inline replies
maxWebmentions = 30
preventSpoofing = false
# endpoint / pingback also read by _partials/custom-head.html
# Renders <h2>Responses</h2> + <h2>Reactions</h2> into #webmentions, and emits
# <link rel="webmention"> / <link rel="pingback">.
# Opt-in: omit [params.indieauth] entirely to emit no
# authorization_endpoint/token_endpoint tags and let IndieAuth clients
# discover via rel="me" instead. When enabled, defaults to indieauth.com,
# which is designed to be declared as a site's own endpoint this way (no
# client_id registration needed). Don't point these at indielogin.com:
# it requires apps to pre-register their client_id and is meant to be
# called directly by app developers, not discovered as a site's endpoint
# — doing so causes "client_id is not registered" errors for IndieAuth
# clients. Override the endpoints below for a different provider.
[params.indieauth] # <link rel=authorization_endpoint/token_endpoint>
enable = true # opt out with `false` (or omit the table)
authorizationEndpoint = "https://indieauth.com/auth"
tokenEndpoint = "https://tokens.indieauth.com/token"
bridgy = ["mastodon", "bluesky"]
# Rendered on the home page (below the bio) and in the footer.
[[params.socialIcons]]
name = "github" ; url = "https://github.com/user"
[[params.socialIcons]]
name = "mastodon" ; url = "https://mastodon.social/@user"
# Footer webring(s) (partial webring.html). Each entry:
# name, url plain link
# + icon icon link (30x30 img)
# + prev / next renders <- name ->
# + html [+ script] raw markup (web component) and a defer script
[[params.webrings]]
name = "XXIIVV webring" ; url = "https://webring.xxiivv.com/#86"
icon = "https://webring.xxiivv.com/icon.white.svg"
```
### Recognised front matter
`description`, `image`, `tags`, `categories`, `series`, `themes`, `group`,
`isStarred`, `speaker`, `math`, `toc`, `tocOpen`, `exclude_from_rss`,
`exclude_from_search`, `robotsdisallow`, `allpage`, `feature_link`/`feature_text`,
`syndication` (list of URLs), `comments` (`{host, user, id}` for Mastodon
comments), `reply`/`repost`/`like`/`bookmark`/`rsvp`/`preview_text_from_reply`,
`mastodon_instance`+`mastodon_id`, `start`/`end`/`location` (event).
### Site-side extension
Create these in your own `layouts/_partials/`:
- `custom-head.html` — adds to `<head>` (the theme ships one that emits
`rel=webmention`/`pingback`; override to extend);
- `custom-scripts.html` — end-of-`<body>` scripts (self-hosted analytics, extra
widgets, …).
## Structure
```
themes/cyberlavandatea/
├── theme.toml · go.mod · package.json · hugo.toml · LICENSE · README.md
│ CHANGELOG.md · CONTRIBUTING.md · .editorconfig · .gitattributes
├── .github/workflows/ ci.yml (PR build) · pages.yml (deploy demo)
├── archetypes/ default, post, micro, now, photos, event, weeknote
├── assets/
│ ├── css/main.css Tailwind v4 + @theme (palette) + base + .chroma
│ │ safelist.txt
│ └── js/ theme.js · main.js · goToTop.js · search.js
│ vendor/ lunr · DOMPurify · webmention.js (+ LICENSES.md)
├── data/cyberlavandatea/palette.yaml palette reference
├── i18n/ en.yaml · it.yaml
├── exampleSite/ minimal demo (its own hugo.toml + go.mod)
└── layouts/
├── baseof · home · list · single · 404 · taxonomy · term
├── rss.xml · list.atom.xml · list.json.json
├── index.searchindex.json · index.humanstxt.txt · robots.txt
├── micro/ photos/ weeknote/ event/ now/ series/ search/
├── _markup/ render-link · render-image · render-heading · render-codeblock
├── _shortcodes/ toc · embed · toot · xkcd · allpages · 88x31 · buzzword · heart
└── _partials/ head · header · footer · scripts-* · meta/* · svgs/*
postCard · type-icon · fontawesome · bio · toc · tags
series · micro · comments · mastodon · toot · webmention
syndication · bridgy · hcard · socialIcons · webring
search-form · search-index · cite · share-buttons
inbound-links · 88x31 · pride-corner · custom-head
helpers/katex
```
## Contributing
See [`CONTRIBUTING.md`](CONTRIBUTING.md). Changes are tracked in
[`CHANGELOG.md`](CHANGELOG.md).
## License
MIT — see [`LICENSE`](LICENSE).
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
