Lignes directrices

Lignes directrices de soumission

Cette page documente le contrat que tout thème et plugin de cette marketplace s'engage à respecter. Ce n'est pas une barrière — c'est un petit ensemble de pratiques qui maintiennent les installations prévisibles et les désinstallations propres.

Checklist plugin

  • Un manifest.json valide avec les champs id, name, version, apiVersion et entry.
  • Le bundle doit externaliser react, react-dom, react-i18next et @flexweg/cms-runtime — ne dupliquez jamais React dans votre build.
  • Page de réglages enregistrée via manifest.settings ; la page est montée à /admin/#/settings/plugin/<id>.
  • Bundles i18n via manifest.i18n = { en, fr, … }. L'anglais est requis ; les autres locales sont encouragées.
  • Si le plugin écrit sur Flexweg, routez chaque écriture par les exports du dispatcher (uploadFile, deleteFile, …) pour que les toasts d'erreur standards s'appliquent.

Checklist thème

  • Six templates exportés depuis le manifest : base, home, single, category, author, notFound.
  • BaseLayout DOIT émettre les deux sentinelles : <meta name="x-cms-head-extra" /> dans <head> et <script type="application/x-cms-body-end" /> avant </body>. Les plugins y injectent du contenu head + body.
  • Les templates acceptent uniquement des props sérialisables — pas de lectures Firestore, pas de contexte admin.
  • Support multilingue : lisez currentLocale dans BaseLayout, utilisez site.homePath pour le lien de marque, préfixez les URLs internes en dur avec la locale, et choisissez les libellés de menu par langue depuis ResolvedMenuItem.labels.

Nommage + licence

  • Utilisez un id kebab-case unique (par ex. acme-newsletter) — l'id est immutable après installation.
  • Licence MIT (ou toute licence permissive validée OSI).
  • Ajoutez un README.md au bundle avec les notes d'installation + configuration — les admins le lisent depuis la page Plugins.