HugoPortfolioBlog

termfolio — Hugo Portfolio Template

By joe-mccarthy

Termfolio is a terminal-style Hugo theme that presents blogs, portfolios, and project indexes with shell prompts and file-list navigation. It is dark by default, with no tracking and no runtime external dependencies.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-09-30View source

What stands out

A quick read of the recorded project description.

01

Terminal-style interface: shell prompts, command-style labels, and file-list navigation form a unified visual language

02

Dark monochrome design, consistent across browsers and operating systems

03

No analytics, cookies, comments, tracking, CDN fonts, or third-party runtime dependencies by default

04

Standard pages use only HTML and CSS; JavaScript is used only when optional search is enabled

05

Project layout supports metadata such as stack, status, role, impact, demo, repository, licence, and year

06

Built-in JSON-LD, Open Graph, Twitter Cards, canonical links, RSS, and taxonomy pages

Template Details

Termfolio is a Hugo theme for technical blogs, engineering notes, personal portfolios, and repository indexes. It places static content into a file-system-like interface: shell prompts, command-style labels, and file-list navigation, all in a dark monochrome design. By default, the theme does not include analytics, cookies, comments, tracking scripts, CDN fonts, or third-party runtime dependencies. Standard pages use only HTML and CSS; JavaScript is used only when optional search is enabled.

For content, the theme provides default styling for long-form typography, covering body text, footnotes, tables, figures, quotations, code blocks, and Chroma syntax highlighting. The project layout supports structured metadata such as stack, status, role, impact, demo, repository, licence, and year. Site metadata includes JSON-LD, Open Graph, Twitter Cards, canonical links, RSS, current navigation state, and taxonomy pages. Search can optionally use a built-in provider or Pagefind; the latter is suitable for sites with larger content volumes.

Usage limitations: the theme is dark monochrome and content-first, so it is not suitable for image-heavy magazines, conversion-oriented marketing sites, or applications requiring extensive client-side interaction. Installation requires Hugo 0.128.0 or newer (Extended is not required). Git is required when installing as a Git submodule, and Pagefind must be installed separately when using Pagefind search.

HugoPortfolioBlog

Is it right for your project?

Use Cases

  • Build a technical blog or engineering notes and present long-form articles and code in a terminal style
  • Create a personal portfolio or project index showing each project's stack, status, and repository link
  • Publish a static site that prioritizes privacy and avoids tracking and third-party runtime dependencies
  • Enable built-in search or Pagefind static search for sites with larger content volumes
  • Organize articles and projects with taxonomy pages and output RSS and structured metadata

Suitable For

  • Technical blog and engineering note authors
  • Developer portfolios that need to display structured project metadata
  • Content-first static sites that prefer a dark terminal interface
  • Publishers with privacy and external dependency requirements who want no tracking by default

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Requires Hugo 0.128.0 or newer; Hugo Extended is not required

  2. 2

    Recommended installation as a Git submodule into themes/termfolio, with theme: termfolio set in the configuration

  3. 3

    Alternatively, download the release archive, extract it into the themes/termfolio directory, and record the version for reproducible upgrades

  4. 4

    Configuration supports YAML, TOML, or JSON; the documentation examples use YAML

  5. 5

    When using params.search.provider: pagefind, Pagefind must be installed separately

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This listing covers the free version available in the public repository under the MIT license; the free scope applies to that version's code and does not imply that external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute this version's code for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Using this theme requires Hugo 0.128.0 or newer; Hugo Extended is not required.
  • Git is required when installing the theme as a Git submodule.
  • Pagefind must be installed separately only when using params.search.provider: pagefind.
  • The theme is dark monochrome and content-first, so it is not suitable for image-heavy magazines, conversion-oriented marketing sites, or applications requiring extensive client-side interaction.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; the code's MIT license alone cannot be used to judge them.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Hugo `0.128.0` or newer; Hugo Extended is not required.

Original README

Git, when installing the theme as a submodule.

Original README

Pagefind, only when using `params.search.provider: pagefind`.

Original README

Its dark-only, content-first design is less suitable for image-led magazines, conversion-focused marketing sites, or applications with substantial client-side interaction.

Original README
https://github.com/joe-mccarthy/termfolio/blob/main/LICENSEhttps://github.com/joe-mccarthy/termfolio/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-01. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 88 / 100
Technologies
Hugo
Website type
Portfolio · Blog
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-23
Screenshot last checked
2026-10-01

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Hugo as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: b230d020eaadf1e385788443b61cc3b98c524409d5b3a8645936e8486b723465

2026-10-01T13:54:38.222Z

Source file / repository
# Termfolio

A dark, terminal-inspired Hugo theme for technical blogs, project portfolios, and repository-style personal sites.

[![Build](https://img.shields.io/github/actions/workflow/status/joe-mccarthy/termfolio/render-example-test.yml?branch=main&style=flat-square&label=build)](https://github.com/joe-mccarthy/termfolio/actions/workflows/render-example-test.yml) [![Quality gate](https://img.shields.io/sonar/quality_gate/joe-mccarthy_termfolio?server=https%3A%2F%2Fsonarcloud.io&style=flat-square)](https://sonarcloud.io/summary/overall?id=joe-mccarthy_termfolio) [![Latest release](https://img.shields.io/github/v/release/joe-mccarthy/termfolio?sort=semver&style=flat-square&label=release)](https://github.com/joe-mccarthy/termfolio/releases/latest) [![MIT licence](https://img.shields.io/github/license/joe-mccarthy/termfolio?style=flat-square)](LICENSE)

Termfolio presents static content through a filesystem-inspired interface. It combines shell prompts and file-list navigation with layouts for long-form writing, structured project metadata, locally hosted fonts, and privacy-conscious defaults.

![Termfolio example site walkthrough](https://raw.githubusercontent.com/joe-mccarthy/termfolio/main/static/images/termfolio-example.gif)

[Live demo](https://joe-mccarthy.github.io/termfolio/) · [Screenshots](#screenshots) · [Quick start](#quick-start) · [Documentation](#documentation) · [Releases](https://github.com/joe-mccarthy/termfolio/releases)

## Features

| Feature | Description |
| --- | --- |
| Terminal-inspired interface | Shell prompts, command-style labels, and file-list navigation provide a consistent visual language. |
| Dark-only design | A focused terminal palette remains consistent across browsers and operating systems. |
| Privacy-conscious defaults | No analytics, cookies, comments, tracking, CDN fonts, or third-party runtime dependencies. |
| Minimal client-side code | Standard pages are HTML and CSS; JavaScript is used only when optional search is enabled. |
| Long-form content | Prose, footnotes, tables, figures, blockquotes, code blocks, and Chroma highlighting are styled by default. |
| Structured projects | Project layouts support stack, status, role, impact, demo, repository, licence, and year metadata. |
| Optional static search | Use the built-in search provider or Pagefind for larger content collections. |
| Rich site metadata | JSON-LD, Open Graph, Twitter Cards, canonical URLs, RSS, active navigation, and taxonomy pages are included. |

## Screenshots

| Home | Post |
| --- | --- |
| <img src="https://raw.githubusercontent.com/joe-mccarthy/termfolio/main/static/images/screenshots/home.png" alt="Termfolio homepage screenshot" width="420"> | <img src="https://raw.githubusercontent.com/joe-mccarthy/termfolio/main/static/images/screenshots/post.png" alt="Termfolio post screenshot" width="420"> |

| Projects | Search |
| --- | --- |
| <img src="https://raw.githubusercontent.com/joe-mccarthy/termfolio/main/static/images/screenshots/projects.png" alt="Termfolio projects screenshot" width="420"> | <img src="https://raw.githubusercontent.com/joe-mccarthy/termfolio/main/static/images/screenshots/search.png" alt="Termfolio search screenshot" width="420"> |

## Requirements

- Hugo `0.128.0` or newer; Hugo Extended is not required.
- Git, when installing the theme as a submodule.
- YAML, TOML, or JSON configuration. This documentation uses YAML.
- Pagefind, only when using `params.search.provider: pagefind`.

Termfolio is designed for technical blogs, engineering notebooks, personal portfolios, repository indexes, and privacy-conscious publications. Its dark-only, content-first design is less suitable for image-led magazines, conversion-focused marketing sites, or applications with substantial client-side interaction.

## Quick start

Create a Hugo site and install Termfolio as a Git submodule:

```bash
hugo new site mysite -f yaml
cd mysite
git init
git submodule add https://github.com/joe-mccarthy/termfolio themes/termfolio
```

Add a minimal `config.yaml`:

```yaml
baseURL: https://example.org/
defaultContentLanguage: en-gb
title: My Termfolio Site
theme: termfolio

pagination.pagerSize: 10

markup:
  highlight:
    noClasses: false

params:
  author: Your Name
  description: "A short description for metadata and social previews."
  mainSections:
  - posts
  style:
    accentColor: "#9bf870"
```

Create a post and start the development server:

```bash
hugo new content/posts/hello-terminal.md
hugo server --buildDrafts
```

Open [http://localhost:1313/](http://localhost:1313/). See the [configuration guide](docs/configuration.md) before deploying a production site.

## Installation

### Git submodule

The recommended installation method keeps the theme version visible in your site's Git history:

```bash
git submodule add https://github.com/joe-mccarthy/termfolio themes/termfolio
```

Set `theme: termfolio` in your Hugo configuration. To update later:

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

Review the incoming changes before committing the updated submodule reference.

### Release archive

1. Download the [latest release](https://github.com/joe-mccarthy/termfolio/releases/latest).
2. Extract it into your site's `themes/termfolio` directory.
3. Set `theme: termfolio` in your Hugo configuration.

Release archives are convenient for installations that do not use Git submodules. Record the installed release version so upgrades remain reproducible.

## Essential configuration

The following settings enable the most commonly used theme features:

```yaml
menu:
  main:
  - identifier: home
    name: Home
    url: /
    weight: 1
  - identifier: posts
    name: Posts
    url: /posts/
    weight: 2
  - identifier: projects
    name: Projects
    url: /projects/
    weight: 3

params:
  sourceURL: https://github.com/your-name/your-site
  display:
    footerAttribution: true
    taxonomyMeta: true
  toc:
    enabled: true
    title: Contents
  latest:
    enabled: true
    count: 3
  post_nav:
    enabled: true
    show_title: false

taxonomies:
  category: categories
  tag: tags
  series: series
```

A complete, copy-ready configuration is available in [example-config.yaml](example-config.yaml). Every supported option is described in [docs/configuration.md](docs/configuration.md).

## Documentation

| Guide | Covers |
| --- | --- |
| [Configuration](docs/configuration.md) | Navigation, taxonomies, parameters, styling, search settings, and troubleshooting. |
| [Content](docs/content.md) | Posts, projects, taxonomy pages, shortcodes, search content, and local assets. |
| [Development](docs/development.md) | Example-site workflow, repository structure, checks, CI, media, and maintainer troubleshooting. |
| [Contributing](CONTRIBUTING.md) | Development setup, validation expectations, and the pull-request process. |
| [Support](SUPPORT.md) | Routes for usage questions, bug reports, feature requests, and showcase submissions. |
| [Releasing](RELEASING.md) | Versioning, candidate preparation, publication automation, and independent verification. |
| [Release checklist](docs/release-checklist.md) | The concise checklist used for an exact release candidate. |
| [Hugo Themes submission](docs/hugo-themes-submission.md) | Gallery metadata, media requirements, and submission steps. |
| [Changelog](CHANGELOG.md) | Long-term project history. |

## Demo and starter site

The bundled example demonstrates posts, projects, search, taxonomies, and the full configuration surface:

- [Home](https://joe-mccarthy.github.io/termfolio/)
- [Posts](https://joe-mccarthy.github.io/termfolio/posts/)
- [Projects](https://joe-mccarthy.github.io/termfolio/projects/)
- [Code and terminal post](https://joe-mccarthy.github.io/termfolio/posts/theme-showcase/code-and-terminal/)
- [Search](https://joe-mccarthy.github.io/termfolio/search/)
- [Theme design category](https://joe-mccarthy.github.io/termfolio/categories/theme-design/)

To run or copy the starter site, follow the [example-site instructions](docs/development.md#run-the-example-site). Public sites using Termfolio may be proposed with the repository's [showcase issue template](.github/ISSUE_TEMPLATE/showcase.yml).

## Accessibility and performance

Termfolio uses semantic landmarks, skip links, visible focus states, active navigation state, and a high-contrast palette. Standard reading and navigation do not require JavaScript. The theme bundles JetBrains Mono locally and includes no analytics, tracking scripts, remote embeds, or CDN assets by default.

Run a production build after adding your own content and assets, then audit the result in its deployment environment:

```bash
hugo --minify
```

The repository's automated checks enforce warning-free rendering and a minimum Lighthouse accessibility score. See the [development guide](docs/development.md#quality-and-compatibility) for the current quality baseline and local commands.

## Contributing

Contributions are welcome. Keep changes focused, run the documented checks, update user-facing documentation when behaviour changes, and include screenshots for visual changes. Read the [contributing guide](CONTRIBUTING.md) before opening a pull request, or use the [support guide](SUPPORT.md) to choose the appropriate issue form.

## Release history

See [CHANGELOG.md](CHANGELOG.md) for the complete version history and [GitHub Releases](https://github.com/joe-mccarthy/termfolio/releases) for published source archives and release notes.

## Licence

Termfolio is released under the [MIT License](LICENSE).

## Acknowledgements

- [Hugo](https://gohugo.io/) powers the static site pipeline.
- [JetBrains Mono](https://www.jetbrains.com/lp/mono/) provides the bundled terminal-style typeface.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.