Skip to content

Themes

Your storefront, in your stack.

Shopify has thousands of themes, all written in Liquid. WooCommerce and PrestaShop tie you to PHP. Here a theme is just a website that talks to the store over HTTP — so the same panel installs and customises one written in Next and one written in Astro, without knowing or caring which is which.

Eight stacks the platform knows how to run.

Adding a ninth is a row in a table, not a change to the contract.

Said plainly

Eight stacks can be run. Real themes exist in two of them today. The engine supports the other six; nobody has shipped a theme in them yet, and pretending otherwise would be found out on the first click.

The two that exist.

  • Growshop Premium

    Next.js 15

    Growshop, CBD, high-risk retail

    The reference theme for the contract. Age gate, guest checkout, and bank transfer, cash on delivery and Bizum as the default payment methods — a deliberate choice for a sector the card gateways keep dropping.

    13
    pages
    8
    blocks
    46
    settings
    44
    tokens
  • Dulce Obrador

    Vite + React

    Artisan bakery and pastry

    Dark luxury, with a made-to-order cake configurator and an allergen table that follows EU food information rules. Ships with 24 demo products, so it can be shown before the shop behind it exists.

    16
    pages
    7
    blocks
    34
    settings
    Home page of the Dulce Obrador demo storeOpen the live demo

Customising never edits the theme.

Your colours, your copy and your settings live in a separate file that the panel writes. That is the whole reason updating a theme cannot wipe your brand — which is exactly what breaks anywhere “customise” means editing the theme’s own files.

Installing a theme is running someone else’s code on your server.

So it happens in two steps. You upload the file, and before anything runs you get a report: which theme it is, whether it is signed and by whom, the exact commands that would run, and every external domain it would talk to. It sits in quarantine until you say yes.

  • The system decides the commands

    A theme's manifest can suggest how to build it, but what actually runs comes from a table inside the platform. Without that rule, installing a theme would mean running whatever its author felt like.

  • Installed with lifecycle scripts off

    In all five package managers. It is the counter to the classic attack: a postinstall hidden three dependencies deep.

  • Read before it runs

    Six signals — spawning processes, eval, long base64, writing files, reaching for secrets in the environment, and any external domain the theme did not declare.

  • Confined by design

    A theme receives exactly three values: the store address, the publishable key that already travels to every visitor's browser, and its own URL. The validator refuses any theme asking for a variable that looks like database or payment access.

Honest caveat: this is enough for themes you wrote or bought from someone you know. Running arbitrary themes from strangers would need sandboxed builds — locked-down containers, restricted network, CPU and memory limits — and that is not built yet.

The contract is written down, and it is short.