Ananke is a flexible, production-ready starter theme for Hugo focused on accessibility, performance, and maintainable defaults.

[!IMPORTANT]
Ananke moved to its own organisation on April 23, 2026. Please update your references from
github.com/theNewDynamic/gohugo-theme-ananketogithub.com/gohugo-ananke/ananke. Bear with us as we update all documentation and links to reflect this change. Until then, both URLs will continue to work as links as well as in thegitoperations for cloning and submodules.The following steps should suffice to update your references if you have not changed the setup:
For Hugo Modules: search and replace all instances of
github.com/theNewDynamic/gohugo-theme-ananke/v2withgithub.com/gohugo-ananke/ananke/v2in your site's configuration and runhugo mod tidyto update the module dependencies.For Git Submodules: To change the remote URL for your existing submodule, run:
cd path/to/your/repo/themes/ananke # <-- adjust path as needed, keep the 'themes/ananke' part git remote set-url origin https://github.com/gohugo-ananke/ananke.gitThen find
.gitmodulesin the root of your repository and replace all instances oftheNewDynamic/gohugo-theme-anankewithgohugo-ananke/anankein that file as well.
Finally, rungit submodule syncto update the submodule configuration.Issues? Get in touch via GitHub Discussions.
Ananke supports both installation methods:
If you are new to Hugo, see Hugo's official quick start: gohugo.io/getting-started/quick-start.
After installation, use these guides to configure your site:
A post can define common metadata in its front matter. The default archetype already includes date, tags, featured_image, and description; add author and categories when you need them:
---
title: "Post title example"
author: "Jane Example"
date: 2026-05-15T00:00:00+07:00
categories:
- News
- Updates
tags:
- hugo
- ananke
featured_image: "/images/post-image.jpg"
description: "A short description for listings and metadata."
---
Use featured_image for the smaller image shown with post teasers and previews. Store the image in your site, for example under static/images/, and reference it from the site root as /images/post-image.jpg.
Add header navigation through Hugo's menu configuration:
[[menus.main]]
name = "About"
pageRef = "/about"
weight = 10
[[menus.main]]
name = "Authors"
pageRef = "/authors"
weight = 20
Add footer follow links, including email, through the social follow configuration. The available network definitions live in config/_default/params.toml.
[params.ananke.social.follow]
networks = ["email", "github"]
[params.ananke.social.github]
username = "example"
[params.ananke.social.email]
username = "hello@example.com"
Find older changelog entries in .github/changelog-old.md
Thanks for helping improve Ananke. This document describes the current contribution workflow for this repository.
i18n/*.tomlThe project follows a structured release workflow based on conventional commits, staging branches, and automated versioning.
For details, see RELEASES.md.
config/_default/module.toml for the current state).bash npm install
npm run instead of just calling hugo server:bash npm run server
This runs the documentation site from site/ using contents from docs/ with local configuration.
Follow the coding style and format commit messages as described in the conventional commits specification (for example: docs: add troubleshooting section or fix: correct hero image path).
Make sure to install git hooks for linting and testing before you push changes:
bash npm run prepare
This command is run automatically after npm install but you can run it manually to set up hooks in an existing clone or update changed hooks. It uses simple-git-hooks to install a commit hook that runs lint-staged for markdown files, which in turn runs linting tasks on staged files.
hugo version, OS, browser if relevant).flowchart LR
feature["feature/*, fix/*, docs/*, refactor/*"] --> development
development --> staging
maintenance --> staging
staging --> main
main --> staging
staging --> development
This repository uses a linear, rebase-based branch model. Long-lived branches MUST stay connected to main, and merge commits MUST NOT be introduced.
| Branch | Purpose | Release role | Write policy | Merge |
|---|---|---|---|---|
main |
Stable source of truth | releases | Protected. Only receives reviewed PRs from staging or maintenance. |
Rebase |
staging |
Pre-release integration | pre-releases | Protected. Only receives reviewed PRs from development. |
Rebase |
development |
Active development | none | Feature, fix, chore, and documentation PRs target this branch. | Squash |
maintenance |
Dependency maintenance | none | Maintainer-only branch for dependency version updates. | Rebase |
Use short-lived branches for regular work:
feat/<topic>fix/<topic>docs/<topic>chore/<topic>refactor/<topic>Dependency update branches MUST target maintenance unless the change is part of an intentional feature branch and does not touch lock files.
After a successful rebase between those branches, push with lease:
git push --force-with-lease
bash npm run lint:markdown
hugo or hugo server in the relevant project).Fixes #123).To prevent git commit and git push from running hooks you can use the --no-verify flag:
git commit --no-verify -m "docs: update README"
git push --no-verify origin my-feature-branch
This should be used sparingly and only when you have a good reason to bypass checks. If you find yourself needing to use --no-verify frequently, please consider improving the hooks or contributing fixes to reduce false positives.
The theme documentation lives in a separate repository at gohugo-ananke/documentation.
Please keep links relative where possible and remove stale references when updating pages.
This section is based on a proposed guideline introduced in a pull request to Node.js (PR #62105). This is a project-specific adaptation and applies to this repository.
Contributions are made by people, not tools.
AI is acceptable as a tool for any part of the workflow. However, responsibility cannot be delegated. Every contribution must be authored, understood, and defended by the person submitting it.
The answer to "Why is this an improvement?" must never be "I'm not sure, the AI did it."
Pull requests that contain changes the author does not fully understand or demonstrate a lack of understanding will be closed without review.
AI may assist, but it must not replace judgement, understanding, or ownership.
When using AI as part of development:
Communication must remain human, precise, and intentional.
AI is a tool. It can speed things up, help explore options, and reduce friction. It does not replace responsibility. If you submit a contribution, your name is on it. Act accordingly.
If you want to receive attribution for your contribution please follow the contribution guidelines to add yourself to the list of contributors in the Ananke theme documentation. A permanently open issue to add your contribution can be found at the documentation repository. Read the initial message to understand how to add yourself to the list of contributors.
By contributing, you agree that your contributions are provided under the repository license in LICENSE.md.
Copyright (c) 2016-2024 Bud Parr
Copyright (c) 2025-2026 Patrick Kollitsch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.