How I built this site with Hugo and Firebase

How I built simonaustin.net using Hugo, Firebase Hosting, and Codex for rapid iteration.

Why I Built It

I built simonaustin.net to serve as both a personal blog and a portfolio. I wanted something professional, ultra-fast, and low-maintenance.

I chose Hugo for speed and simplicity and Firebase Hosting because it was quick to set up pre-Hetzner and it’s free and reliable for low-traffic sites.

Choosing the Stack

  • Theme: Adritian Hugo Theme — optimized for technical SEO and a clean layout.
  • Hosting: Firebase Hosting — simple deploys and fast CDN.
  • Workflow: Build locally on Linux, deploy with the Firebase CLI, and iterate quickly using Codex for small feature codegen.

Installing Hugo on Linux (build from source)

I built Hugo from source because I needed the extended/deploy edition (image processing + direct cloud storage deploy features). Prereqs: Go 1.24+, Git, and a C compiler (gcc/clang).

Build the extended/deploy edition:

# Ensure Go 1.24+ is installed and you have a C compiler
# Build the extended/deploy edition (this is the exact command)
CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@latest

# Verify the binary is in your PATH, or check $GOBIN / $GOPATH/bin
which hugo || echo "$GOBIN or $HOME/go/bin may contain the binary"

# Check the installed version (should indicate extended/withdeploy)
hugo version

Getting the Hugo Code

Create a new site and add the theme as a submodule:

hugo new site simonaustin.net
cd simonaustin.net
git init
git submodule add https://github.com/themefisher/adritian-free-hugo-theme.git themes/adritian

Enable the theme in config.toml:

theme = "adritian"

Copy or adapt templates/partials/layouts as needed — I copied the Experience layout to bootstrap the Blog section and adjusted the front matter and partials to match the theme’s patterns.

Deploying to Firebase Hosting

Go to the Firebase console (https://console.firebase.google.com/u/0/) and create a new project. The no-cost plan is called “Spark” if you need to create an account.

Install the Firebase CLI (requires Node/npm), log in, initialize hosting, build Hugo, and deploy:

# Install Firebase CLI
npm install -g firebase-tools

# Log in to Firebase
firebase login

# Initialize Firebase in your Hugo project (choose Hosting; set public directory to "public")
firebase init

When firebase init asks for the public directory, enter:

public

Build and deploy:

# Build the static site & deploy to firebase
hugo && firebase deploy

Rapid Iteration with Codex

Use Codex to scaffold small features or copy existing layouts (e.g., duplicate the Experience layout to create Blog templates). Workflow I use:

  1. Prompt Codex to generate the template/partial based on the existing layout.
  2. Review and adjust the generated code locally.
  3. Run hugo and verify output.
  4. Deploy once validated.

Codex speeds repetitive, small tasks while keeping you in control for review and testing.