Skip to main content

Architecture and Advanced Configuration of the Blowfish Theme for Hugo: An Integral Technical Examination

Roberto Tazzoli
Author
Roberto Tazzoli
Passionate about declarative infrastructure, self-hosting, and Kubernetes.
Table of Contents

The landscape of Static Site Generators (SSG) has undergone a paradigmatic evolution in recent years, with Hugo establishing itself as one of the most high-performance solutions thanks to its almost instant build speed and its robust Go architecture. In this context, the Blowfish theme emerges not as a simple visual template, but as a modular and sophisticated framework, built upon Tailwind CSS 3.0, designed to meet the needs of developers, researchers, and content creators who require an impeccable balance between minimalist aesthetics and functional power.1 Blowfish stands out for its ability to manage complex workflows, serverless integrations, and granular customization that goes far beyond the visual surface, positioning itself as one of the most advanced themes in the Hugo ecosystem.1

Evolution and Design Philosophy of Blowfish
#

The genesis of Blowfish lies in the need to overcome the limitations of monolithic themes, offering a structure that prioritizes automated asset optimization and out-of-the-box accessibility. The adoption of Tailwind CSS is not just an aesthetic choice, but an architectural decision that allows for the generation of extremely small CSS bundles, containing only the classes actually used, ensuring high-level performance documented by excellent scores in Lighthouse tests.1 The theme is intrinsically content-oriented, structured to fully leverage Hugo’s “Page Bundles”, a system that organizes multimedia resources directly alongside text files, improving project portability and maintainability in the long run.5

Blowfish’s architecture is designed to be “future-proof”, natively supporting dynamic integrations in a static environment, such as view counting and interaction systems via Firebase, advanced client-side search with Fuse.js, and complex data visualization via Chart.js and Mermaid.1 This versatility makes it suitable for a wide range of applications, from personal blogs to enterprise-level technical documentation.

Installation and Project Initialization Procedures
#

Implementing Blowfish requires a development environment correctly configured with Hugo (version 0.87.0 or higher, preferably the “extended” version) and Git.3 There are three main paths for installation, each with specific implications for workflow management.

CLI Methodology: Blowfish Tools
#

The most modern and recommended approach for new users is the use of blowfish-tools, a command-line tool that automates site creation and initial configuration.3

CommandFunctionContext of Use
npm i -g blowfish-toolsGlobal installationPreparation of the Node.js development environment.
blowfish-tools newComplete site creationIdeal for new projects starting from scratch.
blowfish-toolsInteractive menuConfiguration of specific features in existing projects.

This tool significantly reduces the barrier to entry, handling the creation of the complex folder structure required for a modular configuration.5

Professional Methodology: Hugo Modules and Git Submodules
#

For professionals operating in Continuous Integration (CI) environments, the use of Hugo Modules represents the most elegant solution. This method treats the theme as a dependency managed by Go, allowing rapid updates via the command hugo mod get -u.1 Alternatively, installation as a Git submodule (git submodule add https://github.com/nunocoracao/blowfish.git themes/blowfish) is preferable for those who wish to keep the theme code within their own repository without mixing it with content, facilitating the tracking of specific versions.1

The Modular Configuration System
#

One of Blowfish’s distinctive features is the abandonment of the single config.toml file in favor of a config/_default/ directory containing specialized TOML files. This logical separation is fundamental for managing the complexity of the options offered by the theme.2

Hugo.toml: The Backbone of the Site
#

The hugo.toml file (or config.toml if not using the modular structure) defines global Hugo engine parameters and basic site settings.8

ParameterDescriptionTechnical Relevance
baseURLSite root URLEssential for correct absolute link generation and SEO.4
theme“blowfish”Indicates to Hugo which theme to load (omissible with Modules).8
defaultContentLanguageDefault languageDetermines the i18n translations to use initially.8
outputs.home`Crucial: the JSON format is necessary for internal search.8
summaryLengthSummary lengthA value of 0 indicates to Hugo to use the first sentence as summary.8

Enabling the JSON format on the homepage is a critical technical step often overlooked; without it, the Fuse.js search module will not have an index to query, rendering the search bar non-functional.8

Params.toml: The Feature Control Panel
#

The params.toml file hosts theme-specific configurations, allowing complex modules to be enabled or disabled without modifying the source code.4

Visual aspect management is controlled by the parameters defaultAppearance and autoSwitchAppearance. The first defines whether the site should load in “light” or “dark” mode, while the second, if set to true, allows the site to respect the user’s operating system preferences, ensuring a visual experience consistent with the visitor’s ecosystem.8 Furthermore, the colorScheme parameter allows selecting one of the predefined palettes, each of which radically transforms the site’s chromatic identity without requiring manual CSS changes.5

Multilingual Architecture and Author Configuration
#

Blowfish excels in multilingual support, requiring a dedicated configuration file for each language (e.g., languages.it.toml).5 Defined in this file are not only the site title for that specific language, but also the author metadata that will appear in biographical boxes under articles.2

Author FieldFunctionUI Impact
nameAuthor nameDisplayed in the header and footer of articles.2
imageAuthor avatarCircular profile image in biographical widgets.2
headlineShort sloganImpact text displayed in the “profile” layout homepage.2
bioFull biographyDescriptive text displayed in the post footer if showAuthor is active.7
linksSocial mediaArray of clickable icons linking to external profiles.2

This approach allows for extreme customization: a site can have different authors for different language versions, or simply translate the main author’s biography to adapt to the local audience.5

Navigation and Menus: Hierarchies and Iconography#

Menu configuration takes place via dedicated files like menus.en.toml or menus.it.toml. Blowfish supports three main navigation areas: the main menu (header), the footer menu, and subnavigation.5

The theme introduces a simplified icon system via the pre parameter, which allows inserting SVG icons (like those from FontAwesome or social icons) directly next to the menu text.5 An advanced aspect is support for nested menus: by defining an element with a unique identifier and setting other elements with a parent parameter corresponding to that identifier, Blowfish will automatically generate elegant and functional dropdown menus.5

Content Management: Page Bundles and Taxonomies
#

Hugo’s strength, and Blowfish’s in particular, lies in structured content management. The theme is designed to operate in harmony with the concept of “Page Bundles”, distinguishing between Branch Pages and Leaf Pages.5

Branch Pages and Section Organization
#

Branch Pages are nodes in the hierarchy that contain other files, such as section homepages or category lists. They are identified by the file _index.md. Blowfish honors parameters in the front matter of these files, allowing global settings to be overridden for a specific section of the site.6 For example, one can decide that the “Portfolio” section uses a card view, while the “Blog” section uses a classic list.6

Leaf Pages and Asset Management
#

Leaf Pages represent atomic content, such as a single post or an “About” page. If an article includes images or other media, it must be created as a “bundle”: a directory named after the article containing an index.md file (without underscore) and all related assets.6 This system not only maintains order in the filesystem but allows Blowfish to process images via Hugo Pipes to automatically optimize their weight and dimensions.1

Integration of External Content
#

Blowfish offers a sophisticated feature to include links to external platforms (such as Medium, LinkedIn, or GitHub repositories) directly in the site’s article flow.1 By using the externalUrl parameter in the front matter and instructing Hugo not to generate a local page (build: render: “false”), the post will appear in the article list but will redirect the user directly to the external resource, while maintaining the site’s visual consistency and internal categorization.6

Visual Support and Media Optimization
#

Blowfish’s visual impact is strongly tied to its image management, which balances aesthetics with performance through the use of modern technologies like lazy-loading and dynamic resizing.1

Featured Images and Hero Sections#

To set a preview image that appears in cards and the header of an article, Blowfish follows a strict naming convention: the file must start with feature* (e.g., feature.png, featured-image.jpg) and be located in the article’s folder.5 These images not only serve as thumbnails but are used to generate the Open Graph metadata necessary for correct display on social media via the oEmbed protocol.7

The header layout (Hero Style) can be configured globally or per single post:

Hero StyleVisual EffectRecommended Use
basicSimple layout with title and image side-by-side.Standard informational posts.7
bigLarge image above the title with caption support.Cover stories or long-form articles.7
backgroundThe feature image becomes the header background.Impact pages or landing pages.7
thumbAndBackgroundCombines the background image with a thumbnail in the foreground.Strong brand identity or portfolio.7

Custom Backgrounds and System Images
#

Blowfish allows defining global backgrounds via the defaultBackgroundImage parameter in params.toml. To ensure fast load times, the theme automatically scales these images to a predefined width (usually 1200px), reducing data consumption for users on mobile devices.7 Furthermore, it is possible to globally disable image zooming or optimization for specific scenarios where absolute visual fidelity takes priority over performance.8

Rich Content and Advanced Shortcodes
#

Blowfish shortcodes extend standard Markdown capabilities, allowing the insertion of complex UI components without writing HTML code.16

Alerts and Callouts
#

The alert shortcode is a fundamental tool for technical communication, allowing warnings, notes, or suggestions to be highlighted. It supports parameters for the icon, card color, icon color, and text color, ensuring the alert aligns perfectly with the semantic context of the content.16

Example usage with named parameters:

Critical error message!
< /alert >.16

Carousels and Interactive Galleries
#

For managing multiple images, the carousel shortcode offers a sliding and elegant interface. A particularly powerful feature is the ability to pass a regex string to the images parameter (e.g., images=“gallery/*”), instructing the theme to automatically load all images present in a specific subdirectory of the Page Bundle.16 This eliminates the need to manually update Markdown code every time a photo is added to the gallery.

Figures and Video Embedding
#

Blowfish’s figure shortcode replaces Hugo’s native one, offering superior performance via device resolution-based image optimization (Responsive Images). It supports Markdown captions, hyperlinks on the image, and granular control over the zoom function.16

Regarding video, Blowfish provides responsive wrappers for YouTube, Vimeo, and local files. Using the youtubeLite shortcode is recommended for sites aiming for maximum speed: instead of loading the entire Google iframe at page load, it loads only a lightweight thumbnail, activating the heavy player only when the user actually clicks the play button.16

Scientific Communication: Math and Diagrams
#

Blowfish has become a de facto standard for academic and technical blogs thanks to its native integration with high-level typesetting and data visualization tools.1

Mathematical Notation with KaTeX
#

The rendering of mathematical formulas is entrusted to KaTeX, known for being the fastest math typesetting engine for the web. To preserve performance, Blowfish does not load KaTeX assets globally; they are included in the page bundle only if the shortcode is detected within the article.16

The supported syntax follows LaTeX standards:

  • Inline Notation: Formulas inserted into the text flow using the delimiters \( and \). Example: $\nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0}$.18

  • Block Notation: Formulas centered and isolated using the delimiters $$. Example:

    $$e^{i\pi} \+ 1 \= 0$$


    .18

This implementation allows writing complex equations that remain readable and searchable, with zero impact on the loading speed of non-scientific pages of the site.

Dynamic Diagrams and Charts
#

Through the mermaid and chart shortcodes, Blowfish allows generating complex visualizations starting from textual data.1

  • Mermaid.js: Allows creating flowcharts, sequence diagrams, Gantt charts, and class diagrams using simple text syntax. It is ideal for documenting software architectures or logical processes without managing external image files.1
  • Chart.js: Allows embedding bar, pie, line, and radar charts by providing structured data directly in the shortcode. Since charts are rendered on an HTML5 Canvas element, they remain sharp at any zoom level and are interactive (showing values on mouse hover).1

Dynamic Integrations and Dynamic Data Support
#

Despite its static nature, Blowfish can evolve into a dynamic platform thanks to intelligent integration with serverless services, particularly Firebase.1

Firebase: Views, Likes, and Dynamic Analytics
#

Integration with Firebase allows adding features typical of traditional CMS systems, such as real-time view counting and a “like” system for articles.1 The configuration process involves:

  1. Creating a Firebase project and enabling the Firestore database in production mode.9
  2. Configuring security rules to allow anonymous reads and writes (after enabling Anonymous Authentication).9
  3. Inserting API keys in the params.toml file under the Firebase section.8

Once configured, Blowfish automatically handles view incrementing every time a page is loaded, storing data in the serverless database and displaying it in article lists.8

Advanced Search with Fuse.js
#

Blowfish’s internal search does not require external databases. During the build phase, Hugo generates an index.json file containing the title, summary, and content of all articles.1 Fuse.js, a lightweight fuzzy search library, downloads this index and allows instant searches directly in the user’s browser. To ensure this feature works, it is imperative that the outputs.home configuration includes the JSON format.8

SEO, Accessibility, and Search Engine Optimization
#

Blowfish is built following SEO best practices to ensure contents are easily indexable and presented optimally on social media.1

Metadata and Structured Data
#

The theme automatically generates Open Graph and Twitter Cards meta tags, using the article’s feature image and the description provided in the front matter. If no description is provided, Blowfish uses the summary automatically generated by Hugo.7 Furthermore, support for structured breadcrumbs (enableable via enableStructuredBreadcrumbs) helps search engines understand the site hierarchy and display clean navigation paths in search results.8

Performance and Lighthouse Scores
#

Performance optimization is not just a question of speed, but a critical ranking factor (Core Web Vitals). Blowfish achieves scores close to 100 in all Lighthouse categories thanks to:

  • Generation of minimal critical CSS via Tailwind.1
  • Native lazy-loading for all images.8
  • Minimization of JS assets.1
  • Native support for modern image formats like WebP (via Hugo Pipes).1

Deployment Strategies and Production Pipelines
#

The static nature of sites generated with Blowfish allows for global and economical distribution via CDN (Content Delivery Networks).12

Hosting and Continuous Deployment
#

Modern hosting platforms offer direct integrations with GitHub or GitLab, automating the build and deployment process.

PlatformBuild MethodTechnical Notes
GitHub PagesGitHub ActionsRequires creating a YAML workflow executing hugo --gc --minify.4
NetlifyInternal Build BotConfiguration via netlify.toml; supports branch previews and forms.3
Firebase HostingFirebase CLIIdeal if already using Firebase for views and likes.9

During deployment configuration, it is fundamental to correctly set the baseURL variable for the production environment, especially if the site resides in a subdirectory, to prevent assets (CSS, images) from being loaded from incorrect paths.4

Conclusions: Towards a Static Web without Compromises
#

Configuring the Blowfish theme for Hugo represents a balancing exercise between the simplicity of Markdown content management and the complexity of modern technological needs. Through a modular structure, maniacal attention to performance, and a series of high-level integrations for scientific and dynamic data, Blowfish confirms itself as an excellent solution for creating professional websites.1

Adopting this theme allows developers to focus on content quality and information structure, delegating technical aspects related to accessibility, SEO, and asset optimization to the framework. In an increasingly demanding web ecosystem, Blowfish offers the necessary tools to build a solid, high-performance, and visually appealing online presence, defining the state of the art for next-generation Hugo themes.3

Bibliography
#

  1. Blowfish | Hugo Themes, accessed on January 3, 2026, https://www.gohugothemes.com/theme/nunocoracao-blowfish/
  2. Gitlab Pages, Hugo and Blowfish to set up your website in minutes - Mariano González, accessed on January 3, 2026, https://blog.mariano.cloud/your-website-in-minutes-gitlab-hugo-blowfish
  3. nunocoracao/blowfish: Personal Website & Blog Theme for Hugo - GitHub, accessed on January 3, 2026, https://github.com/nunocoracao/blowfish
  4. Blowfish - True Position Tools, accessed on January 3, 2026, https://truepositiontools.com/crypto/blowfish-guide
  5. Getting Started - Blowfish, accessed on January 3, 2026, https://blowfish.page/docs/getting-started/
  6. Content Examples · Blowfish, accessed on January 3, 2026, https://blowfish.page/docs/content-examples/
  7. Thumbnails · Blowfish, accessed on January 3, 2026, https://blowfish.page/docs/thumbnails/
  8. Configuration - Blowfish, accessed on January 3, 2026, https://blowfish.page/docs/configuration/
  9. Firebase: Views & Likes - Blowfish, accessed on January 3, 2026, https://blowfish.page/docs/firebase-views/
  10. Installation - Blowfish, accessed on January 3, 2026, https://blowfish.page/docs/installation/
  11. How To Make A Hugo Blowfish Website - YouTube, accessed on January 3, 2026, https://www.youtube.com/watch?v=-05mOdHmQVc
  12. A Beginner-Friendly Tutorial for Building a Blog with Hugo, the Blowfish Theme, and GitHub Pages, accessed on January 3, 2026, https://www.gigigatgat.ca/en/posts/how-to-create-a-blog/
  13. Step-by-Step Guide to Creating a Hugo Website · - dasarpAI, accessed on January 3, 2026, https://main–dasarpai.netlify.app/dsblog/step-by-step-guide-creating-hugo-website/
  14. Partials - Blowfish, accessed on January 3, 2026, https://blowfish.page/docs/partials/
  15. Build your homepage using Blowfish and Hugo · N9O - Nuno Coração, accessed on January 3, 2026, https://n9o.xyz/posts/202310-blowfish-tutorial/
  16. Shortcodes · Blowfish, accessed on January 3, 2026, https://blowfish.page/docs/shortcodes/
  17. Shortcodes - Hugo, accessed on January 3, 2026, https://gohugo.io/content-management/shortcodes/
  18. Mathematical notation · Blowfish, accessed on January 3, 2026, https://blowfish.page/samples/mathematical-notation/
  19. Hosting & Deployment - Deepfaces, accessed on January 3, 2026, https://deepfaces.pt/docs/hosting-deployment/
  20. Getting Started With Hugo | FREE COURSE - YouTube, accessed on January 3, 2026, https://www.youtube.com/watch?v=hjD9jTi_DQ4

Comments