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-2.1.2.tar.gz (27.2 kB view details)

Uploaded Source

Built Distribution

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

boumwave-2.1.2-py3-none-any.whl (39.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for boumwave-2.1.2.tar.gz
Algorithm Hash digest
SHA256 384e65ee84ab0cae6d9ddeb6a84b3997aef5f1470fc900732ec4d56a0898c1f0
MD5 a47dc933a832d0e5efaf6e7f503da26d
BLAKE2b-256 b8873d41440af94ea258c824ed935dae96f01c92f1970b5c6c87667c84b1ae89

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for boumwave-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2523d79db23db365d40d567b502c59ff2f6d80b70daae040f7751d0af2cfdf03
MD5 897d08d6d49f285dca81725098c64f1c
BLAKE2b-256 4d8d98346b8139eabda67aa64ad4206005ae52d182085c1a4f8d168f4277661a

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