Skip to main content
A theme ships as a ZIP whose root holds composer.json. The starter kit’s scripts produce that for you.

Build commands

The release name comes from the package name, the latest git tag and the short commit hash, so tag your releases before running it.

What’s inside

theme.zip has no wrapper folder. Its root is the package:
The release archive adds the contents of release/, normally an installation README, alongside theme.zip.

Before you package

version in static/composer.json is raised.
extra.public lists assets and .vite, so the built files reach the web root.
Translation catalogs are extracted and up to date.
The entry class namespace matches the PSR-4 map, if the theme ships PHP.
THEME_ASSETS_SERVER is unset in the installation you tested against, so you tested the built assets.
Nothing private is in static/: no .env, keys or customer data.
The theme is renamed if it started as a copy, so an update can’t overwrite it.

Installing a packaged theme

1

Upload

In the admin panel, go to Themes → Install theme and upload theme.zip. The archive is validated, stored, and installed with Composer.
2

Publish

Find the theme in the list and select Publish. Preview it first at /preview?theme=vendor/name.
3

Verify

Load the site with caching on, and check that CSS, JavaScript, images and translations all work.
Installing over an existing copy backs up the previous version first, and restores it if the install fails.

Versioning

  • Use semantic versioning, and raise version for every release: the installer runs composer require <name>:<version>, so a stale version installs the wrong code.
  • Note which Aikeedo versions the theme supports in your README. A theme that reads a newer template object won’t work on an older installation.
  • Keep previous archives available for customers who haven’t updated Aikeedo yet.

Writing the README

Ship one in release/, and cover:
  • What the theme looks like, and which Aikeedo versions it supports
  • How to install and publish it
  • Which admin settings it reads, such as brand logos, colors, policies and social links
  • Which sections can be turned on and off, and how
  • How to translate it
  • A changelog

Distribution

Get your add-on listed

We’re looking for community-built themes to list on aikeedo.com, linking to your own page. See what to send us.

Updating a released theme

A customer updates by uploading the newer archive, which replaces the package and republishes its assets. Two things to keep in mind:
  • Customers may have edited your templates. Say so in the README: changes made inside extra/extensions/ are replaced on update.
  • Don’t rename template files casually. A customer who overrode sections/hero.twig loses the override when it disappears.