<p align="center">
<img src="logo.jpg" alt="BoumWave Logo" width="250">
</p>
# 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](https://github.com/CedricRaison/BoumWave/blob/master/src/boumwave/templates/default_config.toml).
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
```bash
# 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)
```bash
uv add boumwave
```
## Usage
### 1. Initialize a project
```bash
bw init
```
Creates a `boumwave.toml` file with all the configuration.
### 2. Create the structure
```bash
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
```bash
bw new_post "Post Title"
```
Creates a folder with a markdown file for each configured language.
### 4. Generate HTML
```bash
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.
Raw data
{
"_id": null,
"home_page": null,
"name": "BoumWave",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.13",
"maintainer_email": null,
"keywords": "static-site-generator, blog, markdown, seo, multilingual",
"author": null,
"author_email": "Cedric Raison <cedric.raison@hey.com>",
"download_url": "https://files.pythonhosted.org/packages/5b/9e/bdc15c2f6c9b0de0a37fb5ab9d641381229db0aad827451ea8fa0418a427/boumwave-2.1.1.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <img src=\"logo.jpg\" alt=\"BoumWave Logo\" width=\"250\">\n</p>\n\n# BoumWave\n\n**The static blog generator that does exactly what it needs to. Nothing more.**\n\n## Why BoumWave?\n\nStatic site generators were built in an older era. They've become overcomplicated with:\n- Tag management\n- Complex pagination\n- Search functionality\n- Modules and plugins everywhere\n- 200-page documentation\n\n**But what's really the purpose of a static site generator?**\n\n1. You prepare your HTML template\n2. You write your article in markdown\n3. Boum, you generate it\n4. Done\n\n**That's exactly what BoumWave does.**\n\nThe 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...).\n\nYou initialize it, you design your template, you don't even need to read docs, and boom your blog is generated.\n\n**No documentation needed.** The configuration file and templates contain detailed comments explaining what everything does. [Just read the files](https://github.com/CedricRaison/BoumWave/blob/master/src/boumwave/templates/default_config.toml).\n\nIf 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.\n\n## Features\n\n- **Simple**: 4 commands, that's it\n- **Multilingual**: Native support for multiple languages\n- **Your design**: Full HTML templates, do whatever you want\n- **Automatic SEO**: Open Graph, Twitter Card, JSON-LD without thinking\n- **Markdown**: Write in markdown, get HTML\n- **Fast**: Generates your pages in a flash\n- **Zero complex configuration**: One simple, clear TOML file\n\n## Quick Start\n\n```bash\n# Install BoumWave\nuv add boumwave\n\n# Initialize your project\n# this will create a boumwave.toml file\nbw init\n\n# Create the basic structure\nbw scaffold\n\n# Create your first post\nbw new_post \"My Awesome Post\"\n\n# Edit content/my_awesome_post/my_awesome_post.en.md\n\n# Generate the HTML\nbw generate my_awesome_post\n\n# Done. Your post is in posts/en/my-awesome-post/\n```\n\n## Installation\n\n### With uv (recommended)\n\n```bash\nuv add boumwave\n```\n\n## Usage\n\n### 1. Initialize a project\n\n```bash\nbw init\n```\n\nCreates a `boumwave.toml` file with all the configuration.\n\n### 2. Create the structure\n\n```bash\nbw scaffold\n```\n\nCreates the necessary folders and example templates:\n- `templates/post.html`: The template for individual blog post pages\n- `templates/link.html`: The template used to generate each post link in your index\n- `index.html`: Your blog homepage with a list of all posts\n\n**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.\n\nYou can customize all paths by editing the `boumwave.toml` file.\n\n### 3. Create a post\n\n```bash\nbw new_post \"Post Title\"\n```\n\nCreates a folder with a markdown file for each configured language.\n\n### 4. Generate HTML\n\n```bash\nbw generate post_name\n```\n\nGenerates HTML with:\n- Your template applied\n- Open Graph meta tags\n- Twitter Card\n- JSON-LD for search engines\n- Canonical link\n- Automatic index.html update\n\n## Configuration\n\nOne file: `boumwave.toml`\n\nNo hidden default values. Everything is explicit. You know exactly what's configured.\n\n\n## Philosophy\n\n**Do one thing, do it well.**\n\nBoumWave doesn't handle:\n- Comments (use Disqus, Giscus...)\n- Search (add it yourself if you want)\n- Analytics (Google Analytics, Plausible...)\n- Deployment (use GitHub Pages, Netlify...)\n- Tags and categories (Why use that in 2025 ?)\n\nBoumWave handles:\n- Markdown to HTML conversion\n- Templates\n- SEO meta tags\n- Multilingual support\n- Automatic index.html links\n\nThe rest is your site. Do what you want with it.\n\n## Why the name?\n\n**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.\n\n**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.\n\nSometimes the best names come from happy accidents.\n\n## License\n\nMIT\n\n## Contributing\n\nContributions are welcome! Open an issue or a PR.\n\n## Author\n\nCreated for those who just want to write.\n",
"bugtrack_url": null,
"license": null,
"summary": "The static blog generator that does exactly what it needs to. Nothing more.",
"version": "2.1.1",
"project_urls": {
"Homepage": "https://github.com/CedricRaison/BoumWave",
"Issues": "https://github.com/CedricRaison/BoumWave/issues",
"Repository": "https://github.com/CedricRaison/BoumWave"
},
"split_keywords": [
"static-site-generator",
" blog",
" markdown",
" seo",
" multilingual"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "42c3b81a5dcd07d6d6bbd4c433b62bf08a8a59b22659767bf9eec01da214805c",
"md5": "e3616c834f7cd3cc5dc5c2e6f29e4b80",
"sha256": "83c8c08a05ca2ba68eadd07a7b0f4723650ca461d62b5fbed31e384cce6f8602"
},
"downloads": -1,
"filename": "boumwave-2.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e3616c834f7cd3cc5dc5c2e6f29e4b80",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.13",
"size": 39871,
"upload_time": "2025-11-01T18:01:15",
"upload_time_iso_8601": "2025-11-01T18:01:15.435956Z",
"url": "https://files.pythonhosted.org/packages/42/c3/b81a5dcd07d6d6bbd4c433b62bf08a8a59b22659767bf9eec01da214805c/boumwave-2.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5b9ebdc15c2f6c9b0de0a37fb5ab9d641381229db0aad827451ea8fa0418a427",
"md5": "94ae426ed0182c0cf5b4ed5b9bf65fe3",
"sha256": "dd77718a2d02127c22c72dac4293fa3bbc252a3d74b6da62ed0e6ae42040accf"
},
"downloads": -1,
"filename": "boumwave-2.1.1.tar.gz",
"has_sig": false,
"md5_digest": "94ae426ed0182c0cf5b4ed5b9bf65fe3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.13",
"size": 27168,
"upload_time": "2025-11-01T18:01:16",
"upload_time_iso_8601": "2025-11-01T18:01:16.702785Z",
"url": "https://files.pythonhosted.org/packages/5b/9e/bdc15c2f6c9b0de0a37fb5ab9d641381229db0aad827451ea8fa0418a427/boumwave-2.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-01 18:01:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "CedricRaison",
"github_project": "BoumWave",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "boumwave"
}