# DoIt: a Hugo theme built on the LoveIt lineage

> DoIt is a Hugo blog theme derived from LoveIt, LeaveIt and KeepIt, adding a rewritten home page, extended Markdown syntax, several search backends and a long list of comment integrations. It ships as a git submodule and its own npm toolchain, and the project itself warns that release archives drift behind the repository.

**HEIGE-PCloud/DoIt** — A clean, elegant and advanced blog theme for Hugo.

- Repository: https://github.com/HEIGE-PCloud/DoIt
- Website: https://hugodoit.pages.dev
- Stars: 939 · Forks: 218
- Language: HTML
- License: MIT
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/heige-pcloud-doit

## DoIt inherits from LoveIt, LeaveIt and KeepIt

DoIt is not a blank sheet. The README states that it is based on the LoveIt theme, the LeaveIt theme and the KeepIt theme, and that it inherits their functions while adding new ones and optimisations on top. That lineage is the fastest way to understand the theme, and it also tells you where to look when something behaves unexpectedly: the ancestor theme is a likely culprit.

The stated goal is to create a Hugo theme that is straightforward to use so that a writer can get on with content rather than with configuration details. The result is a wide feature surface rather than a minimal one, which is the central trade-off of the project. A theme like this can produce a finished looking blog in an afternoon, but it also brings a large amount of third-party JavaScript, a set of shortcodes to learn, and a configuration file with a long list of keys.

The language of the project is HTML at the repository level, and the README is bilingual, with an English version and a Simplified Chinese version, and the documentation site is published at hugodoit.pages.dev. The repository also carries a Chinese README, so the audience is not limited to English speakers.

## Extended Markdown is where the theme does its differentiating

Most of the feature list lives in the Markdown layer, and this is the part worth reading line by line before you commit.

There is extended Markdown syntax for Font Awesome icons, for ruby annotation and for fractions. Mathematical formulas are supported through KaTeX, and diagram syntax is available as a shortcode through mermaid. Interactive data visualisation is supported by an ECharts shortcode, and a Mapbox shortcode uses Mapbox GL JS. An embedded music player is supported through APlayer with MetingJS, and there is a Bilibili player.

Beyond the inline syntax there are shortcodes for admonitions and for custom styles, an images gallery through lightgallery.js, automatic code highlighting and a one-click copy of code to the clipboard. Search can be backed by algolia, Fuse.js or Pagefind. A self-expanding table of contents, multiple authors, dark mode, pagination, multilanguage and i18n readiness round out the page level features, and Twemoji support is listed as well.

The design of these choices is consistent. Rather than asking you to paste raw HTML into posts, the theme extends the Markdown vocabulary so that an icon, a formula or a chart is a short line of text that a non-author can still review. The cost is that the set of shortcodes becomes part of your content contract, and moving to another theme later means rewriting those lines.

## Eight analytics backends change what you are willing to ship

The performance and SEO section of the README lists a lot of third-party integrations, and one group deserves separate attention because it affects your users rather than your layout.

Google Analytics, Baidu Analytics, Splitbee Analytics and Cloudflare Web Analytics are all supported, alongside Fathom Analytics, Umami Analytics, Plausible Analytics and Matomo Analytics. A theme that supports eight analytics backends is not making a recommendation so much as deferring the choice, which is fair for a theme used across very different hosting situations. But the choice you make determines which scripts run on your pages and which data leaves the reader's browser, so it belongs in the adoption decision rather than in a config file you set later.

Search engine verification is supported for Google, Yandex and Baidu, and SEO output includes a schema based on JSON-LD, which is what search engines read for structured results. The project also claims a performance result for itself, stating 99 out of 100 on mobile and 100 out of 100 on desktop in Google PageSpeed Insights. That is the project's own claim about the theme, and it is worth re-checking against your own content, since a theme can score well on a sparse demo page and less well on a heavy one.

## Fourteen comment systems is a configuration surface, not a feature

The social and comment section reads like a list of badges, and it is easy to skim past what it really means: the theme gives you a switch for a very large number of comment backends, and each one brings a different account, script and moderation model.

Disqus, Gitalk, Valine, Waline, Facebook comments, Telegram comments, Commento, Utterances, Twikoo, Vssue, Remark42, giscus and Artalk are all listed as supported. Social presence is configurable too, with up to 64 social links and up to 28 share sites, and avatars can come from Gravatar or from a local file.

Read as an engineering choice, this is a single consistent integration layer exposed to many upstream services, which saves you from writing a bridge for whichever one your community already uses. Read as an operational choice, it is a maintenance surface: each backend is a separate external dependency with its own API, its own outage behaviour and its own data policy, and the theme cannot normalise them. The theme also lists a CDN option for all third-party libraries, which changes the failure mode of those dependencies from local to network, so the two settings interact and should be decided together.

## The submodule install and the two-command upgrade path

Installing DoIt into an existing Hugo site is a documented two-step process, and the documentation points to a theme documentation basics page for the full guidance.

If you are coming from LoveIt, the README describes the migration as easy. You add the repository as a submodule of your site directory:

```bash
git submodule add https://github.com/HEIGE-PCloud/DoIt.git themes/DoIt
```

Later, you update the submodule in your site directory to the latest commit with:

```bash
git submodule update --remote --merge
```

Then you change the theme entry in config.toml, which is the whole configuration change the migration requires:

```toml
- theme = "LoveIt"
+ theme = "DoIt"
```

An alternative is offered: download the latest release .zip file and extract it into the themes directory. The README marks this as not recommended, and the reason is given plainly, since the repository is updated frequently and the releases may be out of date. That is a strong argument for the submodule route, because the submodule command gives you a moving theme that tracks the repository while your own content stays in version control separately.

## The theme builds itself with Hugo, Tailwind and a Playwright suite

The repository is a working development environment, not just a theme folder, and the npm scripts in package.json show how it is put together.

The build script runs Hugo against the bundled exampleSite with minification and garbage collection:

```bash
npm run build
```

The underlying command is `hugo --logLevel info --minify --source=exampleSite --themesDir ../.. --gc`, and the server script runs the same example site in draft mode with fast render disabled and no HTTP cache. The dev script runs the Hugo server and the Tailwind watcher together, and the Tailwind step compiles assets/css/tailwind.css into assets/css/main.css with the Tailwind CSS CLI. The package lists @tailwindcss/cli, concurrently and @playwright/test among its devDependencies, plus atomic-algolia as a dependency, and a playwright.config.ts and a tests/ directory are present at the repository root.

That last combination is the one that changes how you contribute. With a Playwright configuration and tests in the tree, a change to a template or a style can be checked in a browser rather than by eye, and the validate script runs the preview build and then a Docker-based HTML validator over the generated site. The theme.toml, archetypes/, i18n/, layouts/, assets/ and static/ directories complete the standard Hugo theme layout, and a flake.nix and flake.lock plus a .envrc show a Nix based development environment for contributors.

## Search has three backends and the theme ships the tooling for two of them

Search is the one subsystem where the theme offers a genuine architectural choice rather than a cosmetic one, and it is worth understanding what each option costs.

The README lists three options across its feature sections: algolia, Fuse.js and Pagefind. The first two are named in the extended features list, and Pagefind appears in the summary list of reasons to choose the theme. The repository scripts back this up, with an algolia script that runs atomic-algolia and a pagefind script that runs Pagefind over the generated example site. That means two of the three paths are wired into the repository tooling, while Fuse.js is a client-side option that needs no index build step.

The distinction is worth stating plainly, because it decides your hosting story. A hosted search service such as algolia gives fast indexed search and needs a hosted account. Pagefind builds a static index from the generated output, which keeps the index in your own deployment and needs a build step. Fuse.js runs entirely in the browser, which is simple but scales with the size of the content you ship to every reader. The theme does not force the choice, and that is a reasonable position for a theme used by people with different hosting constraints.

## Where DoIt is the wrong choice

There are situations where this theme is a poor fit, and they are not edge cases.

The first is a site that must ship almost no third-party JavaScript. The feature set leans on KaTeX, mermaid, ECharts, Mapbox GL JS, APlayer, lightgallery.js and any of the eight analytics backends, and a CDN mode is offered for the third-party libraries, which moves the dependency rather than removing it. A site with a strict performance budget or a restrictive content policy will spend its effort stripping features instead of using them.

The second is a project that needs a pinned, reproducible theme version. The README explicitly discourages the release zip because the repository is updated frequently and the releases may be out of date, so a release-based install gives you a snapshot that is not necessarily what the project considers current. The submodule route has the opposite property, and you must pick one and live with it.

The third is Hugo version compatibility, and the documentation is the only guide here. The README notes that the new home page is compatible with the latest version of Hugo, which implies attention to Hugo releases, and a theme pinned to a Hugo release has to be re-checked whenever Hugo moves. The go.mod file in the repository declares the module as github.com/HEIGE-PCloud/DoIt with a go directive of 1.20, which is a lower bound for contributors rather than a promise about Hugo.

Licensing is straightforward but layered. The project is under the MIT licence, which is permissive and imposes few conditions on use. Underneath, the theme inherits code from the LoveIt, LeaveIt and KeepIt themes and loads Font Awesome, Algolia, Fuse.js, Pagefind, KaTeX, mermaid, ECharts, Mapbox GL JS and the comment systems, each with its own licence. A legal review of the shipped site is your own to do.

## Conclusion

DoIt suits a Hugo user who wants a finished design with icons, math, diagrams, maps, an embedded music player and a choice of search and comment backends, and it suits people already on LoveIt because the migration is a submodule change plus one config line. It does not suit someone who wants a minimal template with no third-party JavaScript, nor anyone who needs a pinned release artifact, because the project states the repository is updated frequently and the release zip may be out of date. Before adopting it, read the theme documentation page, check the changelog for the change you care about, and install the theme as a submodule so that the git submodule update --remote --merge command can carry your site forward.

## FAQ

### How do I install the DoIt Hugo theme into my site?

Add the repository as a submodule of your site directory with `git submodule add https://github.com/HEIGE-PCloud/DoIt.git themes/DoIt`, then set the theme entry in config.toml to DoIt. The README also suggests downloading the latest release .zip into the themes directory, but marks that as not recommended because the repository is updated frequently and the releases may be out of date.

### How do I migrate from the LoveIt theme to DoIt?

The README describes the migration as easy: add the DoIt repository as a submodule of the site directory, change the theme entry in config.toml from LoveIt to DoIt, and from then on update the submodule with `git submodule update --remote --merge`. The changelog and the documentation page list the new features and configuration options that come with the switch.

### Which search options does the DoIt theme support?

The theme lists algolia, Fuse.js and Pagefind as search backends. The repository scripts include an algolia step that runs atomic-algolia and a pagefind step that runs Pagefind against the generated site, while Fuse.js runs in the browser without an index build.

### What licence is DoIt released under and how often is it updated?

The repository is under the MIT licence, and the package.json metadata repeats that licence for the theme source. The last push was on 2026-10-16, and the tagged releases are v1.0.2 from 2026-04-12, v1.0.1 from 2026-04-02 and v1.0.0 from 2026-02-18, which is why the README advises tracking the repository with a submodule instead of downloading a release archive.

## Sources

- [HEIGE-PCloud/DoIt on GitHub](https://github.com/HEIGE-PCloud/DoIt)
- [License: MIT](https://github.com/HEIGE-PCloud/DoIt/blob/main/LICENSE)
- [Project website](https://hugodoit.pages.dev)
- [README](https://github.com/HEIGE-PCloud/DoIt/blob/main/README.md)
- [Releases](https://github.com/HEIGE-PCloud/DoIt/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/heige-pcloud-doit
