This article is part of the series Using Techly.

Techly does not impose a proprietary content format — it is a standard Hugo site with opinionated paths and layouts. If files live in the expected places, menus, search, series, and listing pages work without extra configuration.

This post describes the layout used by this showcase and what you can adapt. Site-wide settings are covered in Configuration overview.

Overview

content/
├── _index.md              # Home page body (optional intro text)
├── about.md               # Regular page
├── contact.md
├── archive.md             # layout: archive
├── search.md              # layout: search
├── posts/
│   ├── _index.md          # Section title for /posts/
│   ├── my-post.md         # Single-file post
│   └── my-bundle/         # Page bundle post
│       ├── index.md
│       └── featured.jpg
└── series/
    ├── _index.md          # Taxonomy list at /series/
    └── using-techly/
        └── _index.md      # Series description at /series/using-techly/

Hugo also generates tag pages automatically from front matter (/tags/<slug>/). You do not create content/tags/ by hand.

Home and standalone pages

PathRole
content/_index.mdOptional copy above the post list on the home page. The hero title comes from params.banner, not this file’s title.
content/about.md, contact.md, …Regular pages rendered with the page layout (optional toc = true).

Link these from menus.main with pageRef:

[[menus.main]]
  name = 'About'
  pageRef = '/about/'
  weight = 30

Posts section (posts/)

Blog articles belong in a section that matches params.mainSections (default posts):

[params]
  mainSections = ['posts']

That section drives:

  • the home page post list (featured first item + grid)
  • /posts/ section listing
  • the archive page
  • related-articles candidates
  • the JSON search index

Section index

content/posts/_index.md sets the title and description for /posts/:

+++
title = 'Posts'
description = 'All articles published on this site.'
+++

Single-file posts

hugo new posts/my-article.md

Page bundles

For images beside the post, use a bundle directory — see Images in posts and Featured images:

content/posts/my-article/
├── index.md
├── diagram.png
└── featured.jpg

Techly’s posts layout handles single posts; leaf bundles and single files both work.

Series taxonomy

Enable the taxonomy in site config (Hugo does not merge taxonomies from the theme module):

[taxonomies]
  tag = 'tags'
  series = 'series'

Tag posts with one series name:

series = ['Using Techly']

Optional term content for a richer series landing page:

content/series/using-techly/_index.md

Create it with:

hugo new series/using-techly/_index.md

See Organizing posts into series for reader-facing behavior.

Search page

Client-side search needs:

  1. JSON output on the home page (for the index)
  2. A dedicated search page

In hugo.toml:

[outputs]
  home = ['HTML', 'RSS', 'JSON']

Create content/search.md:

+++
title = 'Search'
layout = 'search'
description = 'Search articles on this site.'
+++

Techly looks for this page at /search/ or /page/search/ by default. Override with:

[params]
  searchPagePath = '/search'

The navbar search field and the full search page both use this content file.

Archive page

Optional chronological archive (grouped by year):

+++
title = 'Archive'
layout = 'archive'
description = 'All posts, grouped by year.'
+++

Like search, add a menus.main entry if you want it in the navigation. This showcase keeps archive out of the main menu; the layout still works at /archive/.

Tags

Add tags in post front matter — no extra folders:

tags = ['general']
index = true   # opt in to search indexing (Techly default is opt-out)

Techly renders tag lists on posts and paginated term pages at /tags/<slug>/. Tag listing pages are not indexed unless you set index = true on them explicitly. See Controlling search indexing.

Site assets (not under content/)

Some features expect files outside content/:

PathUsed for
assets/icons/*.svgFooter social icons (Footer social icons)
assets/css/custom.cssSite-specific style overrides
static/Favicon, robots.txt, files with fixed URLs

Add a Sitemap: URL in static/robots.txt pointing at your built sitemap.xml. Techly generates that file from pages with index = true (and the home page when params.indexHome is enabled).

Minimal checklist for a new site

  1. content/posts/ with at least one post and _index.md
  2. content/_index.md if you want home intro text
  3. [taxonomies] and [outputs] in hugo.toml
  4. content/search.md with layout = 'search'
  5. menus.main pointing at Home, Posts, and any pages you create
  6. index = true on posts you want search engines to index
  7. Optional: content/archive.md, content/series/.../_index.md, assets/icons/ for social links

This showcase repo is a working reference — browse content/ alongside these posts to see each pattern in context.