I've been looking for a programming project for months, without much success. My day-job doesn't give me a lot of scope for programming or creativity, and for my own sanity as much as anything, I need an outlet. But what to build? I've been lacking in ideas; it seems that every website and every app already exists, more completely and more professionally than I could manage.

I have wanted to update this website for quite some time, so I thought I'd start with that. Could I build a tool to help me create and maintain a simple blogging website? I'd use Kotlin as the programming language, experiment with Exposed as a database layer, build up pages using sections and templates... It's already sounding a lot like a CMS (and there are countless CMSs out there...), and moreso, it's sounding a lot like Cinnabar. I started doing some programming, remembering the mistakes of Cinnabar, and promising myself that I'd keep it smaller and simpler this time. I called it Bascule CMS - and I didn't get very far. Exposed annoyed me too much. The data model exploded too quickly. I was spending too much time recreating something I wasn't happy with in the first place. Disappointed, I gave up.

Watching a random YouTube video on "Top 8 Web Development Trends" I heard reference of static website generators. My day job involves using a static web generating CMS (https://www.e-spirit.com/en/), so I knew I could make it work. The grand-daddy of open source static site generators seems to be Jekyll, a Ruby project adopted by Github for its internal documentation. I also looked at Griffin, a similar tool written in Java.

Introducing Bascule

Bascule is a static site generator, written in Kotlin, which combines content written in Markdown format with templates written using HTML5 and Handlebars.

While Bascule remains in its early stages, it's already generating this website. I've ported all my old WordPress blog posts to Markdown format, put together a simple theme using the Bulma framework, added a photograph from a recent trip up the Forth Bridge, and here we are, my new website.

Bascule already understands tags, and generates listing pages, both of all blog posts, and of tagged posts. I've started work on a theming framework, and currently ships with two very broken themes. It doesn't really process images and other asset files yet, so that's something I will work on over the next few weeks. And I'd like to plug in a basic FTP/SFTP or rsync implementation so that I can quickly publish new content to this website. Overall, I'm pleased with my progress and the results.

Why 'Bascule'?

I seem to have a bit of fascination with engineering terms, particularly relating to bridges. After Caisson, my object-binding library, I have Bascule, named for a swinging or moveable bridge. You could say that Bascule helps your website swing into action...


I've just found a bug with the post tags at the top of the page - don't click on them yet 🤔.