Dark/light mode switching, persisted via localStorage and informed by time of day
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.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Homepage career timeline, education history, and skills grid driven by front matter
Blog supports date sorting, tags, and pagination
Zero external dependencies, no npm or JavaScript frameworks
Hugo Pipes concatenates, minifies, and fingerprints CSS/JS with SRI, no inline scripts
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.
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
Requires Hugo Extended v0.120.0 or higher
- 2
Add the theme to themes/terminal via git submodule, and copy the exampleSite content and hugo.toml
- 3
All configuration is centralized in hugo.toml, including pagination, params, menus, and markup settings
- 4
Homepage timeline, education, and skills are filled in via front matter in content/_index.md
- 5
Optional Giscus comments; when enabled, adjust CSP headers as recommended in the README
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis 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
https://github.com/rpsadarangani/hugo-terminal-theme/blob/main/LICENSEhttps://github.com/rpsadarangani/hugo-terminal-theme/blob/main/README.mdSelf-hosted JetBrains Mono font with preload
Original README
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).
Explore similar templates
Compare previews and descriptions within the same stack and category.

hugo-PaperMod
A fast, clean, responsive Hugo theme for blogs and lightweight portfolios, with three layout modes (Regular, Home-Info, Profile), automatic and manual light/dark themes, Fuse.js client-side search, multilingual support, and built-in Open Graph, Twitter Cards, and Schema.org data.
Hugo · Portfolio

LoveIt
LoveIt is a clean, elegant, and feature-rich Hugo blog theme derived from LeaveIt and KeepIt, MIT-licensed. It offers light/dark modes, responsive layout, multilingual support, and search via Lunr.js or Algolia.
Hugo · Blog

hugo-coder
hugo-coder is a minimalist Hugo blog theme maintained by luizdepra under the MIT license. It provides a clean, text-focused blog appearance, configuration documentation in the docs directory, and a complete exampleSite with hugo.toml.
Hugo · Blog

blowfish
Blowfish is a Hugo personal website and blog theme built with Tailwind CSS 4, focused on lightness, simplicity, and content-first presentation.
Hugo · Blog

hugo-paper
hugo-paper is a simple, clean, and customizable Hugo blog theme configured through config.toml or hugo.toml.
Hugo · Blog

hextra
Hextra is a Hugo theme for documentation and blog sites, built on Hugo and Tailwind CSS with design referencing Nextra.
Hugo · Documentation
