Skip to content

brennanbrown/indiepaper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Indiepaper Hugo Theme

A monochrome, brutalist Medium-inspired Hugo blog theme that prioritizes smolweb compliance, accessibility, and IndieWeb principles.

Indiepaper Theme Screenshot

Philosophy

Indiepaper embodies the brutalist web design movement with a focus on:

  • Smolweb compliant: Minimal, semantic HTML with efficient CSS
  • Accessibility first: WCAG 2.1 AA compliance from foundation
  • IndieWeb native: Full support for decentralized web protocols
  • Typography focused: Strong, beautiful type hierarchy despite minimalism
  • Performance optimized: Fast loading, minimal compute, works everywhere

Features

  • Monochrome Design: Pure black and white aesthetic with no embedded fonts
  • Responsive: Single column naturally adapts to all screen sizes
  • Accessible: WCAG 2.1 AA compliant with proper ARIA landmarks
  • IndieWeb Ready: Complete microformats2 support (h-card, h-entry, h-feed)
  • Webmentions: Built-in support for webmention.io integration
  • Multiple Feeds: RSS, JSON, and Atom feed support
  • Print Optimized: Clean print styles with proper page breaks
  • Fast: Single CSS file, no JavaScript required for core functionality

Lighthouse Scores

Lighthouse Performance Lighthouse Accessibility Lighthouse Best Practices Lighthouse SEO

Getting Started

Installation

Option 1: Hugo Module (Recommended)

# In your Hugo site directory
hugo mod init github.com/yourusername/yoursite
hugo mod get github.com/brennanbrown/indiepaper

Add to your hugo.toml:

[module]
  [[module.imports]]
    path = "github.com/brennanbrown/indiepaper"

Option 2: Git Submodule

cd themes
git submodule add https://github.com/brennanbrown/indiepaper.git indiepaper

Option 3: Direct Download

cd themes
git clone https://github.com/brennanbrown/indiepaper.git

Configuration

Add to your hugo.toml:

theme = "indiepaper"

[params]
  description = "Your site description"
  motto = "Your site motto"
  mainSections = ["post"]
  
  [params.author]
    name = "Your Name"
    email = "your@email.com"
    url = "https://yourwebsite.com"
    bio = "Your bio"
    photo = "/your-photo.jpg"
  
  [params.indieweb]
    webmention_endpoint = "https://webmention.io/yourdomain/webmention"
    webmention_api = "https://webmention.io/api/mentions.jf2"
    token_endpoint = "https://tokens.indieauth.com/token"
    authorization_endpoint = "https://indieauth.com/auth"
    micropub_endpoint = "https://yourdomain.com/micropub"
    microsub_endpoint = "https://aperture.p3k.io/microsub/123"

Run Your Site

hugo server -D

Documentation

Configuration

Basic Setup

[params]
  description = "Your site description"
  author = "Your Name"
  email = "your.email@example.com"
  motto = "Your site motto"
  
  # IndieWeb endpoints
  [params.indieweb]
    token_endpoint = "https://tokens.indieauth.com/token"
    authorization_endpoint = "https://indieauth.com/auth"
    micropub_endpoint = "https://your-micropub-endpoint.com/micropub"
    webmention_endpoint = "https://webmention.io/yourusername/webmention"
    webmention_api = "https://webmention.io/api/mentions.jf2"
  
  # Social links (rel-me)
  [[params.social]]
    name = "Mastodon"
    url = "https://mastodon.social/@username"
  [[params.social]]
    name = "GitHub"
    url = "https://github.com/username"

Content Types

Blog Posts

Create posts in content/post/ with front matter:

---
title: "Your Post Title"
date: 2024-01-01T12:00:00Z
draft: false
summary: "Brief summary of the post"
tags: ["tag1", "tag2"]
categories: ["category1"]
image: "/images/post-image.webp"
syndication:
  - https://bsky.app/profile/username/post/123456789
---

Notes

Create short notes in content/notes/ for microblog-style content.

Images

Use the provided shortcode for smolweb-compliant images:

{{< img src="/images/photo.webp" 
        alt="A beautiful sunset over mountains" 
        caption="Sunset in the Rockies"
        link="/images/photo-full.webp" >}}

IndieWeb Features

Microformats2

  • h-card: Author/site identity in header
  • h-entry: Blog posts and articles
  • h-feed: Post listings and archives
  • h-cite: Webmentions and responses

Webmentions

Configure webmention.io to receive responses from across the web. The theme automatically displays webmentions on individual posts.

POSSE Support

Add syndication links to your front matter to publish on multiple platforms while owning your content.

Design System

Typography

  • Headers: Geometric humanist sans-serif (Avenir, Montserrat, Corbel)
  • Body: Old-style serif (Iowan Old Style, Palatino Linotype)
  • Code: Monospace (ui-monospace, Cascadia Code, Source Code Pro)

Colors

Pure monochrome palette:

  • Black: #000000
  • Dark Grey: #333333
  • Medium Grey: #666666
  • Light Grey: #999999
  • Off-White: #f5f5f5
  • White: #ffffff

Layout

  • Single column centered layout
  • Maximum width: 65ch (optimal reading measure)
  • Generous line height for readability
  • No responsive CSS needed (natural mobile adaptation)

Accessibility

  • WCAG 2.1 AA compliant
  • Semantic HTML5 structure
  • Proper heading hierarchy
  • Skip links for keyboard navigation
  • Focus indicators on interactive elements
  • Screen reader friendly
  • 4.5:1 contrast ratios for text

Development

File Structure

indiepaper/
β”œβ”€β”€ layouts/
β”‚   β”œβ”€β”€ _default/
β”‚   β”‚   β”œβ”€β”€ baseof.html      # Base template
β”‚   β”‚   β”œβ”€β”€ single.html      # Single post
β”‚   β”‚   └── list.html        # List pages
β”‚   β”œβ”€β”€ partials/
β”‚   β”‚   β”œβ”€β”€ header.html
β”‚   β”‚   β”œβ”€β”€ footer.html
β”‚   β”‚   β”œβ”€β”€ nav.html
β”‚   β”‚   └── webmentions.html
β”‚   β”œβ”€β”€ index.html           # Homepage
β”‚   β”œβ”€β”€ index.json           # JSON feed
β”‚   └── shortcodes/
β”‚       └── img.html         # Image shortcode
β”œβ”€β”€ static/
β”‚   β”œβ”€β”€ style.css            # Single CSS file
β”‚   β”œβ”€β”€ robots.txt
β”‚   └── favicon.ico
└── exampleSite/             # Demo content

Testing

The theme includes npm-based testing:

cd exampleSite
npm install
npm test

Tests include:

  • HTML validation
  • CSS linting
  • IndieWeb microformats validation
  • Feed validation
  • Accessibility testing

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please read the specification for design principles and requirements.

Resources


Indiepaper - Write. Publish. Own your content.


πŸ“ Berry House

Indiepaper was created by Berry House. We build fast, accessible JAMstack websites and help independent creators, non-profits, and small teams communicate clearly and own their platform.

Whether you're looking to amplify your writing or build an independent website, we're here to help you create and share meaningful work with the world.

Learn more about Berry House β†’

About

πŸ“° A monochrome, brutalist Medium-inspired Hugo blog theme that prioritizes Indieweb principles.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors