
I recently stumbled across a Reddit post that perfectly captures a frustration many developers face:
"I've been making complex web apps with React or Vue with all the magic abstracted for me... I was asked by an acquaintance to make them a website for their small business. I need to make a landing page with no dynamic content... What tools can I use that are a step-up from raw HTML, CSS, JS?"
Sound familiar?
This developer isn't alone. Somewhere between writing raw HTML files and spinning up a full React application lies a massive gap – and that's exactly where most small business websites live.
You know the type: local restaurants, consulting firms, plumbers, photographers, small agencies. They need a professional online presence, but they don't need a database, user authentication, or a shopping cart with real-time inventory.
Yet here's the surprising part: most developers and business owners don't know there's a better way. They either hand-code everything (tedious and error-prone) or reach for WordPress (overkill and expensive) or React (way overkill for static content).
There's a third option that's faster, cheaper, and honestly better for these use cases: Static Site Generators.
In this guide, I'll show you how to build a professional website using Hugo (a blazing-fast static site generator), GitHub (for version control), and Netlify (for free hosting). By the end, you'll have a site that:
- Costs exactly $0 per month to host.
- Loads in under a second
- Never goes down due to server issues
- Requires zero maintenance for security updates
- Looks completely professional
- Can be updated by anyone on your team
Companies like Smashing Magazine, Let's Encrypt, and 1Password use Hugo for their websites. If it's good enough for them, it's definitely good enough for your small business site.
Let's dive in.
Part 1: Why Your Business Website Doesn't Need React or WordPress
The Overengineering Problem
Here's a truth bomb: Most small business websites are massively overengineered.
Think about what a typical local business website actually does:
- Displays information about services
- Shows contact details and location
- Maybe has a blog with occasional updates
- Includes some nice photos
That's it. No user accounts. No real-time data. No complex interactions. Just information that changes maybe once a week, if that.
Yet I see developers building these sites with React, Next.js, or installing WordPress with 15 plugins. It's like using a chainsaw to slice bread – technically it works, but you're creating problems you didn't have before.
The Numbers Tell the Story
The average WordPress site weighs in at about 2.5MB and takes 3.5 seconds to load. That same content as a static site? Around 200KB and loads in under a second. We're talking about a site that's 12x smaller and 4x faster.
WordPress Route
- Hosting: $120-$300/year (even "cheap" shared hosting)
- Security plugin: $0-$100/year
- Backup service: $0-$60/year
- Premium theme: $0-$60 (one-time, but still)
- Time spent on updates: 6-12 hours/year (your time has value!)
Total: $120-$520+ per year
Static Site Route
- Hosting: $0/year (Netlify free tier)
- Security: $0 (nothing to hack)
- Backups: $0 (GitHub is your backup)
- Theme: $0 (hundreds of free options)
- Time spent on updates: 3-6 hours/year
Total: $0 per year
What is a Static Site Generator (and Why Hugo)?
When you visit a WordPress site, here's what happens:
- Your browser asks for a page
- WordPress wakes up the database
- It runs PHP code to fetch your content
- It assembles everything into HTML
- It sends that HTML to your browser
This happens every single time someone visits. It's like baking a fresh cake every time someone wants a slice!
A static site generator works differently:
- You write your content in simple text files
- You run the generator once
- It creates all your HTML pages upfront
- Those pages sit ready to serve
- When someone visits, they get the pre-made HTML instantly
It's like baking all your cakes once, then just serving slices. Way faster, way simpler.
Why Hugo Specifically?
Hugo has some serious advantages:
1. Speed That'll Make You Do a Double-Take
Hugo builds 1,000 pages in less than 1 second. Jekyll takes 50+ seconds to do the same. When you're developing and want to see changes instantly, this matters. A lot.
2. It's a Single Binary
With Jekyll, you need Ruby and a bunch of gems. With Gatsby, you need Node.js and npm packages. With Hugo? You download one file. That's it. No dependency hell, no version conflicts, no "works on my machine" problems.
3. Battle-Tested and Trusted
Hugo has over 84,000 stars on GitHub and is used by Smashing Magazine, Let's Encrypt, 1Password, and Linode. If these companies trust it for their high-traffic sites, you can trust it for your business.
4. Theme Ecosystem
There are over 400 free Hugo themes covering every use case imaginable. Gethugothemes alone offers 70+ professionally designed themes.
5. SEO-Friendly Out of the Box
Hugo generates clean, semantic HTML that search engines love. It automatically creates sitemaps, RSS feeds, and proper heading hierarchies.
Who Should Use This Approach?
✅ Perfect for
- Landing pages
- Service-based businesses (consultants, agencies, plumbers, electricians, lawyers)
- Local businesses (restaurants, clinics, shops, studios)
- Personal portfolios (designers, photographers, writers, developers)
- Company blogs
- Documentation sites
- Event websites
- Non-profit sites
Basically, if your website is primarily about showing information rather than processing transactions or user data, Hugo is ideal.
❌ Not ideal for
- E-commerce with complex checkout
- Web applications (like Gmail, Facebook, or project management tools)
- Sites with user accounts and login systems
- Real-time dashboards
- Heavy user-generated content
Part 2: Understanding the Stack
The Three Pillars
Our setup has three main components:
1. Hugo – Your Website Builder
Hugo takes your content (written in simple Markdown files) and your theme (the design) and combines them into a complete website made of HTML, CSS, and JavaScript files.
2. GitHub – Your Code Storage and Version Control
GitHub is where your website's source code lives. Here's why it's awesome:
- It keeps every version of your site, so you can undo mistakes
- You can work on changes without affecting the live site
- Multiple people can work on the site without stepping on each other's toes
- It's like a time machine for your website
3. Netlify – Your Free Hosting Platform
Netlify takes your website files and makes them available to the world:
- It's free for small sites
- It uses a CDN (Content Delivery Network), meaning your site loads fast worldwide
- It automatically updates when you make changes to GitHub
- It includes SSL certificates (the "https" lock icon) for free
How They Work Together
Here's the beautiful workflow:
- You write content or make changes
- Those changes get saved to GitHub
- GitHub notifies Netlify of a change
- Netlify runs Hugo to rebuild your site
- Your updated site is live in about 30-60 seconds
Why This Stack is Bulletproof
Performance
Your site is just HTML, CSS, and JavaScript files served from a CDN. There's no database to query, no server-side code to run. Most Hugo sites load in under a second and can handle 100,000 visitors in a day without breaking a sweat.
Security
You can't hack what isn't there. WordPress sites get hacked because they're running PHP code and connecting to databases. Your Hugo site? It's just files. There's no login page to attack, no database to inject SQL into. The attack surface is basically zero.
Scalability
Static files on a CDN can handle massive traffic spikes. Netlify's free tier includes 100GB of bandwidth per month. That's roughly 100,000 page views for a typical small business site. For free.
Cost
Free is pretty hard to beat. The only thing you'll pay for is your domain name, which costs about $12-15/year no matter what hosting you use.
Developer Experience
Making changes is fast and easy. Want to update your "About" page? Edit a text file or use a visual editor. Want to see how it looks? The preview is instant.
Part 3: Building Your Site (The Easy Way)
Prerequisites
Here's what you need to get started:
- An email address
- 30 minutes of uninterrupted time
That's literally it. You don't need coding knowledge. You don't need to install anything on your computer.
Step-by-Step with Sitepins
Step 1: Sign Up for Sitepins
Head over to Sitepins and create a free account. Sitepins is a visual interface for Hugo that handles all the technical stuff behind the scenes.
Their free plan includes:
- 3 sites
- Visual content editor
- Pre-configured Starter Templates
- GitHub integration
Step 2: Choose Your Theme
Once you're logged in, click "Create New Site." Sitepins will show you a gallery of themes. These are professionally designed Hugo themes that cover different types of websites. Let's explore some options here:
For Business/Agency Sites
- Bigspring Light Hugo – Modern, professional design with service showcases
- Hugoplate – Versatile starter with clean layouts
For SaaS Marketing Sites
- Andromeda Light Hugo – Purpose-built for SaaS products
- Bigspring Light Hugo – Also works excellently for SaaS
For Blogs
- Bookworm Light Hugo – Clean, reading-focused design
- Liva Hugo – Elegant blog theme with great typography
For Portfolios
- Northendlab Light Hugo – Stunning portfolio theme for creatives
For Documentation Sites
- Dot Hugo – Specifically designed for documentation
My recommendation: Start with Hugoplate if you're unsure. It's versatile and modern.
Step 3: Connect GitHub
Sitepins will ask you to connect your GitHub account. If you don't have one, go to GitHub and create a free account—it takes 2 minutes.
Click "Connect GitHub" in Sitepins. A popup will appear asking for permissions. Sitepins is asking permission to:
- Create a new repository in your GitHub account
- Add your website files to that repository
- Update those files when you make changes through Sitepins
Click "Authorize Sitepins." Behind the scenes, Sitepins is now creating a new GitHub repository with all your site's files.
Step 4: Deploy to Netlify
Sitepins will automatically prompt you: "Deploy to Netlify?" Click "Yes, Deploy Now."
You'll need to create a Netlify account if you don't have one. Use the same email you used for GitHub to keep things simple.
Authorize Netlify to access your GitHub repository. Netlify will now:
- Grab your site files from GitHub
- Run Hugo to build your website
- Deploy it to their global CDN
- Give you a URL to access it
When it's done, you'll see: "Your site is live!" Click the URL Netlify provides, and there it is – your website, live on the internet!
Step 5: Customize Your Site
Go back to Sitepins and click "Edit Site." You'll see a visual editor with your site's content.
Updating Text
- Click on any text element
- Type your new content
- Click "Save"
Changing Images
- Click on any image
- Click "Replace Image"
- Select an image from your computer
- Click "Save"
Adjusting Colors and Fonts
- Go to "Config" → "theme.json"
- You'll see color pickers for primary color, body colors, and border color
- Pick new colors
- Click "Save"
Managing Content
- Adding/Deleting Posts – Navigate to your blog section, click "New Post" to create articles
- Adding/Deleting Pages – Create new pages for services, team members, or any content you need
- Updating Menu Items – Easily add, remove, or reorder navigation items
- Configuring Site Settings – Update your business name, contact information, social media links
Step 6: Connecting Your Custom Domain (Optional)
Right now, your site is at something like "your-site.netlify.app". To use your own domain like yourbusiness.com, see the "Connecting Your Custom Domain" section below.
Part 4: Building Your Site (The Developer Way)
If you're comfortable with the command line, this section is for you. This approach gives you more control and helps you understand exactly what's happening under the hood.
Prerequisites
What you need:
- Basic comfort with the command line
- A text editor (we'll use VS Code, but any editor works)
- Time: 1-2 hours for your first site
- A computer (Windows, Mac, or Linux all work)
- An internet connection
- 1-2 GB of free disk space
Setting Up Your Environment
Installing Hugo
On Windows
Download Hugo from GitHub releases. Look for the file named hugo_extended_X.XX.X_windows-amd64.zip (get the "extended" version).
- Extract the zip file
- Move hugo.exe to C:\Hugo\bin
- Add C:\Hugo\bin to your Windows PATH:
- Search for "Environment Variables" in Windows
- Click "Edit the system environment variables"
- Click "Environment Variables"
- Under "System variables," find and edit "Path"
- Add C:\Hugo\bin
- Click OK
Or if you have Chocolatey:
choco install hugo-extended
On Mac
If you have Homebrew:
brew install hugo
Don't have Homebrew? Install it first:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
On Linux
For Ubuntu/Debian:
sudo apt-get install hugo
For Arch:
sudo pacman -S hugo
Verify the installation
Open your terminal and run:
hugo version
You should see something like:
hugo v0.120.4-f11bca5fec2ebb3a02727fb2a5cfb08da96fd9df+extended darwin/arm64 BuildDate=2023-11-08T11:18:07Z
Installing Git
On Windows
Download Git from git-scm.com and run the installer. The default options are fine.
On Mac
Git should already be installed. To verify:
git --version
If it's not installed, Mac will prompt you to install command line tools. Say yes.
On Linux
sudo apt-get install git # Ubuntu/Debian
sudo pacman -S git # Arch
Verify
git --version
You should see: git version 2.x.x
Code Editor Setup
Download and install VS Code – it's free, fast, and has great Hugo support.
Once installed, add these recommended extensions:
- Open VS Code
- Click the Extensions icon (Ctrl+Shift+X / Cmd+Shift+X)
- Search for and install:
- "Hugo Language and Syntax Support"
- "Front Matter CMS"
- "Markdown All in One"
Creating Your Hugo Site
Open your terminal.
Step 1: Create New Site
Navigate to where you want your site folder:
cd ~/Documents
hugo new site my-business-site
cd my-business-site
Hugo creates a new folder with this structure:
my-business-site/
├── archetypes/ # Templates for new content
├── assets/ # Files that need processing
├── content/ # Your actual content (markdown files)
├── data/ # Data files (JSON, YAML)
├── layouts/ # HTML templates
├── static/ # Static files (images, fonts)
├── themes/ # Where themes live
└── hugo.toml # Main configuration file
Step 2: Choose and Install a Theme
Initialize Git in your project first:
git init
Install the Hugoplate theme as a Git submodule:
git submodule add https://github.com/zeon-studio/hugoplate.git themes/hugoplate
Copy the example configuration from the theme:
cp themes/hugoplate/exampleSite/hugo.toml hugo.toml
Step 3: Configure Your Site
Open hugo.toml in VS Code:
code hugo.toml
You'll see something like this:
baseURL = "https://example.com/"
languageCode = "en-us"
title = "My Business Site"
theme = "hugoplate"
[params]
description = "A description of your site"
author = "Your Name"
[[menu.main]]
name = "Home"
url = "/"
weight = 1
[[menu.main]]
name = "About"
url = "/about/"
weight = 2
Let's customize the important bits:
baseURL = "https://yourbusinesssite.com/"
languageCode = "en-us"
title = "Your Business Name"
theme = "hugoplate"
[params]
description = "We provide excellent services for your needs"
author = "Your Name"
twitter = "yourusername"
github = "yourusername"
email = "hello@yourbusiness.com"
Save the file.
Step 4: Create Your First Content
Let's create an "About" page:
hugo new about.md
Open the file:
code content/about.md
You'll see:
---
title: "About"
date: 2025-11-18T10:30:00+06:00
draft: true
---
Let's add some content:
---
title: "About Our Business"
date: 2025-11-18T10:30:00+06:00
draft: false
---
## Who We Are
We're a family-owned business serving the community since 2010. Our mission is to provide high-quality services with a personal touch.
## What We Do
We specialize in:
- Service one
- Service two
- Service three
## Why Choose Us
Our commitment to excellence and customer satisfaction sets us apart. We treat every project as if it were our own.
Notice I changed draft: false? That's important – Hugo won't show draft pages on the live site.
Markdown basics
# Heading 1 (biggest)
## Heading 2
### Heading 3
**bold text**
*italic text*
[link text](https://url.com)

- for bullet lists
1. for numbered lists
Step 5: Local Development
Run:
hugo server -D
The -D flag means "show draft content" during development.
Open your browser and go to http://localhost:1313/
There's your website! The cool part? Hugo is watching for changes. Edit content/about.md, save, and watch your browser update automatically.
Step 6: Customizing Your Theme
Most Hugo themes are designed to be customized without editing the theme files directly.
Changing Colors and Fonts
Check your theme's documentation. For Hugoplate, look in assets/data/theme.json.
Overriding Theme Files
Hugo looks in your project first, then falls back to the theme.
Want to customize the homepage? Copy themes/hugoplate/layouts/index.html to layouts/index.html and edit your copy.
Adding Custom CSS
Create assets/css/custom.css and add your styles.
Adding Images
Put images in static/images/. They'll be available at /images/yourphoto.jpg.
In markdown:

Pro tip: Optimize your images before adding them. Use TinyPNG.com. Aim for images under 500KB each.
Deploying to Production
Step 1: Prepare for Deployment
Update your baseURL in hugo.toml to your actual domain:
baseURL = "https://yourbusinesssite.com/"
Build your site:
hugo --gc --minify
This command:
hugo– Runs the build--gc– Garbage collection (cleans up unused cache)--minify– Makes your HTML, CSS, and JS smaller (faster loading)
Hugo creates a public/ folder with your complete website.
Step 2: Push to GitHub
Create a new repository on GitHub called my-business-site.
In your terminal:
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/yourusername/my-business-site.git
git push -u origin main
Important note: The public/ folder shouldn't be committed to Git. Create a .gitignore file in your project root.
echo "public/" > .gitignore
git add .gitignore
git commit -m "Add gitignore"
git push
Why? Netlify generates the public/ folder during build—no need to store it in Git.
Step 3: Deploy with Netlify
- Visit netlify.com
- Sign up using GitHub
- Click "Add new site" → "Import an existing project"
- Select your repository
Netlify Build Settings
- Build command:
hugo --gc --minify - Publish directory:
public - Environment variable:
HUGO_VERSION = 0.120.4
Netlify will:
- Clone your repo
- Install Hugo
- Run your build
- Deploy to their CDN
Result: A live URL like random-name-123.netlify.app
Step 4: Set Up Continuous Deployment
Now when you make changes:
- Run:
git add . && git commit -m "Update" && git push - Netlify rebuilds automatically
- Site updates in 30–60 seconds
Part 5: Connecting Your Custom Domain
Buy a Domain
Recommended registrars:
- Namecheap
- Cloudflare
- Porkbun
- Google Domains
Avoid GoDaddy (upsells & expensive).
Connect Your Domain to Netlify
Netlify will provide DNS records:
- A Record → Root domain
- CNAME → www → Netlify URL
Option 1: Manually add DNS records
Add A + CNAME in your registrar's DNS settings.
Option 2: Use Netlify DNS (Recommended)
Replace nameservers with Netlify's.
DNS may take 1–48 hours to propagate. Netlify auto-creates SSL certificates.
Part 6: Next Steps and Best Practices
Image Optimization
Best Practices
- JPG for photos
- PNG for transparent images
- SVG for logos
- Max width: 2000px
- Always include alt text
Adding Analytics
Popular options:
- Plausible (recommended)
- Fathom
- Google Analytics
SEO Basics
- Meta descriptions
- Hugo sitemap
- Structured data via JSON-LD
- Performance tests via PageSpeed Insights, GTmetrix, or WebPageTest
Content Management Tips
Organizing Content Structure
Create folders in your content/ directory to organize pages by type:
content/
├── blog/
│ ├── post-1.md
│ └── post-2.md
├── services/
│ ├── service-1.md
│ └── service-2.md
└── pages/
├── about.md
└── contact.md
Using Shortcodes
Hugo has built-in shortcodes for YouTube, tweets, figures, and more.
Creating Blog Posts
hugo new blog/my-first-post.md
Maintenance and Updates
Updating Hugo
brew upgrade hugo # Mac
choco upgrade hugo # Windows
Updating Themes
If using Git submodules:
git submodule update --remote themes/hugoplate
Backup Options
GitHub already stores your history. Extra backups are optional but recommended.
Website Health Monitoring
Tools to consider:
- UptimeRobot
- Freshping
- Netlify monitoring
- Broken link checkers
- Mobile-friendly checks
- Accessibility testing
Growing Beyond Static
Forms
- Netlify Forms (simple & free)
- FormSpree
- Basin
- Tally
Comments
- Utterances
- Remark42
- Hyvor Talk
Simple E-commerce
- Snipcart
- Gumroad
- Paddle
- LemonSqueezy
API Integrations
Add dynamic content with JavaScript fetching APIs.
Conclusion
Summary of What You Accomplished
- Built a Hugo site
- Understood static site benefits
- Deployed via Netlify
- Set up continuous deployment
- Learned optimization & maintenance
Cost Comparison (3 Years)
| Option | Cost |
|---|---|
| WordPress | $1,140 – $3,240 |
| Hugo + GitHub + Netlify Free | $195 – $345 |
| Hugo + Premium hosting | $964 – $1,164 |
Additional Resources
Documentation
Communities
- Hugo Forum
- r/gohugo
- Everything Hugo(Daily.dev Squad)
Themes
Learning
- Hugo in Action
- Mike Dane tutorials
- Markdown Guide
Tools
- PageSpeed
- GTmetrix
- WebPageTest
- TinyPNG
- Netlify Forms
- Plausible


