Skip to main content
Aikeedo installs plugins from a ZIP archive uploaded in the admin panel, or from any Composer repository. Both paths run Composer, so packaging is mostly about producing a clean, correctly versioned archive.

Archive layout

composer.json must sit at the root of the archive, not inside a wrapper folder:
Leave out development files: .git, node_modules, tests, build configuration, .env files and editor settings. Include build output if your plugin ships assets.

Versioning

  • Use semantic versioning in version, and raise it for every release. Installing from an archive runs composer require <name>:<version>, so a stale version installs the wrong code.
  • Record the Aikeedo versions you support in extra.compatibility, for example ">=5.0.0". Nothing enforces it, so check the version yourself if your code depends on a specific release.
  • Ship with extra.status set to inactive. Aikeedo manages that field afterwards.
composer.json

Dependencies

Declare third-party libraries in require. They’re installed into the installation’s own vendor/ directory when the plugin is installed, so don’t vendor them into your archive.
Your constraints are resolved against everything Aikeedo already requires. A narrow constraint on a shared library can make installation fail. Keep ranges wide, and prefer libraries the application already ships, such as psr/http-client, firebase/php-jwt, league/flysystem and ramsey/uuid.

Install paths

Installing over an existing copy backs the old directory up first and restores it if anything fails.

Ship a README

Customers read this before they read your code. Cover:
  • What the plugin does, and which Aikeedo versions it supports
  • Installation steps, including anything to configure first, such as API keys
  • Where its settings live in the admin panel
  • Required third-party accounts, and any cost involved
  • Whether it needs cron, outbound network access, or a webhook URL the provider must reach
  • A changelog

Release checklist

version is raised, and the changelog is updated.
composer.json sits at the archive root, and the archive has no wrapper folder.
Development files are excluded, and build output is included.
Translation catalogs are up to date and included.
A clean installation test passes: upload, activate, configure, use, deactivate, uninstall.
No errors in var/log with DEBUG=true.
Secrets, license keys and customer data are nowhere in the archive.
Nothing in the core is modified, so an Aikeedo update can’t overwrite your work or break it.
Any public route follows the security checklist.

Distribution options

Whatever you choose, keep older archives available: customers on an older Aikeedo release may need the matching version of your plugin.

Get your add-on listed

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