Laptop showing the live Modus theme in dark mode on gcasqueiro.com
Experiments Open-Source

My Own Theme, Finally

The past two months were, to put it mildly, complicated. Between moving houses, trying to finish the agency's work before going on vacation, and finally being on vacation, this little place on the internet ended up not getting the attention it deserved.

Moving always takes longer than you plan, and by the time the last box was empty, there was still a lot of other stuff to handle in terms of renovating some parts of the house. When all that seemed to be solved, it was finally time to take the family away for some proper rest.

While all that was happening, the rest of the world didn't stop and kept moving at a more than usual speed: new models, new features, and new tools every other day. It was impossible to stay properly updated or try most of them. The only scrolling I do is on X, and even that was just enough to notice everything that was going on without diving too much into it.

One of the accounts I follow on X that basically gives me a round-up of everything that's going on is Theo. While I don't agree with some of his opinions, his daily X Live broadcasts (also available on his YouTube channel after a couple days) are for the most part unbiased and very informative for people like me who aren't experts in all those topics.

It was by watching Theo's streams and reading his posts that I took notice of T3 Code.

T3 Code
T3 Code — The open-source control plane for coding agents.

T3 Code, built by Theo and Julius, is an agent harness control surface. In plain terms, it's a single interface that sits on top of the coding agents you already use (Claude Code, Codex, Cursor, Grok Build, OpenCode, etc.) and lets you orchestrate them from one place. Being free and open-source (under MIT) is a big plus, and although it's still in alpha, it already has desktop and mobile versions for most OSs.

I've been curious about it for a long time and really wanted to test it, but due to what's been happening the past couple months, I've put it on hold. But now being on vacation and having more free time and less to think about, I decided to give it a go.
Since Claude seemed to become more like a gen-z employee than a reliable team member (that's a subject for another post) with the latest model updates (Sonnet 5 and Opus 5), I decided to give Grok 4.5 a go. I don't usually pay much attention to benchmarks, since they all seem to run on very "favorable" and controlled environments. I prefer to test the models myself, and if they do what I want them to do and prove to be better or more reliable than the previous one, that's good enough for me, even if they're some steps below in the score ladder behind other "frontier" models.

The objective of being on vacation and (trying to) rest is not to immerse myself in complex projects or anything like that, so I decided that the best way to test this was with a small project that could be done in a couple of sessions. I eventually decided that I should try to solve a problem that has been bugging me for months.

Since the day I decided to put this website online, one thing that I wasn't happy about was the blog's theme. Don't get this the wrong way; Ghost's themes are good. Actually, they are so good that most people just decide to use the official ones or buy one from other sources. And some of those can be really expensive. The main problem I see with all that is that besides your logo and the content, all the rest is exactly the same as all the other hundred or thousands of Ghost blogs you see out there.
I wanted something more custom, something that represented the content of my blog, and some features I didn't seem to find even in paid themes.

One important thing to disclose: I don't know Handlebars. Ghost themes run on it, and it's a templating language rather than a real programming one. Mostly ordinary HTML with curly braces marking the parts that get filled in when a page loads. A couple of weeks of evenings around it would probably get me comfortable, but I'm on vacation, and learning a new syntax during that time isn't in my plans, and honestly, I don't have any interest in it since it isn't something that is widely used outside of Ghost theming, from what I can tell.

The main structure was heavily inspired by the theme I was using (Edition), and some of the visual details were inspired by a theme I previously used more than 10 years ago called Joelma. Unfortunately, this theme seems to have been abandoned in 2020, and the latest compatible Ghost version is 4.0 (we're on Ghost v6.0). Even if I tried, it wouldn't even let me install it. Forking it and making it compatible would probably take longer than I would want to, so I just decided to use the bits I liked as visual references and start a custom theme from the ground up.

So I sat in front of my laptop, with T3 Code open and Grok 4.5 properly configured, and described extensively and in detail everything I wanted for my Ghost theme.

The process itself, to be honest, went way better than I was expecting. Grok understood perfectly what I wanted and wrote most of the code without me having to correct it along the way. Everything went according to plan, and I was able to have a full custom theme in just under two hours. Of course after testing it there were some minor visual tweaks to be made, especially on the mobile version, but all that was solved the following night in a new session.

The theme is called Modus. I honestly can't remember the particular reason why I chose that name, but it was something that came to me at that moment. And since I couldn't find any Ghost theme with that name, I stuck with it.

So what does this theme have that all the others don't, you might ask? Well, for starters, the visual aesthetic of the posts is completely different. While most Ghost themes put the featured image of the post below the title and other details by default, this one puts the image on top, with all the content below it. That's something Joelma had that I really wanted my theme to have. I honestly don't like Ghost Post's page default configuration.

It also has light and dark modes with a different color accent in each (Ghost only gives you one, and I wanted to have different options for both modes), related posts at the bottom, a "load more" button instead of pagination, and all of it changeable from Ghost's design settings so I can swap colors later without the need to edit the theme. The one feature that I didn't find in any other Ghost theme (but it might exist) is the possibility to use different hero images for the homepage based on the chosen color mode. What this means is that for dark mode you can choose one image, and for the light mode you can have a completely different one. In terms of customization, this makes all the difference when configuring your blog. Also, the hero images and the post's featured images have a parallax effect that starts as soon as you start scrolling down the pages.

Ghost Admin Design settings panel showing the Modus theme preview in dark mode, with separate light and dark accent colour controls and two different homepage hero images configured.
The Design settings that let you set different accents and different hero images for light and dark mode.

Although the whole process was really smooth, one thing put up a proper fight: Ghost's floating subscribe button. Ghost's Portal lives inside its own iframe and takes its color from that single accent setting, so it kept ignoring both of mine and coming back wrong after every refresh. Grok worked around it eventually and now it matches whichever mode you're reading in. That took more time back and forth than the rest of all the other tweaks and fixes.

To conclude, everything else went better than I had any right to expect. T3 Code's readme is upfront that the project is very early and to expect bugs. Across these two sessions, of around 2h each, I didn't hit one (that I noticed). Grok 4.5 followed exactly what I was describing, including the parts I described badly, and got most of it right the first time with only small corrections afterwards. That really surprised me. Grok usually gets treated as a second-tier option behind whatever Anthropic, OpenAI, or even DeepSeek or Google released most recently. But on this project, it was simply amazing. I think it's an unfairly underrated model.

Being specific was the whole game. Vague requests get vague results, and since I was (maybe) overly specific in all the instructions fed to Grok, the results were exactly what I wanted.

Today, just before writing this post, I did some more "sanding" at the remaining rough edges of some details that weren't exactly as they should be. Specifically, the way the menu button behaved on mobile.

Also worth mentioning that while this theme was being developed, SpaceXAI released Grok 4.6, which seems to be a big improvement when compared to 4.5. I'm already using it in my next project, and so far it shows a considerable improvement when compared to 4.5.

Modus is already installed and live on this website, and it's public on GitHub under an MIT license. The readme says straight out that I built it for my own blog and not as a product, so clone it, fork it, and tear it apart. There are still a handful of things I'll probably change over the next few months, or maybe I'll decide to create a new theme altogether if I get better ideas.
The main point is that I made this for me, specifically for my blog, so if anyone decides to use it and something doesn't work the way they intend, I don't plan to add features on request, take custom change requests, or maintain support for other people's setups. If you think it needs improvements or something different, fork the repo and make whatever you want. 😉

You can get it here:

GitHub - gcasqueiro/modus: Ghost 6 theme built for my own website. Light/dark modes, dual heroes, transparent nav, dual accents, related posts. Inspired by Edition and Joelma.
Ghost 6 theme built for my own website. Light/dark modes, dual heroes, transparent nav, dual accents, related posts. Inspired by Edition and Joelma. - gcasqueiro/modus

May The Code Be With You! 🚀

G. Casqueiro
G. Casqueiro

Father | Web Developer & Designer | Building AI Workflows & Systems | Learning Code | Open-Source Enthusiast | Comics & Sci-Fi Geek | 80s & 90s Aficionado