Skip to content

Latest commit

 

History

History
executable file
·
207 lines (131 loc) · 5.56 KB

File metadata and controls

executable file
·
207 lines (131 loc) · 5.56 KB

OAuth2 Passport Server

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.


What Makes This Different?

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.


Elymod Framework

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.


Core Features

OAuth2 & OpenID Connect

  • Full OAuth2 support via Laravel Passport
  • OpenID Connect compatible
  • Secure token issuance and validation
  • Ideal for first-party and third-party applications

Advanced Scope System

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

Modular Extensibility

  • Add features via modules
  • Enable or disable functionality without touching the core
  • Extend authentication, authorization, APIs, dashboards, or integrations

Creating Your First Module

1. Create a Module

php artisan module:make shop

This will generate a new module inside:

third-party/shop

Each module is treated as an independent package.


2. Module Access (Routing)

Modules are automatically exposed using their prefix name.

Example:

https://www.site.dev/shop

No additional route registration is required.


3. Database Migrations

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.


Why This Architecture Matters

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.


Resources


Deployment Guides

Developer Guides


📄 License

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.


Community & Contact

This project is part of the ElyerrLabs ecosystem.

If you are interested in contributing, building modules, or helping grow the ecosystem, you are welcome.