Responsive layout based on Bootstrap
hugo-air — Hugo Starter Template
By fducat18
Hugo Air is a starter theme based on Hugo and Bootstrap, offering responsive layout, galleries, single-page landing pages, and multilingual support under the MIT license.
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.
Supports automatic loading of custom header images and card thumbnails from page bundles
Provides Instagram-style and Masonry galleries, usable as a page type or shortcode
Supports a single-page landing homepage, ordering pages by weight
Built-in Google Maps embed, Smoobu booking, and multilingual shortcodes
Includes an exampleSite and hugo.yaml configuration example
Template Details
Hugo Air is a starter theme for Hugo sites, intended to provide a starting point for new projects that includes basic features and common development practices (performance, accessibility, rapid development). The theme includes responsive layout and Bootstrap support, can automatically load custom header images and card thumbnails from page bundles, and offers two gallery presentation modes: Instagram-style and Masonry-style, usable either as a page type or via shortcode. It also supports a single-page landing homepage, embedded Google Maps, a Smoobu booking shortcode, and a multilingual shortcode.
For usage, the theme can be installed as a Git submodule, and the repository includes an exampleSite with sample content and a hugo.yaml configuration that can be copied into a project. Configuration options include the primary color params.mainColor, Google Maps address params.gmaps_url, footer text, menu structure, and Google Analytics service ID. Header images and card images are read from static/img by default, and can be overridden by placing featured-image.jpg or card.jpg in a page bundle.
Limitations: the material does not specify the required Hugo version, nor does it provide complete documentation beyond the example site; features such as galleries and landing pages depend on page bundles and front matter configuration and must be set up manually according to the README. Licenses for third-party assets such as demo images, fonts, and icons must be checked separately and cannot be determined solely from the code's MIT license.
Is it right for your project?
Use Cases
- Setting up a starting point for a new Hugo site with responsive layout and basic components
- Creating image-focused pages using page bundles to generate Instagram or Masonry galleries
- Building a single-page landing page that combines multiple pages into one long page by weight
- Embedding a Google Maps location or Smoobu booking entry in a site
- Hugo projects that need multilingual shortcode support
Suitable For
- Developers using Hugo who want a quick start based on Bootstrap
- Content sites that need common page forms such as galleries and landing pages
- Hugo projects that accept managing the theme via Git submodule
- Users who can manually configure front matter and hugo.yaml according to the README
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Install as a Git submodule: git submodule add https://github.com/fducat18/hugo-air.git themes/air
- 2
Run the example locally: hugo server -s exampleSite --themesDir ../..
- 3
For a quick start, copy exampleSite/content to the project content, and copy exampleSite/hugo.yaml to the project root (this will overwrite existing configuration and must be merged manually)
- 4
Override the primary color via params.mainColor, and set the Google Maps address via params.gmaps_url
- 5
Galleries require setting type: gallery-masonry or gallery-insta in front matter, or using the gallery-masonry / gallery-insta shortcode with the page bundle name passed in
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 applies to that version's code and does not mean 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
- Embedding Google Maps requires providing gmaps_url in the configuration; actual use depends on Google Maps services and may be subject to Google's terms of service.
- Enabling Google Analytics requires entering a Google Analytics ID in the configuration; it is an external service, and you are responsible for the corresponding account and compliance requirements.
- The Smoobu booking shortcode depends on the third-party Smoobu booking service; a corresponding service account is required before use.
- Custom favicons require generating or providing icon files yourself; third-party generation sites have their own terms of use.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be determined solely from 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
Embedded Google Maps
Original README
Setup Google Analytics
Original README
Smooobu Booking **shortcode**
Original README
https://github.com/fducat18/hugo-air/blob/main/LICENSEhttps://github.com/fducat18/hugo-air/blob/main/README.mdUse your favicon or generate it using [favicon.io](https://favicon.io/).
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-03. 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 · 79 / 100
- Technologies
- Hugo
- Website type
- Starter
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-30
- Screenshot last checked
- 2026-10-03
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.
Review declaration: [email protected] · 2026-10-04
Inspect the recorded source material
SHA-256: 9d3339f31dc2f08696ebfb4588ae1a8033585af629ebdab2967c8abe39cb41e0
2026-10-03T23:47:21.984Z
Source file / repository# Air, a theme for [Hugo](https://gohugo.io/).
The intent of this theme is to provide a solid starting place for Hugo sites with basic features and include best practices for performance, accessibility, and rapid development.
## Live Demo
Just visit [fducat18.github.io/hugo-air-demo](https://fducat18.github.io/hugo-air-demo)
## Local Demo
1. Clone this repository into a folder named `air`:
```bash
git clone https://github.com/fducat18/hugo-air.git air
```
2. Enter the folder: `cd air`
3. Run the demo:
```bash
hugo server -s exampleSite --themesDir ../..
```
## Features
| Awesome features |
|---------------------------------------------------------------------------------|
| ✨ Full **Responsive** |
| ✨ **Bootstrap** ready |
| ✨ **Custom Header Image** from page bundle |
| ✨ Shortcode **Image Gallery** from page bundle (Instagram or Masonry Style) |
| ✨ Page Type **Image Gallery** from page bundle (Instagram or Masonry Style) |
| ✨ **Single-page** landing homepage |
| ✨ Embedded Google Maps |
| ✨ Smooobu Booking **shortcode** |
| ✨ **Multilingual** Support shortcode |
## Installation
### First Installation: as a git submodule
Install Air Theme as a Git Submodule. Naviguate to the folder of your Hugo site run:
```bash
git submodule add https://github.com/fducat18/hugo-air.git themes/air
```
If you clone a Hugo site that already uses this theme as a submodule, initialize it with:
```bash
git submodule update --init --recursive
```
### Update an existing installation
If you already have Air Theme installed, naviguate to the folder of your Hugo site run:
```bash
git submodule update --remote --merge
```
## Quick Start with Example Site
To get started quickly with the example content:
1. Copy the contents of `themes/air/exampleSite/content` to your project's `content` directory.
2. Copy `themes/air/exampleSite/hugo.yaml` to your project root. **Note:** This will overwrite your existing configuration. If you have existing settings, merge them manually.
3. The `hugo.yaml` file contains essential configuration for the theme, including:
- **Menu Structure**: `menu.main` and `menu.footer`.
- **Theme Params**: `params.mainColor`, `params.gmaps_url`, etc.
## Usage
### Edit your config file
```yaml
baseURL: https://example.com/
languageCode: en-us
title: Example Site
theme: air
params:
author:
name: François
siteUrl: https://notes.ducatillon.net/
gmaps_url: https://www.google.com/maps/d/u/0/embed?mid=1UySq5HRbcRKL90dKuFpX6PRRtx0&ehbc=2E312F
mainColor: "#386641"
footer: "Hugo Air theme is great and customizable"
menu:
main:
- name: Home
url: /
weight: 20
params:
target:
- name: Features
url: /features
weight: 30
params:
target:
- name: Shortcode Gallery
pageRef: /features/shortcode-gallery/
parent: Features
weight: 20
- name: Landing Page
url: /landing-page
weight: 40
params:
target:
footer:
- name: Home
url: /
weight: 20
params:
target:
markup:
goldmark:
parser:
attribute:
block: true
renderer:
unsafe: true
```
### Customize main color
In your config file, add:
```yaml
params:
mainColor: "#386641"
```
This will override the main.scss
```css
/*
=======================================================
= CSS Variables =
=======================================================
*/
/*
Main color for the website
It can be overridden in the config file by setting "Params.mainColor" to any color value
*/
:root {
--main-color: #035c8c; /* default color */
}
```
### Set Google Maps url
In your config file, add:
```yaml
params:
gmaps_url: https://tinyurl.com/mr3uesbx
```
### Customizing Favicon
To change the favicon of your site:
1. Use your favicon or generate it using [favicon.io](https://favicon.io/).
2. Copy the generated file (e.g. `favicon.ico`) to your `static/` directory.
### Setup Google Analytics
In your config file, add:
```yaml
services:
googleAnalytics:
id: G-12345 #Replace with your Google Analytics ID
```
### Image Gallery
#### Use as partial
In your `.md` file, specify the type of the page with `type: gallery-masonry` or `type: gallery-insta` like this:
```yaml
---
title: Air is a great hugo theme
type: gallery-masonry
---
Air is a great hugo theme with outstanding features like image gallery from page bundle
```
#### Use as shortcode
Assuming your folder structure would look something like this
```yaml
content/
└── pages/
└── my-page/ # Page Bundle
├── index.md # Page content
├── featured-image.jpg # Image Resource used as gallery image 1
├── card.jpg # Image Resource used as gallery image 2 AND as card featured image
├── photo1.jpg # Image Resource used as gallery image 3
├── photo2.jpg # Image Resource used as gallery image 4
└── photo3.jpg # Image Resource used as gallery image 5
```
In your `.md` file, add this block to display your instagram image gallery
`{{` `< gallery-masonry page="my-page" >` `}}`
where "my-page" is the page bundle object passed as a variable to the shortcode
Alternatively, use instagram gallery style with
`{{` `< gallery-insta page="my-page" >` `}}`
### Custom Header image
Add one image called `featured-image.jpg` in your page bundle.
#### Use as a featured header image in `single.html`
Automatically loaded as a header image on your page
##### Use the default featured header image
Automatically loaded from the `static/img` folder.
- `header-960.jpg` for screens higher than 960px
- `header-480.jpg` for screens lower than 960px
### Custom Bootstrap Card image
#### Use as featured card image in `list.html`
When listing pages/posts, it displays bootstrap cards with a thumbnail image.
By default it uses the card image from `static/img/card.jpg`
Customize the card image by adding one image called `featured-image.jpg` or `card.jpg ` in your page bundle.
### Single-page landing homepage
Add pages to a folder. These page will render as a single-page.
Example with this page bundle:
```yaml
content/
└── landing-page/
└── page-1/ # Page Bundle
├── featured-image.jpg #
├── index.md # Page 1
├── _index.md # File that calls the landing-page type
├── page-2.md # Page 2
├── page-3.md # Page 3
├── page-4.md # Page 4
└── page-5.md # Page 5
```
Edit your `content/landing-page/_index.md` to add `type: landing-page`
```yaml
---
title: Landing Page
catchline: Awesome One Page Landing Page
type: landing-page
---
```
Add a weight to each page to render them by weight ✨:
```yaml
---
title: Page 1
weight: 10
---
Content of Page 1
```
## Theme Development
If you are developing this theme inside a Hugo site (usually in `themes/air`), remember that this is a **Git submodule**.
### Making changes
1. Enter the theme directory: `cd themes/air`
2. Ensure you are on the main branch: `git checkout main`
3. Make your changes, then commit and push from within the theme directory:
```bash
git add .
git commit -m "Your feature"
git push origin main
```
4. Go back to your Hugo site root and update the theme pointer:
```bash
cd ../..
git add themes/air
git commit -m "Update theme pointer"
git push origin main
```
## Screenshot
### Mobile

### Desktop
Explore similar templates
Compare previews and descriptions within the same stack and category.

hugo-xmin
hugo-xmin is an extremely minimal Hugo theme written by Yihui Xie for template beginners. HTML and CSS total about 140 lines, with no external dependencies, and it uses the MIT license.
Hugo · Starter

hugo-theme-gallery
A Hugo Extended photo gallery theme that organizes images with Page Bundles, automatically generating album lists and gallery pages with a Justified layout and PhotoSwipe lightbox.
Hugo · Starter

reveal-hugo
reveal-hugo is a Hugo theme that converts Markdown content into Reveal.js-based HTML presentations. It supports slide separation with `---`, shortcodes for fragments, slides, sections, notes, Markdown, and MathJax, and organizes content as root or section presentations with order controlled by weight.
Hugo · Starter

anatole
Anatole is a minimalistic two-column Hugo theme ported from farbox-theme-Anatole, featuring dark mode, multilingual and RTL support, and optional portfolio, comments, analytics, KaTeX, and Mermaid integrations. It suits personal blogs, portfolios, or documentation sites built with Hugo.
Hugo · Starter

hugo-theme-diary
A Hugo diary-style theme ported from the Hexo theme Journal, with a grid homepage for essays and daily notes. It supports six languages, dark mode, table-of-contents scroll positioning, reading time, code highlighting, and configurable sidebar, fonts, and colors.
Hugo · Starter

risotto
risotto is a minimalist, responsive Hugo theme inspired by terminal ricing aesthetics. It uses semantic HTML and pure CSS with no JavaScript, and its layout relies on CSS Grid for native responsiveness without manual breakpoints.
Hugo · Starter
