konekt/concord
Laravel extension for building modular applications using conventions on top of service providers. Manage in-app and external modules with isolation-friendly structure, version compatibility across Laravel releases, and tooling around module registration and organization.
Boxes are optional parts of the ecosystem. You can completely omit them if you see no benefits.
Boxes are actually modules too, thus they're also built around Laravel Service Providers.
Boxes are composed from modules (they encapsulate them), and define how these modules cooperate.
Think of boxes as re-usable application boilerplates, that are ready to be used and customized. Another approach is to consider boxes as "glue" modules: they incorporate several independent modules and define the relationship between them.
Boxes are almost-ready applications, but they only live within the actual Laravel application.
Applications can either originate from a single box, or from multiple boxes, the same way as apps can incorporate arbitrary number of modules.
Say your organization has developed the following modules:
As an example you can create two separate boxes of these:
Your company may provide a standalone Invoicing solution, where the boilerplate "glue" logic is kept in the Invoicing box. For specific clients you can do the customization within their own applications built on top of the Invoicing Box.
For other clients you can implement ecommerce apps on the top of the Webshop Box. Any improvement that's not client specific goes back to the box and the underlying modules. You can keep your client specific applications up to date with the box, since boxes are separate composer packages. It's something like updating WordPress while keeping all the client stuff in the theme.
What you can also do is to create an application that contains both boxes, and from the client's perspective they constitute a single system.
box-src/
Providers/
|-- ModuleServiceProvider.php
resources/
|-- manifest.php
box-src/
Console/
Exceptions/
Helpers/
Http/
|-- Controllers/
|-- Middleware/
|-- Requests/
|-- Resources/
Jobs/
Listeners/
Models/
Providers/
|-- ModuleServiceProvider.php
|-- EventServiceProvider.php
Services/
Tests/
|-- Feature
|-- Unit
resources/
|-- assets/
|-- config/
|-- box.php
|-- lang/
|-- routes/
|-- api.php
|-- web.php
|-- views/
|-- manifest.php
Next: Creating Boxes »
How can I help you explore Laravel packages today?