Can be configured as a single-page site or as a full site with multiple sections
hugo-theme-introduction — Hugo Portfolio Template
By victoriadrake
Introduction is a minimal Hugo theme that can be configured as a single page or a full site with multiple sections. It includes built-in Projects and Blog sections, multilingual support, light and dark themes, and Markdown-driven homepage sections.
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 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Homepage sections are generated from Markdown files under content/home/, with weight sorting and image support
Built-in Projects and Blog sections; projects support external links, timelines, and multi-image carousel galleries
Multilingual support with translation files for multiple languages in the i18n/ directory
Includes light and dark themes, page fade-in and smooth anchor scrolling, Markdown typography, and syntax highlighting
Styles use Sass and Sass variables, compiled via Hugo Pipes and PostCSS
Template Details
Introduction is a theme for the Hugo static site generator, positioned as minimal and flexible: it can be used as a single-page site or organized as a full site with multiple sections. Homepage content is composed of Markdown files under content/home/, each corresponding to a homepage section, sortable via weight in frontmatter, and able to display an image on the left of the section via image; contact.md is always displayed as the last homepage section. The theme includes two built-in sections, Projects and Blog. Projects support standalone pages, external links, project timelines, and multi-image carousel galleries. Blog posts also appear in the homepage Blog section. Site configuration is centralized in config.toml, and menus, custom CSS, and custom JavaScript are all integrated through configuration options. The theme supports multilingual sites, with translation files for multiple languages provided in the i18n/ directory; additional languages can be added by creating .toml files. The theme includes light and dark theme styles, a fade-in effect on page load, smooth scrolling for anchor links, consistent typography for Markdown content (including post titles), and syntax highlighting. Styles are written in Sass and compiled to CSS via Hugo Pipes and PostCSS; Sass variables make it easy to adjust colors. The theme also provides optional Plausible and Google Analytics 4 integration, Disqus comments, and a local time display in the contact section. Usage constraints: production builds require Hugo extended 0.163.0 or later, Node.js 22.12 or later, and the theme's local PostCSS dependencies; when referencing the theme in a site, you must add the theme's node_modules/.bin to PATH before building. When previewing with hugo server, Sass is not compiled through PostCSS; only production builds use PostCSS to add browser prefixes. The example site demo is built by Netlify, and settings in netlify.toml take precedence over same-named settings in the Netlify panel.
Is it right for your project?
Use Cases
- Build a personal portfolio site, using the Projects section to showcase projects with multi-image galleries
- Create a personal blog, with posts also appearing in the homepage Blog section
- Make a single-page personal introduction, using homepage sections to organize bio, projects, and contact information
- Build a multilingual personal site, providing parallel content for different languages
Suitable For
- Developers using Hugo who want to quickly build a personal portfolio or blog
- Personal sites that need to flexibly switch between single-page and multi-section organization
- Sites that need multilingual content and light/dark theme switching
- Users who prefer managing content and configuration with Markdown and config.toml
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Hugo extended 0.163.0 or later; production builds also require Node.js 22.12 or later
- 2
Run npm ci --ignore-scripts in the theme directory to install locked PostCSS dependencies
- 3
When using the theme in a site, add the theme's node_modules/.bin to PATH before building
- 4
The theme can be placed in themes/introduction via git clone or git submodule
- 5
Copy config.toml from exampleSite/ to the site root and modify the configuration as indicated by comments
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the Apache-2.0 license in the public repository; 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
- Free use, modification, commercial use, and distribution are permitted; when distributing, include the Apache-2.0 license.
- Modified files must carry prominent notices of changes, and relevant copyright, patent, trademark, and attribution notices must be retained.
- If the original project includes a NOTICE file, applicable attribution notices in it must be retained when distributing derivative works.
- The license includes an applicable contributor patent grant; initiating patent litigation as described in the license terminates that patent grant, and no trademark rights are granted.
- 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 extended 0.163.0 or later; standard Hugo does not meet the requirement.
- Production builds also require Node.js 22.12 or later and the theme's local PostCSS dependencies.
- When using the theme in a site, the theme's node_modules/.bin must be added to PATH before building; otherwise, production builds cannot use PostCSS.
- Enabling Plausible analytics requires registering a Plausible account; it is an external service and may incur costs.
- After configuring a Google Analytics 4 measurement ID, the theme loads Google's gtag.js external script.
- Enabling Disqus comments requires setting disqusshortname; the comment feature depends on the external Disqus service.
- Running npm test for build regression tests requires Python 3.9+ and Google Chrome.
- The official Netlify demo uses Hugo 0.165.0 and Node.js 24, which differ from the theme's minimum supported versions.
- When deploying with Netlify, settings in netlify.toml override same-named settings in the Netlify panel.
- 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 Apache-2.0 license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
no-charge, royalty-free, irrevocable copyright license
Original License Text
Requires **Hugo extended 0.163.0 or later**.
Original README
Production builds also require **Node.js 22.12 or later** and the theme's local PostCSS dependencies.
Original README
PATH="$PWD/themes/introduction/node_modules/.bin:$PATH" hugo
Original README
You'll need your own Plausible account - see [plausible.io](https://plausible.io/) for more.
Original README
The theme loads Google's `gtag.js` when this ID is present.
Original README
Set `disqusshortname` in `config.toml` to activate Hugo's [internal Disqus template](https://gohugo.io/templates/internal/#disqus).
Original README
Run `npm test` for the build regressions (Python 3.9+ and Google Chrome required)
Original README
The demo pins **Hugo 0.165.0** and **Node.js 24**.
Original README
https://github.com/victoriadrake/hugo-theme-introduction/blob/master/LICENSEhttps://github.com/victoriadrake/hugo-theme-introduction/blob/master/README.mdSettings in `netlify.toml` take precedence over matching settings in the Netlify dashboard.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-02. 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
- Hugo Themes
- Documentation and maintenance reference score
- More documented · 96 / 100
- Technologies
- Hugo
- Website type
- Portfolio · Blog · Tool Site
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-08
- Screenshot last checked
- 2026-10-02
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: b803388c56f98fd935ef4de1830055af1984e0291e4f287d778e1aab77047cb1
2026-10-02T10:32:10.658Z
Source file / repository# Introduction theme for Hugo
[](https://app.netlify.com/sites/hugo-introduction/deploys)


Introduction is a minimalist, highly-versatile theme for Hugo. It can be configured as a single page, or as a full-featured site with multiple sections. It is multilingual, responsive, and includes a light and dark theme.
New to the Hugo static site generator? [Learn the fundamentals here](https://gohugo.io/categories/fundamentals).

Features:
- Multilingual - supports side-by-side content in different language versions
- Custom index page sections from Markdown files
- Projects and Blog sections
- Page load fade-in CSS effect and smooth scrolling to anchor links
- Straightforward customization via `config.toml`
- Styled Markdown throughout, including post titles
- Syntax highlighting
Developer-friendly:
- Sass files included with instant compiling to CSS thanks to [Hugo Pipes](https://gohugo.io/hugo-pipes/postcss/) and [PostCSS](https://gohugo.io/hugo-pipes/postcss/)
- Thoughtful use of Sass variables makes creating new colour schemes easy
## Getting started
Requires **Hugo extended 0.163.0 or later**. See the [Hugo installation instructions](https://gohugo.io/getting-started/installing/). The minimum supported version and the latest release are tested in CI.
Production builds also require **Node.js 22.12 or later** and the theme's local PostCSS dependencies. From the theme directory, install the locked versions:
```sh
npm ci --ignore-scripts
```
When using the theme inside another Hugo site, put the theme's local tools on your path before building. From your site's root:
```sh
PATH="$PWD/themes/introduction/node_modules/.bin:$PATH" hugo
```
`hugo server` previews compile Sass without PostCSS. Production builds use PostCSS to add browser prefixes; no global npm packages are required.
## Get the theme
Run from the root of your Hugo site:
```sh
git clone https://github.com/victoriadrake/hugo-theme-introduction.git themes/introduction
```
Alternatively, you can include this repository as a [git submodule](https://git-scm.com/docs/gitsubmodules). This makes it easier to update this theme if you have your Hugo site in git as well:
```sh
git submodule add https://github.com/victoriadrake/hugo-theme-introduction.git themes/introduction
```
## Preview the theme
Introduction ships with a fully configured example site. From the theme directory:
```sh
npm run dev
```
Then visit `http://localhost:1313/` in your browser to view the example site.
To build the example site, run `npm run build`. Output goes to `docs/`. Override the example URL with `HUGO_BASEURL=https://example.org/ npm run build` when needed.
Run `npm test` for the build regressions (Python 3.9+ and Google Chrome required) and `npm run check:html` after building to check internal links and assets, including accidental `example.com` URLs. The tests use temporary copies and leave local content and generated resources untouched.
This modernization keeps the existing content and configuration model. Navigation and project dialogs use native JavaScript; the existing Owl Carousel still uses bundled jQuery.
## Netlify demo
The [live demo](https://hugo-introduction.netlify.app/) automatically builds and publishes successful pushes to `master`. [netlify.toml](netlify.toml) controls the build: it runs `npm run build && npm run check:html` from the repository root and publishes `docs/`.
The demo pins **Hugo 0.165.0** and **Node.js 24**. This is separate from the theme's minimum supported Hugo version, 0.163.0. New Hugo releases are tested by CI, but the demo's pin must be updated explicitly. Settings in `netlify.toml` take precedence over matching settings in the Netlify dashboard.
After deploying, verify the Hugo version in the production build log and check that images load from the demo domain. A failed build leaves the previous successful deployment live.
## Add content
The following explains how to add content to your Hugo site. You can find sample content in the `exampleSite/` folder.
## Introduction section
Create `index.md`:
```sh
hugo new home/index.md
```
The `title` frontmatter will be the first large heading.
The content of `index.md` will be shown as a subtitle line.
You might want to set `headless` to `true` in the frontmatter. See [headless bundles](https://gohugo.io/content-management/page-bundles/#headless-bundle) for more information.
## Home page
Content for the home page lives under `content/home/`. You may add as many files as you want to in markdown format.
Each markdown file will show as a section on the home page and can be ordered by the `weight` value in the file's frontmatter. You can set `image` to show an image on the left side of the section. The image file must be in the `content/home/` folder.
You may add a contact section by creating
`contact.md`:
```sh
hugo new home/contact.md
```
This will always be shown as the last section on the home page.
## Projects section
Introduction provides an easy way to showcase your projects. Each project can even have its own gallery, shown as an image carousel.
Start by creating an index file for the projects section:
```sh
hugo new projects/_index.md
```
Add a `title` and some optional content to the file.
Add an optional `weight` for ordering projects section.
To create a project, run:
```sh
hugo new projects/YourProjectName/index.md
```
The frontmatter of your new file contains some comments to help your configure your project.
You can set `external_link` to make the project link to another website.
Add images to your project by placing image files in the `YourProjectName/` folder. If you add more then one photo, they will display as a carousel gallery. Images will be ordered by filename. The first image will be shown as the project preview image. You can change the order of your images by adding a `weight` to that resource's parameters:
```sh
resources:
- src: NameOfYourImage.jpg
params:
weight: -100
project_timeframe: "June-December"
```
You can add a `project_timeframe` parameter to the frontmatter of your project to optionally display an arbitrary string on the homepage and modal.
## Blog section
Create an index file for the blog:
```sh
hugo new blog/_index.md
```
Add an optional `weight` for ordering blog section on your homepage
Create a new blog post with:
```sh
hugo new blog/YourEntryTitle.md
```
Posts will also display in the Blog section of the home page.
## Configure your site
From `exampleSite/`, copy `config.toml` to the root folder of your Hugo site and change the fields as you like. Helpful comments are provided.
## Multilingual
Introduction currently ships with support for [many languages](https://github.com/victoriadrake/hugo-theme-introduction/tree/master/i18n). Contributions for other language translations are welcome.
To create a new language translation, add the `.toml` file to the `i18n/` folder. See the existing files for the necessary fields.
See the [hugo documentation](https://gohugo.io/content-management/multilingual/) for more details.
## Menu
Introduction contains a default menu. If you want to override this, you can do so by defining a `menu.main` in `config.toml`.
Optionally, you can disable this menu by setting `showMenu` to `false` in your `config.toml`.
## Contact section clock
Introduction can optionally show your current local time in your [contact section](https://hugo-introduction.netlify.app/#contact). This uses vanilla JS and variables you provide. You can set this up by copying the settings in the exampleSite `config.toml` for `localTime`, `timeZone`, and `timeFormat`.
## Plausible
You can easily use Plausible.io for analytics by setting `plausible = true` in your `config.toml`. Plausible offers a privacy-friendly alternative to Google Analytics. You'll need your own Plausible account - see [plausible.io](https://plausible.io/) for more.
## Google Analytics
For Google Analytics 4, set the measurement ID in your configuration:
```toml
[services.googleAnalytics]
id = "G-MEASUREMENT_ID"
```
The theme loads Google's `gtag.js` when this ID is present.
## Disqus
Set `disqusshortname` in `config.toml` to activate Hugo's [internal Disqus template](https://gohugo.io/templates/internal/#disqus).
## Custom CSS
You can add custom CSS files by placing them under `assets/` and adding the paths to the files to the `customCSS` list in `config.toml`.
## Custom JavaScript
You can add custom JavaScript files by placing them under `assets/` and adding the paths to the files to the `customJS` list in `config.toml`.
## Issues
If you have a question or get stuck, please [open an issue](https://github.com/victoriadrake/hugo-theme-introduction/issues) for help and to help those who come after you. The more information you can provide, the better!
## Contributing
Contributions for new translations, fixes, and features are welcome.
This theme would not be nearly as awesome without its amazing community of open source [contributors](https://github.com/victoriadrake/hugo-theme-introduction/graphs/contributors). Thank you so much! ❤
## License
Copyright (C) 2017-2026 [Victoria Drake](https://victoria.dev/)
Licensed under the [Apache License, Version 2.0](https://github.com/victoriadrake/hugo-theme-introduction/blob/master/LICENSE) (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0).
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
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
