Skip to content
Docs
WebsiteDownload
Plugins

Publishing in the store

Keep your plugin on GitHub and Packagist as usual. The store fetches each release, a person reviews it, and every site gets it signed.

On this page

The store on lettern.org lists the project's own plugins and, by invitation, other people's. You keep your plugin where any Composer package lives; the store takes each release from there, reviews it and hosts it. Plugins in the store are free to install for now.

Apply to publish with a short form. Once you're invited, your plugin is added by its Packagist name.

#Before you apply

Your plugin is a Composer package like your first plugin, with:

  • "type": "cms-plugin" and a require on letterncms/cms with the versions it works with.
  • Its code in your own namespace. Only the project's plugins may use Cms\.
  • A CHANGELOG.md with a heading per version, such as ## 1.2.0: what you write under it is what sites show as the release's notes.
  • A public repository on GitHub and the package on Packagist, so composer require vendor/plugin works.

#How a release reaches sites

  1. Tag it. Push a tag such as v1.2.0 and Packagist picks it up, as it does for any package.
  2. The store fetches it. About once an hour the store asks Packagist for new stable tags and downloads each one's zip once. It keeps one folder named after the package, writes the version into composer.json, and leaves out dotfiles such as .github.
  3. A person reviews it. The version waits, unseen by any site, until it's approved. The review sees the code and what it may use: the network, the file system, other processes.
  4. It's signed and listed. Approved, the version is signed with the store's key and added to the catalog. Every site that has your plugin is offered the update in Plugins โ†’ Updates, with your notes.

A rejected version stays out of the store, and its number stays used: fix it and tag the next one. A version number is never used twice, and never goes backwards within a major version.

Sites download your plugin from the store, not from GitHub: what they get is exactly what was reviewed, even if the tag moves later.

#Your listing

Your listing has a title, a one-sentence summary, an icon, up to three categories, at least two screenshots, a description, what it needs beyond the CMS (an account elsewhere, say), and links to your documentation and code. The CMS and PHP versions come from your composer.json. Once you're invited, you send them to us and we keep them up to date with you.

#Installing it

People install your plugin from Plugins โ†’ Store in their admin, with one click. A site run with Composer adds the store as a repository and installs it like any package:

Terminal
composer config repositories.store composer https://lettern.org/composer
composer require vendor/plugin