Skip to main content

The static blog generator that does exactly what it needs to. Nothing more.

Project description

BoumWave Logo

BoumWave

The static blog generator that does exactly what it needs to. Nothing more.

Why BoumWave?

Static site generators were built in an older era. They've become overcomplicated with:

  • Tag management
  • Complex pagination
  • Search functionality
  • Modules and plugins everywhere
  • 200-page documentation

But what's really the purpose of a static site generator?

  1. You prepare your HTML template
  2. You write your article in markdown
  3. Boum, you generate it
  4. Done

That's exactly what BoumWave does.

The goal: simplify the conversion from markdown to your template without having to copy-paste the template every time and manually update all the meta tags (Open Graph, Twitter Card, JSON-LD, canonical links...).

You initialize it, you design your template, you don't even need to read docs, and boom your blog is generated.

No documentation needed. The configuration file and templates contain detailed comments explaining what everything does. Just read the files.

If you want to add other features to your blog, like an about page or a contact page, that's not the job of a static site generator. You can add them easily yourself.

Features

  • Simple: 4 commands, that's it
  • Multilingual: Native support for multiple languages
  • Your design: Full HTML templates, do whatever you want
  • Automatic SEO: Open Graph, Twitter Card, JSON-LD without thinking
  • Markdown: Write in markdown, get HTML
  • Fast: Generates your pages in a flash
  • Zero complex configuration: One simple, clear TOML file

Quick Start

# Install BoumWave
uv add boumwave

# Initialize your project
# this will create a boumwave.toml file
bw init

# Create the basic structure
bw scaffold

# Create your first post
bw new_post "My Awesome Post"

# Edit content/my_awesome_post/my_awesome_post.en.md

# Generate the HTML
bw generate my_awesome_post

# Done. Your post is in posts/en/my-awesome-post/

Installation

With uv (recommended)

uv add boumwave

Usage

1. Initialize a project

bw init

Creates a boumwave.toml file with all the configuration.

2. Create the structure

bw scaffold

Creates the necessary folders and example templates:

  • templates/post.html: The template for individual blog post pages
  • templates/link.html: The template used to generate each post link in your index
  • index.html: Your blog homepage with a list of all posts

About index.html: BoumWave generates a default index.html file, but you can bring your own. Just make sure it contains the markers <!-- POSTS_START --> and <!-- POSTS_END --> where you want the post list to appear. BoumWave will automatically insert your posts there, sorted by date.

You can customize all paths by editing the boumwave.toml file.

3. Create a post

bw new_post "Post Title"

Creates a folder with a markdown file for each configured language.

4. Generate HTML

bw generate post_name

Generates HTML with:

  • Your template applied
  • Open Graph meta tags
  • Twitter Card
  • JSON-LD for search engines
  • Canonical link
  • Automatic index.html update

Configuration

One file: boumwave.toml

No hidden default values. Everything is explicit. You know exactly what's configured.

Philosophy

Do one thing, do it well.

BoumWave doesn't handle:

  • Comments (use Disqus, Giscus...)
  • Search (add it yourself if you want)
  • Analytics (Google Analytics, Plausible...)
  • Deployment (use GitHub Pages, Netlify...)
  • Tags and categories (Why use that in 2025 ?)

BoumWave handles:

  • Markdown to HTML conversion
  • Templates
  • SEO meta tags
  • Multilingual support
  • Automatic index.html links

The rest is your site. Do what you want with it.

Why the name?

BoumWave is a combination of my username BoumTAC and the word "weave", which means to interlace or connect threads together. A static site generator weaves a link between a template and a text file, bringing them together into a final page.

But here's the funny part: when I started the project, I made a typo and wrote "wave" instead of "weave". It has a completely different meaning, but I kept it. The waves in the logo now make perfect sense, and it makes for a nice story.

Sometimes the best names come from happy accidents.

License

MIT

Contributing

Contributions are welcome! Open an issue or a PR.

Author

Created for those who just want to write.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

boumwave-0.1.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

boumwave-0.1.0-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

Details for the file boumwave-0.1.0.tar.gz.

File metadata

  • Download URL: boumwave-0.1.0.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for boumwave-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cdb8c9b58a45741bf558094364e28b3414b5b420407fa4152320707390814c6a
MD5 0b64d314e596827766ac2233f7f6a11e
BLAKE2b-256 59f8e44f83015b26c7ba688021f4e2199c49fe6129296c3155c0e44a3e6c3800

See more details on using hashes here.

File details

Details for the file boumwave-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: boumwave-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 26.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for boumwave-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42c45ce769dad8c5b7dde276b05a95fb44595bf35f2aa9579f0a924301bf670d
MD5 b7b9cd4f4f13c979e0a6f9414cd44208
BLAKE2b-256 c029c3853fc1819f0836b72d43915474b3bc27e43acddd05975d5cf18e2685f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page