Most Drupal themes drift over time. A template here, a preprocess function there, a bit of markup copied into three places. Six months later, changing a button means hunting through files. We built the Jarvis theme to avoid that.
The rule was simple: one place defines each piece of markup. We used Single Directory Components, or SDC, which is Drupal's built-in way to package a component's template, styles, and metadata together. A card is a card. Define it once, and every card renders the same way, whether it lands through Layout Builder or the Canvas visual editor.
Bootstrap 5 does the heavy lifting for layout and spacing. We vendored it and themed it through CSS variables, so you adjust colors and fonts in one file instead of overriding rules across a dozen. Start simple.
We kept custom code to a minimum. One small module maps block fields to components. That is it. No sprawling PHP, no clever abstractions to decode later.
Two decisions I am glad we made. First, the theme ships a recipe. Install it, run a couple of Drush commands, and you get the theme, its modules, demo content, and sensible defaults. No twenty-step setup document. Second, accessibility is built in, not bolted on. The text and section components check color contrast and will not offer a combination that fails ADA. The right choice becomes the easy choice.
None of this is exotic. SDC, Bootstrap, a recipe, and a bit of glue. The value is in the discipline: decide where things live, then hold the line.
Good themes are not the ones with the most features. They are the ones you can still understand a year from now.
Thanks for checking out Jarvis - a Drupal 11 theme for Canvas - with ADA Compliance built in!