:name is a collaboration of Flarum extension developers, who want to share their experiences to help others at building Flarum extensions and improve the documentation from an outsider viewpoint.
In order to provide quality extensions and snippets, we follow this checklist as closely as possible;
- Namespaces consist of the :name vendor and a unique package name prefixed by flarum:
:name/flarum-package-name
. - Packages are hosted on Github and registered on Packagist, making it easily available through Composer.
- Our coding style prefers PSR-2 and requires proper documentation of the code using PHPDoc.
- Use semantic versioning for your package.
- The directory layout is combining PSR-4 with some additions:
assets/
: files that need to be publicly available after installation.js/
: frontend (javascript) files used in your extension, compiled using gulp.js/admin
: in case you have admin interface changes.js/forum
: in case you have forum interface changes.
locale/
: the translation files for your extension.migrations/
: the extension database mutations.src/
: the php files for your package, using the PSR-4 standard.tests/
: unit tests using PHPUnit to validate the functionality of your code.bootstrap.php
: is used to hook into Flarum.changelog.md
: a history of the recent changes to the package per version.license.md
: the MIT license with your name at the top.readme.md
: explain what the package is about, how to install, use and provide some useful links, see the example of the PHP league.
We prefer to have as few rules as possible, if in doubt talk to the other group members;
- Use branches and pull requests to contribute to packages of others in the group.
- Adding an Extension allows other members of :name to change it.
- Proposed Extensions need a majority vote of the group.
Apart from being able to collaborate on any Extension using the Github contributing ecosystem, we do allow developers to join our group. To keep communication practical and organization flat, we require a majority of the votes from the :name group members.
You can reach members of the :name group on Gitter chat.