HugoPortfolioBlog

hugo-terminal-theme — Hugo Portfolio Template

By rpsadarangani

A terminal-style Hugo theme with dark/light mode switching, suitable for building personal portfolio and blog sites.

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-10-01View source

What stands out

A quick read of the recorded project description.

01

Dark/light mode switching, persisted via localStorage and informed by time of day

02

Homepage career timeline, education history, and skills grid driven by front matter

03

Blog supports date sorting, tags, and pagination

04

Zero external dependencies, no npm or JavaScript frameworks

05

Hugo Pipes concatenates, minifies, and fingerprints CSS/JS with SRI, no inline scripts

06

Outputs Open Graph, Twitter Card meta tags, and JSON-LD structured data

Template Details

Developed by rpsadarangani under the MIT license and built on Hugo, this theme is positioned as a minimal, terminal-style personal site template that covers both portfolio and blog use cases. The README explicitly states zero external dependencies: no npm and no JavaScript frameworks.

Functionally, the theme provides dark/light mode switching (persisted via localStorage and informed by time of day), with no flash of unstyled content (FOUC) on page load. The homepage supports a front matter-driven career timeline, education history, and skills grid; the blog supports date sorting, tags, and pagination. There is also a terminal-style setup/gear page, a responsive layout with a 600px mobile breakpoint, print styles, and optional Giscus comment integration.

On the engineering side, the theme uses Hugo Pipes to concatenate, minify, and fingerprint CSS and JS with SRI, contains no inline scripts for easier CSP compatibility; it also outputs Open Graph and Twitter Card meta tags, JSON-LD structured data (Person, BlogPosting), and automatically generates RSS via Hugo. The font is self-hosted JetBrains Mono with preload.

Regarding usage constraints, the README requires Hugo Extended v0.120.0 or higher; configuration is centralized in hugo.toml, and the content structure is fixed to directories such as homepage, blog, contact, and setup. Third-party assets such as demo images, fonts, and icons must be checked against their respective licenses.

HugoPortfolioBlog

Is it right for your project?

Use Cases

  • Building a personal portfolio site to showcase career timeline, education history, and skills categories
  • Building a personal blog with tags and pagination
  • Creating a terminal-style personal homepage and setup/gear page
  • Static sites requiring dark/light mode switching and CSP-friendly output

Suitable For

  • Developers using Hugo who want to quickly start a personal site
  • Users who prefer a terminal visual style and minimal typography
  • Personal projects that need a combined portfolio and blog without introducing a frontend framework
  • Sites with requirements for CSP compatibility and structured data

Getting started & customization

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

  1. 1

    Requires Hugo Extended v0.120.0 or higher

  2. 2

    Add the theme to themes/terminal via git submodule, and copy the exampleSite content and hugo.toml

  3. 3

    All configuration is centralized in hugo.toml, including pagination, params, menus, and markup settings

  4. 4

    Homepage timeline, education, and skills are filled in via front matter in content/_index.md

  5. 5

    Optional Giscus comments; when enabled, adjust CSP headers as recommended in the README

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • 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

  • Giscus comments are optional; enabling them requires configuring the Giscus repository, repoId, category, and categoryId in hugo.toml and depends on the external service giscus.app; if not enabled, that service is not required.
  • Using this theme requires Hugo Extended 0.120.0 or higher; non-Extended versions may not build correctly.
  • The theme self-hosts the JetBrains Mono font; the font's own license must be checked independently, and the MIT code license does not necessarily cover that font asset.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Optional Giscus comments integration

Original README

- Hugo Extended v0.120.0 or later

Original README

Self-hosted JetBrains Mono font with preload

Original README
https://github.com/rpsadarangani/hugo-terminal-theme/blob/main/LICENSEhttps://github.com/rpsadarangani/hugo-terminal-theme/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-02-13
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: cd105cc40af376769e486d9b4ceb7eb30b28b4eab9c3e9de7618b17cdee5942c

2026-10-01T00:16:54.855Z

Source file / repository
# Hugo Terminal Theme

A minimal, terminal-inspired Hugo theme with dark/light mode support. Zero external dependencies — no npm, no JavaScript frameworks.

**Demo**: [rpsadarangani.github.io/hugo-terminal-theme](https://rpsadarangani.github.io/hugo-terminal-theme/)

## Features

- Dark/light mode toggle (persisted via localStorage, respects time of day)
- No flash of unstyled content (FOUC) on page load
- Career timeline component driven by front matter
- Skills grid with categories
- Blog with date-sorted posts, tags, and pagination
- Setup/gear page with terminal-styled sections
- Responsive design (mobile breakpoint at 600px)
- Hugo Pipes: CSS & JS concatenated, minified, fingerprinted with SRI
- Zero inline scripts — fully CSP compatible
- Open Graph and Twitter Card meta tags
- JSON-LD structured data (Person, BlogPosting)
- RSS feed (auto-generated by Hugo)
- Self-hosted JetBrains Mono font with preload
- Print styles
- Optional Giscus comments integration

## Quick Start

```bash
# Create a new Hugo site
hugo new site mysite
cd mysite

# Add the theme
git submodule add https://github.com/rpsadarangani/hugo-terminal-theme.git themes/terminal

# Copy example content
cp -r themes/terminal/exampleSite/content .
cp themes/terminal/exampleSite/hugo.toml .

# Start the dev server
hugo server -D
```

## Configuration

All configuration is in `hugo.toml`:

```toml
baseURL = "https://example.com/"
languageCode = "en-us"
title = "your name"
theme = "terminal"
[pagination]
  pagerSize = 7

[params]
  description = "your tagline"
  author = "Your Name"
  terminalPrompt = "~ you_"           # header branding with blinking cursor
  twitter = "@yourhandle"             # optional: twitter card meta tag

  # Optional: structured data for homepage
  # jobTitle = "Senior Software Engineer"
  # worksFor = "Acme Corp"
  # sameAs = ["https://github.com/you", "https://linkedin.com/in/you"]

  # Optional: giscus comments (https://giscus.app)
  # [params.giscus]
  #   repo = "your-username/your-repo"
  #   repoId = "your-repo-id"
  #   category = "Blog Comments"
  #   categoryId = "your-category-id"

[menu]
  [[menu.main]]
    name = "/home"
    url = "/"
    weight = 1
  [[menu.main]]
    name = "/blog"
    url = "/blog/"
    weight = 2
  [[menu.main]]
    name = "/contact"
    url = "/contact/"
    weight = 3

[markup]
  [markup.goldmark]
    [markup.goldmark.renderer]
      unsafe = true
  [markup.highlight]
    noClasses = false
```

## Content Structure

```
content/
├── _index.md          # Home page (with timeline, education, skills)
├── blog/
│   ├── _index.md      # Blog list page
│   └── my-post.md     # Blog post
├── contact.md         # Contact page
├── setup/
│   └── _index.md      # Setup/gear page
└── privacy.md         # Optional: privacy policy
```

## Home Page Front Matter

The home page supports career timeline, education, and skills via front matter:

```yaml
---
title: "hey, i'm jane"
timeline:
  - role: "Senior Engineer"
    company: "Acme Corp"
    date: "01.2024 — present"
    current: true               # adds glow effect on timeline dot
  - role: "Software Engineer"
    company: "Startup Inc"
    date: "06.2021 — 12.2023"
education:
  - degree: "BSc Computer Science"
    school: "State University"
    date: "2015 — 2019"
skills:
  languages: ["Go", "Python", "TypeScript"]
  cloud: ["AWS", "GCP"]
  tools: ["Kubernetes", "Terraform"]
---

your intro text here.
```

## Blog Post Front Matter

```yaml
---
title: "my post title"
date: 2026-01-01
lastmod: 2026-01-01
description: "shown in the post list and meta tags"
tags: ["go", "kubernetes"]
---
```

## Customization

### Colors

All colors are CSS custom properties in `assets/css/variables.css`. Override them by creating your own CSS file:

```css
/* Dark theme */
:root, [data-theme="dark"] {
  --accent: #00ff88;        /* green accent */
  --bg: #0a0a0a;            /* background */
  --text: #e0e0e0;          /* primary text */
}

/* Light theme */
[data-theme="light"] {
  --accent: #007744;
  --bg: #fafafa;
  --text: #1a1a1a;
}
```

### Terminal Prompt

Set `terminalPrompt` in your config to customize the header branding:

```toml
[params]
  terminalPrompt = "~ myname_"
```

### Nav Links

Menu items are prefixed with `/` by convention (e.g., `/home`, `/blog`). Configure them in `[menu]`.

### Content Security Policy

This theme uses zero inline scripts. A recommended CSP header:

```
Content-Security-Policy: default-src 'self'; script-src 'self' https://giscus.app; style-src 'self' 'unsafe-inline' https://giscus.app; frame-src https://giscus.app; img-src 'self' data:; font-src 'self'; connect-src 'self'
```

## Requirements

- Hugo Extended v0.120.0 or later

## License

MIT

## Credits

Created by [Rahul Sadarangani](https://rahulsadarangani.com).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.