20th October 2021

Introduction to Bulba

I've just published a new version (0.0.5) of Bulba on GitHub and NPM, so I thought I'd write a post here explaining what it is, the current progress, and where I plan to take it in the future.

What is it?

It's a static site generator, and powers this blog.

Essentially, it takes a collection of .md files, and generates a static site. Featuring an index page, archive, individual posts, etc.

Here is the structure of a blog directory:

└── blog/
    ├── content/
    │   ├── about.md
    │   └── posts/
    │       └── example.md
    └── config.yaml

As you can see, there are only three things you need to have to build a blog with Bulba:

From this data, Bulba will create a structure that looks like this:

└── out/
    ├── assets/
    │   └── css/
    │       └── style.css
    ├── archive.html 
    ├── about.html 
    ├── feed.json 
    └── blog-post.html

Those files are then ready to be hosted on a server somewhere.

Post structure

The only requirement of the blog post files is that they have the extension .md, and also follow this structure:

title: Hello, World
slug: hello-world
date: 2021-10-19 22:29:00
excerpt: The first public blog post using Bulba


This extra data is used by Bulba when generating the various pages.

What does it do right now?

Okay, so as of version 0.0.5, this is what Bulba will generate for you:

And here is a rough list of the various customisable options that are available:

What do I plan on adding in the future?

In the long-term, I have a few ideas floating in my head, but as for the short term, I've got a few features that I plan on adding:

As for some longer-term ideas, here are a few:

If you want to checkout Bulba, and try it out for yourself, you can check out the repository on GitHub, and you can also find it on NPM under @chrishannah/bulba.

Also if you have any feedback, have some ideas on where you think I should take this project, feel free to contact me on Mastodon or Twitter.