A modular OAuth2 & OpenID Connect authorization platform designed for modern, scalable systems. This project is not just an authorization server, but the core backend of a modular ecosystem powered by Elymod, a lightweight framework built specifically for creating independent, installable modules.
This repository acts as the central authorization backend, while features, services, and extensions are delivered through modules.
Unlike traditional Laravel module packages that simply reorganize a monolithic application into folders, this system was designed from day one to be truly modular.
Key differences:
-
Modules are independent packages, not just directories
-
Each module can have its own:
- Controllers
- Routes
- Migrations
- Seeders
- Assets
- Composer dependencies
-
The core remains clean and minimal
-
Features are added by installing modules, not modifying the core
This approach avoids the typical “modular monolith” problem and enables long-term scalability.
This system is built on Elymod, a lightweight modular framework composed of:
-
Laravel Runtime – a minimal Laravel kernel exposing only what modules need
-
Elymod – the modular layer that manages:
- Module discovery
- Module bootstrapping
- Asset publishing
- Command registration
- Database integration
Together, they form a focused framework for building modular backends, not general-purpose applications.
- Full OAuth2 support via Laravel Passport
- OpenID Connect compatible
- Secure token issuance and validation
- Ideal for first-party and third-party applications
Instead of basic role-based systems, this platform introduces a structured scope model:
- Groups – logical domain separation
- Services – application or API-level access
- Roles – fine-grained permissions
This model allows:
- Better separation of concerns
- Cleaner authorization rules
- Easier integration with external applications
- Add features via modules
- Enable or disable functionality without touching the core
- Extend authentication, authorization, APIs, dashboards, or integrations
php artisan module:make shopThis will generate a new module inside:
third-party/shop
Each module is treated as an independent package.
Modules are automatically exposed using their prefix name.
Example:
https://www.site.dev/shop
No additional route registration is required.
There is no separate migration command per module.
When a module is active:
php artisan migrate- Executes migrations from the core
- Executes migrations from all active modules
By default, all module tables are prefixed with the module name, preventing collisions and improving clarity.
This system is designed to:
- Scale without becoming unmaintainable
- Encourage clean boundaries between features
- Support internal and third-party integrations
- Act as a foundation for an Application Store concept
Future goal:
A built-in App Store that automatically discovers and installs modules from a central repository.
- Documentation
- API Documentation
- Echo Server (coming soon)
- Echo Client (coming soon)
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
You are free to use, study, modify, and redistribute this software under the terms of the AGPL-3.0. If you run or offer this software as a network service, you must provide access to the complete corresponding source code, including any modifications.
See the LICENSE file for full license details.
This project is part of the ElyerrLabs ecosystem.
- Telegram: https://t.me/elyerr
If you are interested in contributing, building modules, or helping grow the ecosystem, you are welcome.