Back to templates

Template details

nuno

Minimalist, dark-first Hugo theme with Nunito typography, four palettes, a typed masthead, ⌘K client-side search and around 50 KB first paint.

About this template

nuno is a minimalist, dark-first Hugo theme for text-driven blogs and personal notes sites, installed as a git submodule or Hugo module and pinned to a release tag such as v0.2.0.

What is nuno?

nuno is a Hugo theme maintained by GitHub user that-daniel that turns Markdown content plus a hugo.toml configuration into a static site: home page, posts, archives, tag and category lists, certifications, a bookshelf, a resume and a client-side search page. It requires Hugo extended 0.158 or newer (CI builds on 0.158.0 and latest) and adds no build step beyond Hugo itself. Output is plain HTML, one inlined stylesheet and a few kilobytes of JavaScript, released under the MIT licence.

What makes nuno stand out?

  • Hugo templates, not a JavaScript framework — layouts cover the home page, _default/single.html, _default/list.html, archives grouped by year, terms, search, resume, certs, books and 404, with the search index emitted as JSON.
  • Inlined CSS, no utility framework — the whole stylesheet is assets/css/nuno.css (about 16 KB raw, roughly 4 KB gzipped), minified and inlined into the page head; there is no Tailwind or CSS-in-JS layer.
  • Four palettes from two switches — theme (light/dark) and ground (brown/green), both persisted to localStorage and applied synchronously in the head so there is no flash, plus four accent pairs: mustard, copper, green and sky.
  • Client-side ⌘K search — the overlay script is fetched only on the first ⌘K press, click or slash key, backed by a build-time JSON index.
  • Typed masthead from a quotes data file — lines are stored as ink plus accent pairs, line one is server-rendered for no-JS readers, and invisible layout copies stop typing from shifting the page.
  • Four home page variants — homeHeader (masthead or profile) and homeStyle (grid or ledger) combine into four layouts, with homeGroupByYear splitting ledger rows under year headings.
  • Optional structured sections — certifications with issuer, badge, earned and expiry dates, credential id and skills; books with rating, reading status, ISBN, pages and a Goodreads link; and a resume page driven by a YAML data file.
  • giscus comments, off by default — configured with repo, repoId, category and categoryId; nothing is requested until a reader scrolls to the comments, and the embed re-themes with the light/dark toggle.

Who should use nuno?

  • Personal bloggers writing long-form posts — Markdown posts pick up tags, categories, series blocks, related reading, footnotes, reading progress and a sticky table of contents with only front matter to fill in.
  • Engineers publishing a portfolio-adjacent blog — the resume layout reads a YAML file covering experience, skills, education, languages and highlight figures, and the certifications section renders credential pages grouped by issuer with verify links.
  • Site owners who care about page weight — first paint is about 50 KB gzipped over four requests with no third-party connections; measured under Slow 4G with 4x CPU throttling the home page reached 448 ms LCP and 84 KB transfer.
  • Multilingual publishers — copy i18n/en.toml, translate the values, set the default content language, and the theme emits hreflang alternates, og:locale tags and a nav language switcher for languages a page actually exists in.

What can you do with nuno?

  • Run a notes-and-essays blog: posts get hover self-links on every heading, syntax-highlighted code with copy buttons, callout shortcodes for note, tip and warning, em-dash blockquote attribution and a related-reading block driven by Hugo's related config.
  • Publish a book log: book pages render as one cover grid with currently-reading titles floated to the front, marked by an accent ring and badge, with star ratings and Goodreads links.
  • Ship a resume page: a YAML data file produces a role kicker, contact rows, highlight figures, achievements, experience entries with a Current pill, skills, education and a PDF download label.
  • List credentials: certification pages appear grouped by issuer, ordered by most recent credential, with badges converted to WebP at build time and an unreachable badge falling back to a plain square.
  • Build a searchable archive: the JSON home output powers a linkable search page, and the archives layout groups posts by year.

How does nuno work?

  1. Add the theme as a submodule (git submodule add https://github.com/that-daniel/nuno.git themes/nuno) or as a Hugo module import, then check out a release tag.
  2. Copy exampleSite/hugo.toml into the site root; it lists every parameter the theme reads with its default beside it.
  3. Set three required values elsewhere in the config: home outputs including JSON for the search index, a table of contents level range of 2 to 3, and class-based syntax highlighting so the palettes drive code colours.

FAQ

Is nuno free?

Yes. nuno is released under the MIT licence, so it can be used, modified and redistributed at no cost. The bundled Nunito font is licensed separately under the SIL Open Font License, with the full text shipped in the repository and attribution recorded in a NOTICE file.

What version of Hugo does nuno require?

nuno requires Hugo extended version 0.158 or later, and continuous integration builds against 0.158.0 and the latest release. While the theme is at 0.x, a minor bump may carry a breaking change and patch releases never do, so pinning to a tag is recommended.

Does nuno support comments?

Only giscus, and only when a repo, repoId, category and categoryId are supplied. Nothing is fetched until a reader scrolls to the comments, comments appear on posts only (never on the About or search pages), and an incomplete block warns at build time instead of rendering an empty box.

What are nuno's performance numbers?

On a production build served with gzip and throttled to Slow 4G with 4x CPU throttling, the home page reached 448 ms LCP with 84 KB transfer over four requests, while a no-image post was 856 ms LCP and 89 KB. Four requests cover HTML, font, JS and favicon because CSS is inlined.

Is nuno accessible?

The theme ships a skip link, aria-current on the active nav item, focus-visible accent rings, a focus-trapped search dialog with arrow-key navigation, and reduced-motion handling that shows one static masthead line. One documented exception is the light-ground green palette, where muted text on surface measures 4.25:1 against a 4.5:1 target.

screenshot of nuno on template0.com