composer.json. The starter kit’s scripts produce that for you.
Build commands
What’s inside
theme.zip has no wrapper folder. Its root is the package:
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.
Versioning
- Use semantic versioning, and raise
versionfor every release: the installer runscomposer 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 inrelease/, 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.twigloses the override when it disappears.