TailBliss is an opinionated Hugo theme with Tailwind CSS 4.x, Vite integration, and Alpine.js with light/dark modes.
Current Version: 1.1.0+ (Hugo Theme Structure)
View Demo Β· Report Bug Β· Request Feature Β· Ask Question
- π¨ Breaking Changes
- π Quick Start
- βοΈ Configuration
- π Migration Guide
- β¨ What's New in Tailwind CSS 4
- β¨ Features
- π§ Contact Form Setup
- Credits
TailBliss has been restructured as a proper Hugo theme! This is a breaking change that affects how you install and use TailBliss.
TailBliss now follows the standard Hugo theme convention:
- Theme files: Located in the root directory
- Example content: Located in
exampleSite/directory - User sites: Must be created separately using
hugo new sitecommand
If you're upgrading from v0.5, you'll need to migrate your content. See the Migration Guide below.
mainbranch: Contains the complete theme structure with example content- Theme files: Located in the root directory and
themes/tailbliss/ - Example content: Located in
exampleSite/directory for reference
# Create a new Hugo site
hugo new site my-tailbliss-site
cd my-tailbliss-site
# Add TailBliss as a theme
git submodule add https://github.com/nusserstudios/tailbliss.git themes/tailbliss
# Copy example content (optional)
cp -r themes/tailbliss/exampleSite/* .
# Install dependencies and setup content
pnpm install
# Start developing
pnpm run dev# Clone the repository
git clone https://github.com/nusserstudios/tailbliss.git my-site
cd my-site
# Install dependencies and setup example content automatically
pnpm install
# Start developing
pnpm run devTailBliss includes an intelligent installation script that automatically sets up example content for you:
# The install script runs automatically with pnpm install
# Or run it manually:
npm run install
# or
node install.jsWhat the install script does:
- β Checks for existing content - Won't overwrite your existing content
- β Extracts from git repository - Gets the latest example content from the repository
- β
Creates complete structure - Sets up
content/directory with:- Sample pages (
about.md,contact.md,prose.md) - 14 example blog and news posts
- Proper directory structure (
posts/subdirectory)
- Sample pages (
- β
Safe operation - Only runs if no
content/directory exists - β Clear feedback - Shows progress and next steps
First-time setup:
git clone https://github.com/nusserstudios/tailbliss.git my-site
cd my-site
pnpm install # Automatically runs the install script
pnpm run dev # Start developing immediately# Install dependencies (automatically runs content setup)
pnpm install # recommended
# or
npm install
# Manual content setup (if needed)
npm run install
# or
node install.js# Start development server with auto CSS rebuilding (RECOMMENDED)
npm run dev:watch
# or
pnpm run dev:watch
# Alternative: Traditional approach
npm run dev
# or
pnpm run dev
# Manual CSS rebuild (when not using dev:watch)
npm run rebuild
# or
pnpm run rebuild# Full production build
npm run build
# or
pnpm run buildTailBliss offers two development approaches - choose the one that fits your workflow:
npm run dev:watchThis command:
- Starts CSS watcher (automatically rebuilds when Tailwind classes change)
- Starts Hugo server with caching disabled
- Opens your site at
http://localhost:1313 - No manual rebuilding needed - changes appear instantly!
npm run devThis command:
- Builds CSS once in development mode
- Starts Hugo server with caching disabled
- Opens your site at
http://localhost:1313 - Requires manual rebuild when changing Tailwind classes
β When changing HTML/Tailwind classes:
- Edit your
.htmlfiles inthemes/tailbliss/layouts/ - Hugo automatically detects changes and reloads
- No rebuild needed!
π When changing colors/CSS variables:
- Edit
themes/tailbliss/assets/css/main.css - Run:
npm run rebuild - Hugo automatically detects the new CSS and reloads
| Command | Purpose | When to Use |
|---|---|---|
npm run dev:watch |
Auto-watch development (RECOMMENDED) | Best for active development - auto-rebuilds CSS |
npm run dev |
Traditional development server | When you prefer manual control |
npm run rebuild |
Rebuild CSS only | After changing colors/CSS variables (manual mode) |
npm run build |
Production build | Deploying to production |
- β‘ Fast rebuilds: Timestamp-based filenames ensure instant cache busting
- π« No cache issues: Every rebuild generates a unique CSS filename
- π Auto-reload: Hugo detects CSS changes instantly and reloads browser
- π― Explicit control: You decide when CSS rebuilds happen
- π§Ή Auto-cleanup: Old CSS files are automatically removed
Pro tip: The rebuild command uses timestamp-based filenames in development (e.g., main.abc123def.css) which completely eliminates browser caching issues, while production builds still use content-based hashes for optimal caching.
With the new timestamp-based approach, this should rarely happen, but if it does:
- Run rebuild:
npm run rebuild - Check the CSS file: Look in
themes/tailbliss/static/css/- you should see a newmain.xxxxxxxxx.cssfile with a unique timestamp - Hard refresh browser:
Cmd+Shift+R(Mac) orCtrl+Shift+R(Windows) if needed
This has been completely eliminated with the new approach! If you somehow encounter it:
- Stop the process:
Ctrl+C - Use the simple workflow:
npm run devβ make changes βnpm run rebuild
This is automatically handled now:
- Old CSS files are automatically deleted when you run
npm run rebuild - Each rebuild generates a unique filename (e.g.,
main.abc123def.css) - Browser cache is bypassed because the filename is always different
- Starting work:
npm run dev:watch(RECOMMENDED - auto-rebuilds everything) - Alternative start:
npm run dev(manual mode) - Changed HTML/Tailwind classes: No action needed with
dev:watch(auto-rebuild) - Changed CSS colors/variables: No action needed with
dev:watch(auto-rebuild) - Manual rebuild:
npm run rebuild(only needed in manual mode) - Deploying:
npm run build
After installation, update your hugo.yaml configuration:
baseURL: 'https://tailbliss.netlify.app' # Replace with your actual domain
title: Your Site Title
theme: tailbliss- baseURL: Set this to your actual domain for proper canonical URLs and social sharing
- theme: Must be set to
tailblisswhen using as a Hugo theme - Example: The demo site uses
https://tailbliss.com/
TailBliss has been completely upgraded from Tailwind CSS 3.2 to 4.x with significant improvements:
- Cache Busting: Automatic CSS hash generation (e.g.,
main.abc123.css) - Hot Reloading: Instant CSS updates during development
- Build Performance: Faster CSS processing with Vite
- OKLCH Colors: All colors now use the OKLCH color space for better perceptual uniformity
- Indigo Primary: Updated from blue to indigo with proper OKLCH values
- Enhanced Contrast: Better light/dark mode color relationships
- CSS-First Approach: Configuration moved from
tailwind.config.jsinto CSS using@themedirective - Custom Variants: Dark mode uses
@custom-variantinstead of class-based configuration - Custom Utilities: Built-in
prose-2xlutility for wider content (80ch with 110% font-size)
- Custom Prose Styles: Removed
@tailwindcss/typographydependency - OKLCH Integration: All text colors use OKLCH for consistent rendering
- Enhanced Code Highlighting: Better syntax highlighting colors in light/dark modes
- Markdown Tables: Improved table styling within prose content
npm run dev # Start development server
npm run rebuild # Rebuild CSS after changes
npm run build # Production build- Development: Vite processes
assets/css/main.cssand generates timestamped files likemain.abc123def.css - Production: Vite generates content-hashed CSS files like
main.xyz789.css - Hugo template automatically detects and references the latest CSS file
- Cache busting handled automatically in both development and production
- Auto-cleanup removes old CSS files during development rebuilds
- Zero Cache Issues: Timestamp-based filenames eliminate all CSS caching problems
- Faster Development: Vite's lightning-fast processing with instant cache busting
- Auto-Cleanup: Old CSS files are automatically removed during rebuilds
- Modern Colors: OKLCH provides more accurate colors across devices
- Simplified Config: CSS-first configuration is more maintainable
- Enhanced Typography: Custom prose styles with better performance
tailwindcss:^3.2.xβ^4.1.x- Added:
@tailwindcss/vite,@tailwindcss/postcss,vite - Removed:
@tailwindcss/typography(replaced with custom styles)
If you have an existing TailBliss v0.5 site, follow these steps to migrate:
# Create a backup of your current site
cp -r my-old-tailbliss-site my-old-tailbliss-backup# Create a new Hugo site
hugo new site my-new-tailbliss-site
cd my-new-tailbliss-site
# Add TailBliss v1.1 as a theme
git submodule add https://github.com/nusserstudios/tailbliss.git themes/tailbliss# Copy your existing content
cp -r ../my-old-tailbliss-backup/content/* ./content/
cp -r ../my-old-tailbliss-backup/static/* ./static/
cp -r ../my-old-tailbliss-backup/assets/* ./assets/
# Copy your Hugo configuration (and merge with new theme settings)
cp ../my-old-tailbliss-backup/hugo.yaml ./hugo.yamlEdit your hugo.yaml to include the theme and your domain:
baseURL: 'https://yourdomain.com/'
theme: tailbliss# Install dependencies and automatically setup example content
pnpm install
# Test your site
npm devAlternative: Use the install script for fresh content If you want to start with fresh example content instead of migrating:
# Remove existing content and let install script create fresh examples
rm -rf content/
npm run install # Creates fresh example content from repository- Missing Theme Reference: Make sure
theme: tailblissis in yourhugo.yaml - CSS Not Loading: Ensure you've run
pnpm installin your site root - Images Not Displaying: Check that images are in the correct
/assetsor/staticdirectories - Custom Layouts: If you customized layouts, copy them to your site's
layouts/directory - Quick Setup: You can copy the entire
exampleSitecontent to your root directory:# Copy all exampleSite content to root cp -r exampleSite/* .
If you prefer to start fresh:
# Clone and let the install script handle content setup automatically
git clone https://github.com/nusserstudios/tailbliss.git my-site
cd my-site
pnpm install # Automatically runs install script and sets up content
npm dev # Start developing immediatelyManual approach (if you prefer manual control):
git clone https://github.com/nusserstudios/tailbliss.git my-site
cd my-site
cp -r exampleSite/* . # Copy example files manually
pnpm install
npm devHas paginated Categories and Tags. Markdown files will automatically convert images put into /assets folder to .webp images.
{{< imgc src="img-name.jpg" alt="Place alt text here." >}}
To use the contact form:
- Visit FormSubmit.Co
- Locate the contact form in
content/contact.md(orexampleSite/content/contact.mdif using as reference) - Update the form action with your email address:
action="https://formsubmit.co/[email protected]" method="POST"
4044ever - Original Theme
https://github.com/4044ever/Hugo-Tailwind-3.0.git
Jan Heise - Alpine.js Navbar
https://github.com/jan-heise/responsive-navbar-with-dropdown
TailBliss Team - Tailwind CSS 4 Migration, Vite Integration & OKLCH Colors
Made for Hacktoberfest, with β€οΈ by NusserStudios.
