Home

Cantilevers on the desktop - Introducing Catenary

16/09/2025

I have made a good amount of progress upgrading Cantilevers to use the new DynamoDB-backed metadata management, and this website is now largely self-hosting once again. I have started work to migrate my other website - liamjd.org - from Bascule to Cantilevers. There's a lot to do though, especially around navigation, linking and especially tagging. Cantilevers does not support any of the tagging mechanisms that Bascule provides.

Migrating liamjd.org will also need new UI features for the web editor, for instance to support partial templates - used extensively in liamjd.org - and non-image uploads. The trouble is... this web front end is kinda old. It's built on SvelteKit 4, which has been superseded by SvelteKit 5. It's built using a UI library which has also been significantly reworked, and that library depends on a much newer version of Tailwind CSS... An upgrade is long overdue, and a lot of work for not a lot of gain.

So I'm doing what any sensible developer does - starting a new project instead!

Catenary is a Desktop and Android app that can replace this Cantilevers web editor front end. Built using Jetpack Compose and Kotlin Multiplatform, the goal is to allow me to create and edit websites from my phone or my computers. It will hook into all the same backend APIs provided by Cantilevers, so hopefully there will be little backend work required.

I'm leaning heavily into the use of AI coding assistants to build this app, partly as an experiment in 'vibe coding', and partly because learning KMP Android and Desktop development is a lot of work.

It's going well. In only a week I have an app that can fetch projects, fetch a list of Markdown posts, and display the source of a post. My current focus is adding basic Markdown editing, which will be the subject of a separate blog entry.

Prev: DynamoDB Migration Complete Next: Markdown Editing in Jetpack Compose