Category: Build in public

  • How I Built CartRules.com With Novamira Pro

    How I Built CartRules.com With Novamira Pro

    I’ve been building WordPress and WooCommerce sites by hand for close to fifteen years. Every theme, every plugin, every line of custom PHP, typed myself, tested myself, deployed myself.

    But when it came time to put a homepage on cartrules.com, I decided to try something different. Especially after a whole summer spent “playing” with AI…

    Instead of opening a code editor, I switched on Novamira Pro, connected Claude Code directly to the site, and let it build the website with a few prompts. I think it worked pretty well!

    The domain, and switching Novamira on

    Registering cartrules.com was the easy part, eleven dollars and change for the year.

    The interesting step came right after: installing Novamira Pro on a staging environment at staging2.cartrules.com.

    Novamira strongly advises working on staging only, so that’s what I did. Here’s the screenshot upon licence activation:

    Novamira license active on staging2.cartrules.com

    Novamira sits in the WordPress admin like any other plugin, but its whole reason for existing is different. It’s built to let an AI client act on your site directly, not just suggest code for you to paste in.

    What “AI abilities” actually means

    Novamira’s configuration screen makes the stakes clear from the start. There’s a checkbox labeled “Turn on AI Abilities for this site”, and right below it a security note in red: when enabled, AI agents can execute PHP code and perform filesystem operations on the site.

    It tells you plainly that this is for development and staging environments, to always keep backups, and to set your client to ask for confirmation before every action.

    Enable AI Abilities checkbox and security note

    Connecting Claude Code to the site

    The same screen offered a choice of authentication method, OAuth or an application password, and a list of AI clients Novamira already knows how to talk to: Claude Code, Claude Desktop, Claude.ai, ChatGPT, Codex, Cursor, VS Code, GitHub Copilot, and a dozen others.

    OAuth marked Recommended for your setup, Claude Code selected in the Connect Your AI Client list

    I picked Claude Code from that list and ran the command Novamira gave me:

    claude mcp add novamira-staging2-cartrul --transport http https://staging2.cartrules.com/wp-json/mcp/novamira-oauth
    Claude Code confirming the MCP server was added

    A quick OAuth sign-in in the browser, and that was it. Claude Code was now talking directly to my WordPress site through Novamira’s MCP server, not just reading files on my laptop.

    That moment is the whole story of this post. For the first time, I wasn’t copying code between a chat window and my editor. I described what I wanted, and the AI built it on the actual site.

    Watching the homepage build itself

    The first prompt asked for a homepage that explained what Cart Rules does: small WooCommerce plugins that stop the wrong products, quantities, and categories from reaching checkout.

    The first pass back was plain, just the basic theme header and the headline sitting on a bare page, no styling to speak of.

    First pass: headline and rule examples on the default theme background

    A couple more prompts later, it had turned into a real homepage. A dark hero section with “Control exactly what goes in the cart” as the headline, a short line explaining the idea, a “See the plugins” button, and a panel showing example rules like “Max qty: 1” and “One category per order”.

    Below that, a “Why Cart Rules exists” section explaining the actual problem, a “Pick your plugin” section with pricing cards, and a “How it works” list in three plain steps:

    Finished staging homepage, full page

    It read like something I’d have written myself, just faster, and while I was doing other things.

    The parts that still needed me

    A few prompts got me most of the way there, not all the way. The plugin cards still carried generic placeholder icons instead of real product images, and the button blue wasn’t the actual CartRules brand color.

    I came back to Claude Code and asked to swap in the real logo and images and fix the accent colors to match the brand I’d already built out.

    While Novamira worked through that revision, it opened a “Block Editor Queue” browser tab of its own, using the real Gutenberg editor in the background to validate and save the block changes safely, and asked me to leave that tab open until the session finished.

    Novamira's Block Editor Queue working on queued Gutenberg changes

    None of that took long, and none of it changed how I feel about the process. Getting a homepage from nothing to nearly done in a few minutes, then spending a bit more time on brand details I care about, still beats writing every section by hand from a blank page!

    The final result

    What’s live on cartrules.com today has moved on from the screenshots above. The headline now reads “Take control of your WooCommerce cart” instead of the first version, the plugin cards show the real products instead of placeholder icons, and there’s a proper “Why CartRules exists” section with my own photo and story.

    Some of that came from more prompts, some I wrote and placed myself.

    cartrules live homepage final

    That’s the part a screenshot from one afternoon can’t capture: a homepage isn’t finished when the first version looks good, it’s finished when you’ve looked at it for a few weeks and kept fixing the small things.

    Novamira got me a working page in minutes. Getting from there to what’s live now still took the usual rounds of “actually, let’s change this too”.

    The honest verdict

    I’m not going to pretend an AI built cartrules.com on its own. I picked the platform, wrote the prompts, reviewed every change before it went live, and finished the branding myself.

    What changed is where most of the time went. Instead of hours on markup and layout, I spent that time on the words and the details that actually needed my judgment.

    There’s something fitting about building CartRules this way. The plugin itself is about giving store owners control over exactly what goes in the cart.

    Working with Novamira on staging, reviewing each change before trusting it, is the same idea applied to my own site: control over what an AI is allowed to touch, and a clear line for when I step back in.

  • How CartRules Sells Plugins With Kestrel’s License Manager + Constellation

    How CartRules Sells Plugins With Kestrel’s License Manager + Constellation

    CartRules is the newest thing I’m building: a spin-off of Business Bloomer focused entirely on one niche: WooCommerce… cart rules (you saw it coming!).

    Being brand new, every decision about how it runs is still being made from scratch, including how the premium plugins get delivered and get sold. For CartRules One in Cart PRO, and every plugin that follows it, I needed a stack that solved both.

    This post is the case study behind that decision: why API & License Manager for WooCommerce and Constellation WooCommerce Memberships & Subscriptions, both built by Kestrel, turned out to be the combination that worked, and not by accident 🙂

    If you’re selling WooCommerce plugins and wrestling with the same two problems, the rest of this post walks through exactly how to set it up.

    (more…)
  • The Free Plugins Finally Point Somewhere

    The Free Plugins Finally Point Somewhere

    The whole reason I started building free CartRules plugins was to eventually point people toward a paid one. That part never actually existed until this week!

    One in Cart Pro has been sitting half-finished for a while: a real plugin, but with no licensing, no tests, and nothing tying it back to the free plugins. This week I finally closed that loop, on the plugin itself and on the whole site around it.

    Here’s what shipped, and what I’m actually planning to do with it now that it’s real.

    (more…)
  • From One .Org Plugin to Two

    From One .Org Plugin to Two

    My first-ever WordPress.org plugin just got approved!

    A few minutes later, I’d already built and submitted a second one, mostly by copying the first and swapping a few bits: one category becomes one shipping class, same mechanic, different rule.

    Building the second one also surfaced a bug the first one couldn’t show on its own, a settings conflict that only appears once two CartRules plugins run side by side. Fixed it in both.

    CartRules is starting to feel less like a single plugin and more like a small, growing family of them. Plugin two is now sitting in the WordPress.org review queue.

    Here’s what happened today.

    (more…)
  • Naming My First WordPress.org Plugin

    Naming My First WordPress.org Plugin

    A few days ago I wrote about how I landed on the name CartRules for my new plugin business.

    What I didn’t expect was that naming trouble wasn’t over! I had my first free plugin ready to submit to WordPress.org, and I assumed that part would be the easy bit.

    Well, it wasn’t. WordPress.org rejected the plugin twice, for two completely different reasons, before it finally got through.

    This post walks through what actually happened: the two rejections, the emails that got things moving again, and everything that goes into renaming a plugin once it’s already partway through the review process. If you’re planning to submit a plugin to the .org repository yourself, some of this might save you a round trip or two.

    (more…)
  • Building “CartRules” in Public

    Building “CartRules” in Public

    I’m building a new WooCommerce plugin business, and I’m doing it out in the open. Every real step, including the boring ones, gets written down here.

    I’m at the beach for most of this summer, so there’s no fixed schedule and no daily promise, but I’ll do my best whenever there’s something worth sharing.

    The first real decision was the brand name (and domain name). I thought that part would take ages, but thanks to… AI, it ended up shaping how I think about the whole project. Here’s what happened and why I landed on CartRules.

    (more…)