I have two CMS projects, Bascule and Cantilevers. One is old, simple, stable, and functional, which builds this very website. The other is modern, serverless, accessible from anywhere, and can just about publish its own website. The code for one is hard to test, and the other is brittle and hard to debug. It saddens me, but I think it is time to move on and retire one of the projects.
I have decided to keep Bascule. It does what I need it to do, I like writing simple Markdown files, and I like the simplicity of its project model and interface. It's always frustrated me that I need a copy of the bascule jar and a command line to generate and publish web content. However, I think with some GitHub Actions scripting, I will be able to create content from any device and have it published automatically.
Bascule needs work – in particular, the code is hard to test. I'm going to experiment with using AI agents like Claude Code to help me refactor it. There are also a few features I'd like to add, such as a microblogging, Twitter-esque short messages mechanism.
So what to do with Cantilevers, and why am I thinking of retiring it? Well, the ambition was to replace Bascule entirely with a web interface and an online runtime. The serverless, event-driven content generation loop was interesting and generally effective. But building page navigation was a challenge, leading to me introducing a database backend that I had always hoped to avoid. The queue-based event bus has been challenging to debug (and surprisingly expensive; apparently, I use about 800,000 messages a month even when I do nothing at all with Cantilevers). Building the front end (or front ends, with Android and Desktop app experiments) has never been fun for me.
Cantilevers will join the long list of 'failed projects' in my GitHub repository.
No, that is not fair. Cantilevers was an interesting, creative approach, and I learned a lot from developing it. It didn't quite work out, but I now know so much more about building on AWS, about event-based architecture, about infrastructure-as-code, about DynamoDB. A useful learning experience. Soon I will probably run cdk destroy prod, and archive the repositories. I'll revitalise Bascule. And if anyone is interested in the cantilevers.org domain name, I am open to offers!