[{"content":"Listing cards can show a cover image when you opt in — inline images in the article body are not used automatically.\nSet a featured image Add featuredImage to front matter with a path or bundle filename:\nfeaturedImage = \u0026#39;featuredImageShowcase.jpg\u0026#39; imageAlt = \u0026#39;Description for screen readers and when the image fails to load\u0026#39; This post uses a page bundle:\ncontent/posts/featured-image/ ├── index.md └── featuredImageShowcase.jpg Alternative: featured.* in the bundle If the file is named featured.jpg, featured.png, or similar, Techly picks it up without front matter:\ncontent/posts/my-post/ ├── index.md └── featured.jpg Hide the cover for one post showImage = false Check the home page and /posts/ — this article should appear with the cover above the title on its card.\n","date":"2026-05-22","permalink":"/hugo-techly/posts/featured-images/","summary":"Listing cards can show a cover image when you opt in — inline images in the article body are not used automatically.\nSet a featured image Add featuredImage to front matter with a path or bundle filename:\nfeaturedImage = \u0026#39;featuredImageShowcase.jpg\u0026#39; imageAlt = \u0026#39;Description for screen readers and when the image fails to load\u0026#39; This post uses a page bundle:\ncontent/posts/featured-image/ ├── index.md └── featuredImageShowcase.jpg Alternative: featured.* in the bundle If the file is named featured.jpg, featured.png, or similar, Techly picks it up without front matter:\n","title":"Featured Images"},{"content":"Use pinning when an announcement or evergreen article should stay visible above newer posts — without backdating it or bumping the publish date.\nPin a post Add pinned at the top level of the post\u0026rsquo;s front matter:\n+++ title = \u0026#39;Important announcement\u0026#39; date = 2026-05-22T15:00:00+02:00 pinned = true +++ Pinned posts are sorted to the top of the home page and the Posts section listing (/posts/). Among pinned posts, the usual date order still applies — newest first.\nShow the pin indicator To display the pin icon beside the date on listing cards, add pinnedIndicator alongside pinned:\n+++ title = \u0026#39;Important announcement\u0026#39; date = 2026-05-22T15:00:00+02:00 pinned = true pinnedIndicator = true +++ The icon uses your theme accent color. A post can be pinned without the indicator — useful when you want top placement without drawing extra attention.\nWhen to use it Pinning works well for:\nStatus updates or “work in progress” notices A getting-started guide you always want easy to find A post you link to often from elsewhere Use it sparingly. If everything is pinned, nothing stands out.\nTry it here See the under development post on the posts listing for a live example with the pin indicator.\n","date":"2026-05-22","permalink":"/hugo-techly/posts/pinning-posts/","summary":"Use pinning when an announcement or evergreen article should stay visible above newer posts — without backdating it or bumping the publish date.\nPin a post Add pinned at the top level of the post\u0026rsquo;s front matter:\n+++ title = \u0026#39;Important announcement\u0026#39; date = 2026-05-22T15:00:00+02:00 pinned = true +++ Pinned posts are sorted to the top of the home page and the Posts section listing (/posts/). Among pinned posts, the usual date order still applies — newest first.\n","title":"Pinning Posts"},{"content":"If you landed here looking for a polished, finished Hugo theme — welcome anyway, but fair warning first: Techly is under active development.\nThis site is the live example for the theme. What you see today is real and usable, but it is not a frozen product. Layouts, configuration options, and styling will change as the theme matures.\nWhat that means for you Expect change. Early releases may rename params, adjust templates, or rework components without a long deprecation period. Pin a release tag in your go.mod or hugo.toml if you want predictable builds.\nThis site follows the theme. hugo-techly exists to demonstrate Techly on GitHub Pages. When the theme updates, this example site updates with it — consider it a preview, not a promise of stability.\nFeedback is welcome. Bug reports, layout ideas, and pull requests on the theme repository help shape what Techly becomes.\nWhat works today At this stage, Techly already covers the basics of a small tech blog:\nA clean home page with post listings Single-post layouts with optional table of contents Archive and search pages Post series with series index, term pages, and in-article navigation Client-side search with inline suggestions in the header Dark mode and responsive navigation Hugo module installation — no git submodules required Sample posts on this site show tags, page bundles with images, and typical front matter. They are here to exercise the theme, not to teach Hugo from scratch.\nWhat is still evolving I am building Techly for my own blog first: simple, opinionated, and free of integrations I do not need. That means some areas are intentionally minimal, and others are not done yet.\nPlanned or in-progress work includes refinements to typography and documentation. APIs and theme params may shift until the first stable 1.0 release.\nHow to follow along Theme source: github.com/m1rm/techly This showcase: github.com/m1rm/hugo-techly — deployed at m1rm.github.io/hugo-techly Releases: watch the theme repo for tagged versions when you want to upgrade deliberately If you are experimenting with the theme locally, see Developing Techly locally for the module setup this site uses day to day.\n","date":"2026-05-22","permalink":"/hugo-techly/posts/under-development/","summary":"If you landed here looking for a polished, finished Hugo theme — welcome anyway, but fair warning first: Techly is under active development.\nThis site is the live example for the theme. What you see today is real and usable, but it is not a frozen product. Layouts, configuration options, and styling will change as the theme matures.\nWhat that means for you Expect change. Early releases may rename params, adjust templates, or rework components without a long deprecation period. Pin a release tag in your go.mod or hugo.toml if you want predictable builds.\n","title":"Techly is under active development"},{"content":"This site (hugo-techly) is the working example for the Techly theme. In production it imports the theme as a Hugo module from GitHub. For day-to-day theme work, it loads the theme from a local checkout next to the site.\nDirectory layout Clone both repositories as siblings:\nprojects/ ├── techly/ ← theme source (layouts, assets, …) └── hugo-techly/ ← this example site (content, config) Hugo resolves the theme relative to the site, not from a published release, while you are developing.\nHow the override works The site still declares the module import in hugo.toml the usual way:\n[module] [[module.imports]] path = \u0026#39;github.com/m1rm/techly\u0026#39; The local override lives in go.mod:\nmodule github.com/m1rm/hugo-techly go 1.26.3 replace github.com/m1rm/techly =\u0026gt; ../techly require github.com/m1rm/techly v0.0.0 replace tells Go (and Hugo\u0026rsquo;s module loader) to use ../techly instead of downloading the module from the proxy. Edit files in the theme repo, save, refresh the browser — no publish step required.\nYou can confirm which directory Hugo uses:\nhugo config mounts | rg \u0026#39;\u0026#34;dir\u0026#34;\u0026#39; You should see \u0026quot;dir\u0026quot;: \u0026quot;/…/techly/\u0026quot; pointing at your local checkout, not a path under $GOCACHE or /tmp.\nDaily workflow cd hugo-techly hugo server -D Open http://localhost:1313 (or the URL Hugo prints). Changes to layouts, CSS, or JS in ../techly appear after a refresh. Hugo rebuilds assets automatically in server mode.\nWhen you change module dependencies or suspect a stale cache:\nhugo mod clean --all hugo server -D Common gotchas Stale _vendor/ directory If you ever ran hugo mod vendor, Hugo may prefer the copied theme in _vendor/ over your local checkout. That directory is easy to miss — you edit ../techly, but the site still serves an old vendored copy.\nRemove it and rebuild:\nrm -rf _vendor hugo mod clean --all hugo server -D This repo gitignores _vendor/ so it does not come back from a commit by accident.\nModule cache Hugo caches downloaded modules. After changing go.mod or the replace path, run hugo mod clean --all once so the loader picks up the local theme.\ngo.work vs replace A Go workspace file (go work init . ../techly) can work, but it is easy to combine with _vendor/ or a warm module cache and still see old templates. A single replace in go.mod is the setup used here — explicit and easy to inspect.\nGitHub Actions cannot rely on a sibling folder that only exists on your machine. The deploy workflow checks out both repositories:\n- name: Checkout site uses: actions/checkout@v4 with: path: hugo-techly - name: Checkout theme uses: actions/checkout@v4 with: repository: m1rm/techly path: techly - name: Build site working-directory: hugo-techly run: hugo --minify On the runner the layout matches local development:\nworkspace/ ├── hugo-techly/ └── techly/ The same replace github.com/m1rm/techly =\u0026gt; ../techly in go.mod resolves correctly in CI.\nUsing a published theme again To build against a tagged release from GitHub instead of the local checkout:\nRemove or comment out the replace line in go.mod Run hugo mod get github.com/m1rm/techly@v1.0.0 (or the version you need) Run hugo mod clean --all and rebuild Summary Context Theme source Local dev ../techly via go.mod replace Downstream sites github.com/m1rm/techly from the module proxy, no replace Keep the two repos side by side, avoid _vendor/ during theme work, and clear the module cache when something looks outdated. That is all you need for a fast local theme loop.\nFor installing Techly in a new site without local development, see Getting Started with Techly.\n","date":"2026-05-22","permalink":"/hugo-techly/posts/developing-locally/","summary":"This site (hugo-techly) is the working example for the Techly theme. In production it imports the theme as a Hugo module from GitHub. For day-to-day theme work, it loads the theme from a local checkout next to the site.\nDirectory layout Clone both repositories as siblings:\nprojects/ ├── techly/ ← theme source (layouts, assets, …) └── hugo-techly/ ← this example site (content, config) Hugo resolves the theme relative to the site, not from a published release, while you are developing.\n","title":"Developing Techly locally"},{"content":"Techly supports post series out of the box. Use it for multi-part tutorials, migration diaries, or any set of articles that read best in order.\nEnable the series taxonomy Add the series taxonomy to your site\u0026rsquo;s hugo.toml:\n[taxonomies] tag = \u0026#34;tags\u0026#34; category = \u0026#34;categories\u0026#34; series = \u0026#34;series\u0026#34; If you override taxonomies, include the defaults you still use — Hugo replaces the whole list, it does not merge entries from the theme module.\nTag a post Add a series field to the post\u0026rsquo;s front matter:\nseries = [\u0026#39;Using Techly\u0026#39;] A post can belong to one series. The name you choose becomes the series title and URL slug (/series/using-techly/).\nWhat readers see On each post in a series, Techly shows:\na short notice linking to the series page a numbered list of all articles in the series, with the current one highlighted previous and next links when applicable The series index at /series/ lists every series on your site. Each series page lists its posts in publication order.\nOptional series descriptions Create a term page to add a title and description for a series:\nhugo new series/using-techly/_index.md Edit the generated file to set the series summary. That text appears on the series index and on the series page header.\n","date":"2026-05-22","permalink":"/hugo-techly/posts/organizing-posts-into-series/","summary":"Techly supports post series out of the box. Use it for multi-part tutorials, migration diaries, or any set of articles that read best in order.\nEnable the series taxonomy Add the series taxonomy to your site\u0026rsquo;s hugo.toml:\n[taxonomies] tag = \u0026#34;tags\u0026#34; category = \u0026#34;categories\u0026#34; series = \u0026#34;series\u0026#34; If you override taxonomies, include the defaults you still use — Hugo replaces the whole list, it does not merge entries from the theme module.\nTag a post Add a series field to the post\u0026rsquo;s front matter:\n","title":"Organizing Posts into Series"},{"content":"Techly is installed as a Hugo module. Add it to your site\u0026rsquo;s configuration:\n[module] [[module.imports]] path = \u0026#39;github.com/m1rm/techly\u0026#39; version = \u0026#39;v0.2.0\u0026#39; Then run hugo mod get and start the development server with hugo server -D.\nWhat you get The theme provides a home page that lists your recent posts, section pages for archives, and single-page layouts for individual articles.\nConfiguration Set your site title, subtitle, and author in hugo.toml:\n[params] subtitle = \u0026#39;Technical articles and notes\u0026#39; [params.author] name = \u0026#39;Your Name\u0026#39; ","date":"2026-05-22","permalink":"/hugo-techly/posts/getting-started-with-techly/","summary":"Techly is installed as a Hugo module. Add it to your site\u0026rsquo;s configuration:\n[module] [[module.imports]] path = \u0026#39;github.com/m1rm/techly\u0026#39; version = \u0026#39;v0.2.0\u0026#39; Then run hugo mod get and start the development server with hugo server -D.\nWhat you get The theme provides a home page that lists your recent posts, section pages for archives, and single-page layouts for individual articles.\nConfiguration Set your site title, subtitle, and author in hugo.toml:\n[params] subtitle = \u0026#39;Technical articles and notes\u0026#39; [params.author] name = \u0026#39;Your Name\u0026#39; ","title":"Getting Started with Techly"},{"content":"Page bundles are a convenient way to keep images alongside the content that references them. Place media files in the same directory as the post\u0026rsquo;s index.md:\ncontent/posts/my-post/ ├── index.md └── screenshot.png Referencing images Reference the image in Markdown with a relative path:\nHugo resolves bundle resources automatically, so images stay organized and portable as your site grows.\nFeatured images (optional) Listing cards only show a cover when you explicitly provide one — inline content images are not used automatically.\nfeaturedImage = \u0026#39;featured.jpg\u0026#39; # path or bundle filename showImage = false # hide cover for this post Or add a featured.jpg (or featured.png, etc.) to the page bundle.\n","date":"2026-05-22","permalink":"/hugo-techly/posts/images-in-posts/","summary":"Page bundles are a convenient way to keep images alongside the content that references them. Place media files in the same directory as the post\u0026rsquo;s index.md:\ncontent/posts/my-post/ ├── index.md └── screenshot.png Referencing images Reference the image in Markdown with a relative path:\nHugo resolves bundle resources automatically, so images stay organized and portable as your site grows.\n","title":"Images in Posts"},{"content":"Hugo\u0026rsquo;s built-in taxonomy support works out of the box with Techly. Add tags to any post\u0026rsquo;s front matter:\ntags = [\u0026#39;hugo\u0026#39;, \u0026#39;go\u0026#39;, \u0026#39;web\u0026#39;] Tag archive pages Each tag gets its own archive page listing all matching posts. This makes it easy for readers to discover related content across your blog.\nBest practices Keep tag names short and consistent. A handful of well-chosen tags beats a long list of one-off labels.\n","date":"2026-05-22","permalink":"/hugo-techly/posts/working-with-tags/","summary":"Hugo\u0026rsquo;s built-in taxonomy support works out of the box with Techly. Add tags to any post\u0026rsquo;s front matter:\ntags = [\u0026#39;hugo\u0026#39;, \u0026#39;go\u0026#39;, \u0026#39;web\u0026#39;] Tag archive pages Each tag gets its own archive page listing all matching posts. This makes it easy for readers to discover related content across your blog.\nBest practices Keep tag names short and consistent. A handful of well-chosen tags beats a long list of one-off labels.\n","title":"Working with Tags"}]