The right architecture and the right tool don't just solve a problem – they reframe what the problem was.
Mine started with a single Discord conversation and a question: "how do I change one label in this theme?"
I needed to change "Version" to "Course" in the navigation switcher for the brand new Grav premium Helios theme, as I saw its potential as a successor to my original Open Course Hub. Andy Miller, the creator of Grav CMS, kindly pointed me in a direction I hadn't considered: handle everything in a dedicated plugin and leave the theme files completely untouched. "That one plugin is their entire customization. Keeps everything else stock." He also suggested Claude Code as a tool to help bridge the gap between the architecture and actually building it.
The Grav Helios Course Hub is my third generation open course companion. The previous version eventually split into two separate projects, single-course and multi-course, and naturally maintaining both resulted in more effort. That friction turned out to be a signal: multi-course wasn't a variant of the design, it was the default use case that could handle both. And using a premium theme made sense on multiple levels – revenue from Helios licenses directly funds continued development of the open-source Grav CMS itself.
This experience led me to nine design principles, each circling back to the same question: where does this complexity actually belong?
Nine principles emerged from that process. Each is explored from two angles – developer and UX – because the same insight often looks different depending on where you're standing
The Nine Principles at a Glance
1. In open source, the people who know exactly how the system wants to be extended are often just a conversation away.