From 7f59e62244f88202f361267b471e707a57b49d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danijel=20Gali=C4=87?= Date: Tue, 20 Oct 2026 09:55:02 +0200 Subject: [PATCH 1/7] Add badges and improve README for develop branch - Added badges for PHPStan, PHPUnit, and Codecov to README. - Streamlined and restructured README content for clarity and focus. - Expanded description of repository purpose and modular architecture principles. - Introduced explicit guidelines for `develop` branch usage, stability guarantees, and composer testing instructions. - Clarified branching strategy and audience targeting for advanced contributors and testers. --- README.md | 99 +++++++++++++++++++++---------------------------------- 1 file changed, 37 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index 3d710fe..c17249c 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,10 @@ /> +[![PHPStan](https://github.com/The-FireHub-Project/Module/actions/workflows/PHPStan.yml/badge.svg?branch=develop)](https://github.com/The-FireHub-Project/Module/actions/workflows/PHPStan.yml) +[![PHPUnit](https://github.com/The-FireHub-Project/Module/actions/workflows/PHPUnit.yml/badge.svg?branch=develop)](https://github.com/The-FireHub-Project/Module/actions/workflows/PHPUnit.yml) +[![Codecov](https://codecov.io/gh/The-FireHub-Project/Module/branch/develop/graph/badge.svg?token=XW2YEONF51)](https://app.codecov.io/gh/The-FireHub-Project/Module/tree/develop) +

-FireHub Module provides modular application composition and lifecycle integration for The FireHub Project. It enables applications to organize related functionality into cohesive, reusable modules while maintaining clear architectural boundaries and separation of concerns. +Provides the dependency injection and service management foundation of the FireHub ecosystem. This repository contains the runtime components responsible for service registration, dependency resolution, instance creation, and service lifetime management, enabling consistent and loosely coupled application architectures. -Built around the contracts defined by FireHub Core, FireHub Module provides the mechanisms for module registration, dependency coordination, initialization ordering, and integration with the application lifecycle. Modules can contribute services, configuration, and lifecycle behavior without introducing independent application runtimes. +FireHub Module is built around the contracts defined by FireHub Core and provides a modular implementation of the Inversion of Control principle. It separates service definitions from their runtime resolution, allowing applications and framework components to declare dependencies without managing their construction directly. -FireHub Module serves as an application composition and orchestration component within the FireHub ecosystem. It supports Clean Architecture and Domain-Driven Design by enabling applications to assemble independent functional units while preserving centralized lifecycle management through FireHub Application and execution infrastructure through FireHub Kernel. +This repository serves as a foundational runtime component for FireHub applications, adapters, and capabilities, supporting clean architecture, testability, extensibility, and predictable dependency management. --- -## FireHub Icon Repository Purpose - -FireHub Module is the modular application composition and orchestration component of the FireHub ecosystem. - -Built on the contracts provided by FireHub Core, it supplies the mechanisms required to organize, register, coordinate, and integrate functional modules within FireHub applications. - -The purpose of this repository is to provide a consistent modular architecture while preserving separation of concerns between application composition, dependency management, and runtime execution. +## FireHub Icon Development Branch -The Module architecture is designed to support: +⚠️ **This is the `develop` branch** -* Modular organization of application functionality -* Registration and management of application modules -* Module dependency declaration and resolution -* Dependency ordering and circular dependency detection -* Integration with application initialization and disposal -* Module-specific service registration and configuration -* Shared application dependency injection infrastructure -* Reusable and independently developed functional modules -* Predictable module initialization and disposal ordering -* Compatibility with Clean Architecture and Domain-Driven Design +- Unstable +- APIs may change without notice +- Not intended for production use -FireHub Module follows the architectural principles of The FireHub Project by separating responsibilities between module composition, application lifecycle orchestration, dependency injection, and runtime execution. +## FireHub Icon Branch Purpose -Modules do not own independent application kernels or lifecycle state machines. Instead, they participate in the lifecycle of their hosting application through well-defined initialization and disposal mechanisms. +The `develop` branch is the **primary integration branch** for all ongoing development. -The Module component does not control application execution, dependency injection scopes, or kernel lifecycle transitions. These responsibilities remain with FireHub Application, FireHub Container, and FireHub Kernel. +It serves as the staging area where: +- Feature branches are merged +- Bug fixes are integrated +- Experimental work is stabilized +- Code is prepared for upcoming releases -This separation enables applications to organize functionality into modular units without introducing unnecessary runtime complexity or coupling between modules and execution infrastructure. +All **release branches** are created **from `develop`**. -## FireHub Icon Security +## Stability Guarantee -For security reporting and guidelines, please refer to our [SECURITY.md](https://github.com/The-FireHub-Project/.github/blob/master/.github/SECURITY.md) file. +❌ No backward compatibility guarantee +❌ APIs may change without notice +❌ Behavior may be incomplete or inconsistent +❌ Breaking changes are expected -## FireHub Icon Community +This branch is intended **only for contributors and advanced testers**. -![GitHub watchers](https://img.shields.io/github/watchers/The-FireHub-Project/Module?style=social) -![GitHub Repo stars](https://img.shields.io/github/stars/The-FireHub-Project/Module?style=social) -![GitHub forks](https://img.shields.io/github/forks/The-FireHub-Project/Module?style=social) - -- Be sure to review the [Code of Conduct](https://github.com/The-FireHub-Project/.github/blob/master/.github/CODE_OF_CONDUCT.md). -- Read a [Contributing](https://github.com/The-FireHub-Project/.github/blob/master/.github/CONTRIBUTING.md) file to see how you can contribute to this project. -- Read our [Security policy](https://github.com/The-FireHub-Project/.github/blob/master/.github/SECURITY.md) file to see how you can report a vulnerability. -- Review the project [Governance model](https://github.com/The-FireHub-Project/.github/blob/master/.github/GOVERNANCE.md), including roles, decision-making, RFC process, and releases. - -## FireHub Icon Support - -

- - GitHub in-progress issues - - GitHub total issues - - GitHub opened pull requests -

+## FireHub Icon Composer Usage (Not Recommended) -For help with FireHub products, please refer to the following resources: +For internal testing only: -- **General questions & discussions**: [GitHub Discussions](https://github.com/orgs/The-FireHub-Project/discussions) -- **Bug reports & issues**: [Support](https://github.com/The-FireHub-Project/Module/issues) -- **Documentation & guides**: [FireHub Docs](https://the-firehub-project.github.io) -- **Commercial support** (Pro/Enterprise): contact your account manager +```json +{ + "require": { + "the-firehub-project/module": "dev-develop" + } +} +``` +⚠️ Never use dev-develop in production. ## FireHub Icon Authors and Contributors @@ -159,4 +134,4 @@ Architecture guidelines, design principles, and ecosystem documentation are avai This software is licensed under the Apache-2.0 License. -For more details, read the full license [here](./LICENSE). +For more details, read the full license [here](./LICENSE). \ No newline at end of file From 4e926f041abcd1b8a61d2f606e80a465f6540340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danijel=20Gali=C4=87?= Date: Tue, 20 Oct 2026 10:07:05 +0200 Subject: [PATCH 2/7] Update `composer.json` homepage URL for Module library - Changed the `homepage` field in `composer.json` from `https://the-firehub-project.github.io/kernel` to `https://the-firehub-project.github.io/module` for accuracy and consistency with the project structure. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 9e918c9..7ca7fd3 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "description": "Modular application composition and lifecycle integration for The FireHub Project.", "type": "library", "keywords": ["php", "framework", "firehub", "application-modules", "modular-architecture", "module-system"], - "homepage": "https://the-firehub-project.github.io/kernel", + "homepage": "https://the-firehub-project.github.io/module", "license": "Apache-2.0", "require": { "php": "^8.5", From f46a49511b0b8121b0cdcf388357445573e22fc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danijel=20Gali=C4=87?= Date: Tue, 20 Oct 2026 10:49:55 +0200 Subject: [PATCH 3/7] Add `Manager` class and custom exceptions for module management - Introduced `Manager` class to handle module registration, retrieval, and dependency resolution via topological sorting. - Added custom exceptions specific to module operations: - `CircularModuleDependencyException` - `ModuleAlreadyRegisteredException` - `ModuleDependencyNotFoundException` - `ModuleNotFoundException` - Implemented robust functionality for dependency order resolution and circular dependency detection. - Designed for extensibility to support modular application architectures. --- .../CircularModuleDependencyException.php | 28 +++ .../ModuleAlreadyRegisteredException.php | 26 +++ .../ModuleDependencyNotFoundException.php | 28 +++ src/Exception/ModuleNotFoundException.php | 26 +++ src/Manager.php | 204 ++++++++++++++++++ 5 files changed, 312 insertions(+) create mode 100644 src/Exception/CircularModuleDependencyException.php create mode 100644 src/Exception/ModuleAlreadyRegisteredException.php create mode 100644 src/Exception/ModuleDependencyNotFoundException.php create mode 100644 src/Exception/ModuleNotFoundException.php create mode 100644 src/Manager.php diff --git a/src/Exception/CircularModuleDependencyException.php b/src/Exception/CircularModuleDependencyException.php new file mode 100644 index 0000000..e4df5a9 --- /dev/null +++ b/src/Exception/CircularModuleDependencyException.php @@ -0,0 +1,28 @@ + + * @copyright 2026-present The FireHub Project - All rights reserved + * @license https://opensource.org/license/Apache-2-0 Apache License, Version 2.0 + * + * @php-version >=8.1 + * @package Module + */ + +namespace FireHub\Module\Exception; + +use FireHub\Core\Exception\RuntimeException; + +/** + * ### Circular module dependency exception + * + * Thrown when a circular dependency is detected between registered application modules. + * @since 1.0.0 + */ +final class CircularModuleDependencyException extends RuntimeException { + + protected const string DEFAULT_MESSAGE = 'Circular module dependency detected'; + +} \ No newline at end of file diff --git a/src/Exception/ModuleAlreadyRegisteredException.php b/src/Exception/ModuleAlreadyRegisteredException.php new file mode 100644 index 0000000..6cdab93 --- /dev/null +++ b/src/Exception/ModuleAlreadyRegisteredException.php @@ -0,0 +1,26 @@ + + * @copyright 2026-present The FireHub Project - All rights reserved + * @license https://opensource.org/license/Apache-2-0 Apache License, Version 2.0 + * + * @php-version >=8.1 + * @package Module + */ + +namespace FireHub\Module\Exception; + +use FireHub\Core\Exception\RuntimeException; + +/** + * ### Module already registered exception + * @since 1.0.0 + */ +final class ModuleAlreadyRegisteredException extends RuntimeException { + + protected const string DEFAULT_MESSAGE = 'The module identifier is already registered'; + +} \ No newline at end of file diff --git a/src/Exception/ModuleDependencyNotFoundException.php b/src/Exception/ModuleDependencyNotFoundException.php new file mode 100644 index 0000000..bdbd0ff --- /dev/null +++ b/src/Exception/ModuleDependencyNotFoundException.php @@ -0,0 +1,28 @@ + + * @copyright 2026-present The FireHub Project - All rights reserved + * @license https://opensource.org/license/Apache-2-0 Apache License, Version 2.0 + * + * @php-version >=8.1 + * @package Module + */ + +namespace FireHub\Module\Exception; + +use FireHub\Core\Exception\RuntimeException; + +/** + * ### Required module dependency not found + * + * Thrown when a module declares a dependency that has not been registered in the module manager. + * @since 1.0.0 + */ +final class ModuleDependencyNotFoundException extends RuntimeException { + + protected const string DEFAULT_MESSAGE = 'The module dependency was not found'; + +} \ No newline at end of file diff --git a/src/Exception/ModuleNotFoundException.php b/src/Exception/ModuleNotFoundException.php new file mode 100644 index 0000000..91623b7 --- /dev/null +++ b/src/Exception/ModuleNotFoundException.php @@ -0,0 +1,26 @@ + + * @copyright 2026-present The FireHub Project - All rights reserved + * @license https://opensource.org/license/Apache-2-0 Apache License, Version 2.0 + * + * @php-version >=8.1 + * @package Module + */ + +namespace FireHub\Module\Exception; + +use FireHub\Core\Exception\Runtime\OutOfBoundsException; + +/** + * ### Module was not found exception + * @since 1.0.0 + */ +final class ModuleNotFoundException extends OutOfBoundsException { + + protected const string DEFAULT_MESSAGE = 'The module identifier was not found'; + +} \ No newline at end of file diff --git a/src/Manager.php b/src/Manager.php new file mode 100644 index 0000000..2433b7e --- /dev/null +++ b/src/Manager.php @@ -0,0 +1,204 @@ + + * @copyright 2026-present The FireHub Project - All rights reserved + * @license https://opensource.org/license/Apache-2-0 Apache License, Version 2.0 + * + * @php-version >8.5 + * @package Module + */ + +namespace FireHub\Module; + +use FireHub\Core\Boundary\Module; +use FireHub\Core\Boundary\Module\Dependencies; +use FireHub\Module\Exception\ { + CircularModuleDependencyException, ModuleAlreadyRegisteredException, ModuleDependencyNotFoundException, + ModuleNotFoundException +}; + +/** + * ### Manages registered application modules + * + * Maintains an ordered registry of modules without controlling application execution or introducing an independent + * module lifecycle. + * @since 1.0.0 + */ +final class Manager { + + /** + * ### Registered modules + * @var array, \FireHub\Core\Boundary\Module> + */ + private array $modules = []; + + /** + * ### Registers a module + * @since 1.0.0 + * + * @param \FireHub\Core\Boundary\Module $module

+ * Module to register. + *

+ * + * @throws \FireHub\Module\Exception\ModuleAlreadyRegisteredException If the module is already registered. + * + * @return self The manager instance. + */ + public function register (Module $module):self { + + $class = $module::class; + + if (isset($this->modules[$class])) + throw new ModuleAlreadyRegisteredException; + + $this->modules[$class] = $module; + + return $this; + + } + + /** + * ### Checks whether a module is registered + * @since 1.0.0 + * + * @param class-string<\FireHub\Core\Boundary\Module> $class

+ * Module class name. + *

+ * + * @return bool True if the module is registered. + */ + public function has (string $class):bool { + + return isset($this->modules[$class]); + + } + + /** + * ### Gets a registered module + * @since 1.0.0 + * + * @param class-string<\FireHub\Core\Boundary\Module> $class

+ * Module class name. + *

+ * + * @throws \FireHub\Module\Exception\ModuleNotFoundException If the module is not registered. + * + * @return \FireHub\Core\Boundary\Module Registered module. + */ + public function get (string $class):Module { + + return $this->modules[$class] + ?? throw new ModuleNotFoundException; + + } + + /** + * ### Gets all registered modules + * @since 1.0.0 + * + * @return array, \FireHub\Core\Boundary\Module> Registered modules. + */ + public function all ():array { + + return $this->modules; + + } + + /** + * ### Gets modules in dependency order + * + * Resolves module dependencies using topological sorting. + * + * Dependencies are placed before the modules that require them. Modules without dependency relationships + * preserve their registration order. + * @since 1.0.0 + * + * @uses \FireHub\Module\Manager::visit() Visits a module dependency graph. + * + * @throws \FireHub\Module\Exception\ModuleDependencyNotFoundException If a required module is not registered. + * @throws \FireHub\Module\Exception\CircularModuleDependencyException If circular dependencies are detected. + * + * @return list<\FireHub\Core\Boundary\Module> Modules in dependency order. + */ + public function ordered ():array { + + /** @var array, int> $states */ + $states = []; + + /** @var list<\FireHub\Core\Boundary\Module> $ordered */ + $ordered = []; + + foreach ($this->modules as $module) + $this->visit($module, $states, $ordered); + + return $ordered; + + } + + /** + * ### Visits a module dependency graph + * + * Performs a depth-first traversal to resolve module ordering and detect circular dependencies. + * @since 1.0.0 + * + * @uses \FireHub\Core\Boundary\Module\Dependencies::dependencies() Gets the module dependencies. + * + * @param \FireHub\Core\Boundary\Module $module

+ * Module to visit. + *

+ * @param array, int> $states

+ * Module visitation states. + *

+ * @param list<\FireHub\Core\Boundary\Module> $ordered

+ * Resolved module order. + *

+ * + * @throws \FireHub\Module\Exception\ModuleDependencyNotFoundException If a required module is not registered. + * @throws \FireHub\Module\Exception\CircularModuleDependencyException If circular dependencies are detected. + * + * @return void + */ + private function visit (Module $module, array &$states, array &$ordered):void { + + $class = $module::class; + + $state = $states[$class] ?? 0; + + if ($state === 2) return; + + if ($state === 1) + throw new CircularModuleDependencyException( + context: [ + 'module' => $class, + ] + ); + + $states[$class] = 1; + + if ($module instanceof Dependencies) { + + foreach ($module->dependencies() as $dependency) { + + if (!isset($this->modules[$dependency])) + throw new ModuleDependencyNotFoundException( + context: [ + 'dependency' => $dependency, + ] + ); + + $this->visit($this->modules[$dependency], $states, $ordered); + + } + + } + + $states[$class] = 2; + + $ordered[] = $module; + + } + +} \ No newline at end of file From 528e88ab60870ad07034af68e76819cfb35d6c9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danijel=20Gali=C4=87?= Date: Tue, 20 Oct 2026 13:53:30 +0200 Subject: [PATCH 4/7] Add `registerServices` method to `Manager` class for module service registration - Introduced `registerServices` method to allow automatic registration of services provided by modules. - Ensures service registration is performed in dependency order before the container is frozen. - Skips modules lacking the `RegistersServices` capability. - Updated imports to include `RegistersServices` and `Registrar` to support the new functionality. - Improved documentation with detailed explanations of the method's usage and behavior. --- src/Manager.php | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/Manager.php b/src/Manager.php index 2433b7e..cde3b6d 100644 --- a/src/Manager.php +++ b/src/Manager.php @@ -14,7 +14,10 @@ namespace FireHub\Module; use FireHub\Core\Boundary\Module; -use FireHub\Core\Boundary\Module\Dependencies; +use FireHub\Core\Boundary\Module\ { + Dependencies, RegistersServices +}; +use FireHub\Core\Boundary\Container\Registrar; use FireHub\Module\Exception\ { CircularModuleDependencyException, ModuleAlreadyRegisteredException, ModuleDependencyNotFoundException, ModuleNotFoundException @@ -138,6 +141,39 @@ public function ordered ():array { } + /** + * ### Registers services provided by modules + * + * Invokes service registration for all registered modules in dependency order. + * + * Modules that do not implement the registration capability are skipped. + * + * Service registration must occur before the container is frozen. + * @since 1.0.0 + * + * @uses \FireHub\Module\Manager::ordered() Gets modules in dependency order. + * @uses \FireHub\Core\Boundary\Module\RegistersServices::register() To register services. + * + * @param \FireHub\Core\Boundary\Container\Registrar $registrar

+ * Service registrar. + *

+ * + * @throws \FireHub\Module\Exception\ModuleDependencyNotFoundException If a required module is not registered. + * @throws \FireHub\Module\Exception\CircularModuleDependencyException If circular dependencies are detected. + * + * @return void + */ + public function registerServices (Registrar $registrar):void { + + foreach ($this->ordered() as $module) { + + if ($module instanceof RegistersServices) + $module->register($registrar); + + } + + } + /** * ### Visits a module dependency graph * From d3da75c70ba5a0410bfc500508033e132b725319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danijel=20Gali=C4=87?= Date: Tue, 20 Oct 2026 15:06:13 +0200 Subject: [PATCH 5/7] Add `freeze` functionality to `Manager` class and `ModuleManagerFrozenException` - Introduced `freeze` method to prevent further module registration while retaining access to registered modules. - Added `ModuleManagerFrozenException` to handle cases where registration is attempted after the manager is frozen. - Updated `register` method to throw `ModuleManagerFrozenException` if the registry is frozen. - Enhanced internal state handling with the addition of a `frozen` property. - Improved documentation to explain the purpose and usage of the new method and exception. - Ensures the integrity of the module registry once frozen, supporting stricter lifecycle management. --- .../ModuleManagerFrozenException.php | 28 +++++++++++++++++++ src/Manager.php | 27 +++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/Exception/ModuleManagerFrozenException.php diff --git a/src/Exception/ModuleManagerFrozenException.php b/src/Exception/ModuleManagerFrozenException.php new file mode 100644 index 0000000..2fb2664 --- /dev/null +++ b/src/Exception/ModuleManagerFrozenException.php @@ -0,0 +1,28 @@ + + * @copyright 2026-present The FireHub Project - All rights reserved + * @license https://opensource.org/license/Apache-2-0 Apache License, Version 2.0 + * + * @php-version >=8.1 + * @package Module + */ + +namespace FireHub\Module\Exception; + +use FireHub\Core\Exception\RuntimeException; + +/** + * ### Module manager frozen exception + * + * Thrown when module registration is attempted after the module registry has been frozen. + * @since 1.0.0 + */ +final class ModuleManagerFrozenException extends RuntimeException { + + protected const string DEFAULT_MESSAGE = 'The module manager is frozen'; + +} \ No newline at end of file diff --git a/src/Manager.php b/src/Manager.php index cde3b6d..2db6aae 100644 --- a/src/Manager.php +++ b/src/Manager.php @@ -20,7 +20,7 @@ use FireHub\Core\Boundary\Container\Registrar; use FireHub\Module\Exception\ { CircularModuleDependencyException, ModuleAlreadyRegisteredException, ModuleDependencyNotFoundException, - ModuleNotFoundException + ModuleManagerFrozenException, ModuleNotFoundException }; /** @@ -38,6 +38,12 @@ final class Manager { */ private array $modules = []; + /** + * ### Module registry freeze state + * @since 1.0.0 + */ + private bool $frozen = false; + /** * ### Registers a module * @since 1.0.0 @@ -47,11 +53,15 @@ final class Manager { *

* * @throws \FireHub\Module\Exception\ModuleAlreadyRegisteredException If the module is already registered. + * @throws \FireHub\Module\Exception\ModuleManagerFrozenException If the manager is frozen. * * @return self The manager instance. */ public function register (Module $module):self { + if ($this->frozen) + throw new ModuleManagerFrozenException; + $class = $module::class; if (isset($this->modules[$class])) @@ -61,6 +71,7 @@ public function register (Module $module):self { return $this; + } /** @@ -174,6 +185,20 @@ public function registerServices (Registrar $registrar):void { } + /** + * ### Freezes the module registry + * + * Prevents further module registration while preserving access to previously registered modules. + * @since 1.0.0 + * + * @return void + */ + public function freeze ():void { + + $this->frozen = true; + + } + /** * ### Visits a module dependency graph * From dbe30cb21e2359616cc79de7902678baf135ea37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danijel=20Gali=C4=87?= Date: Wed, 21 Oct 2026 10:31:08 +0200 Subject: [PATCH 6/7] Update changelog and README for version 0.1.0 release --- CHANGELOG.md | 7 ++++++- README.md | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 751d2d4..6828060 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,4 +3,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). \ No newline at end of file +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v0.1.0] – 2026-10-21 + +### Added +* Implement initial functionality by @dieselxxx in https://github.com/The-FireHub-Project/Module/pull/1 \ No newline at end of file diff --git a/README.md b/README.md index c17249c..08fbc74 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ /> version From 569f280c3c02c5b1967f92fa90887f6736cc9842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danijel=20Gali=C4=87?= <56673130+dieselxxx@users.noreply.github.com> Date: Wed, 21 Oct 2026 10:32:12 +0200 Subject: [PATCH 7/7] Update README.md --- README.md | 99 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 08fbc74..84a10d5 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,6 @@ /> -[![PHPStan](https://github.com/The-FireHub-Project/Module/actions/workflows/PHPStan.yml/badge.svg?branch=develop)](https://github.com/The-FireHub-Project/Module/actions/workflows/PHPStan.yml) -[![PHPUnit](https://github.com/The-FireHub-Project/Module/actions/workflows/PHPUnit.yml/badge.svg?branch=develop)](https://github.com/The-FireHub-Project/Module/actions/workflows/PHPUnit.yml) -[![Codecov](https://codecov.io/gh/The-FireHub-Project/Module/branch/develop/graph/badge.svg?token=XW2YEONF51)](https://app.codecov.io/gh/The-FireHub-Project/Module/tree/develop) -

-Provides the dependency injection and service management foundation of the FireHub ecosystem. This repository contains the runtime components responsible for service registration, dependency resolution, instance creation, and service lifetime management, enabling consistent and loosely coupled application architectures. +FireHub Module provides modular application composition and lifecycle integration for The FireHub Project. It enables applications to organize related functionality into cohesive, reusable modules while maintaining clear architectural boundaries and separation of concerns. -FireHub Module is built around the contracts defined by FireHub Core and provides a modular implementation of the Inversion of Control principle. It separates service definitions from their runtime resolution, allowing applications and framework components to declare dependencies without managing their construction directly. +Built around the contracts defined by FireHub Core, FireHub Module provides the mechanisms for module registration, dependency coordination, initialization ordering, and integration with the application lifecycle. Modules can contribute services, configuration, and lifecycle behavior without introducing independent application runtimes. -This repository serves as a foundational runtime component for FireHub applications, adapters, and capabilities, supporting clean architecture, testability, extensibility, and predictable dependency management. +FireHub Module serves as an application composition and orchestration component within the FireHub ecosystem. It supports Clean Architecture and Domain-Driven Design by enabling applications to assemble independent functional units while preserving centralized lifecycle management through FireHub Application and execution infrastructure through FireHub Kernel. --- -## FireHub Icon Development Branch +## FireHub Icon Repository Purpose + +FireHub Module is the modular application composition and orchestration component of the FireHub ecosystem. + +Built on the contracts provided by FireHub Core, it supplies the mechanisms required to organize, register, coordinate, and integrate functional modules within FireHub applications. + +The purpose of this repository is to provide a consistent modular architecture while preserving separation of concerns between application composition, dependency management, and runtime execution. -⚠️ **This is the `develop` branch** +The Module architecture is designed to support: -- Unstable -- APIs may change without notice -- Not intended for production use +* Modular organization of application functionality +* Registration and management of application modules +* Module dependency declaration and resolution +* Dependency ordering and circular dependency detection +* Integration with application initialization and disposal +* Module-specific service registration and configuration +* Shared application dependency injection infrastructure +* Reusable and independently developed functional modules +* Predictable module initialization and disposal ordering +* Compatibility with Clean Architecture and Domain-Driven Design -## FireHub Icon Branch Purpose +FireHub Module follows the architectural principles of The FireHub Project by separating responsibilities between module composition, application lifecycle orchestration, dependency injection, and runtime execution. -The `develop` branch is the **primary integration branch** for all ongoing development. +Modules do not own independent application kernels or lifecycle state machines. Instead, they participate in the lifecycle of their hosting application through well-defined initialization and disposal mechanisms. -It serves as the staging area where: -- Feature branches are merged -- Bug fixes are integrated -- Experimental work is stabilized -- Code is prepared for upcoming releases +The Module component does not control application execution, dependency injection scopes, or kernel lifecycle transitions. These responsibilities remain with FireHub Application, FireHub Container, and FireHub Kernel. -All **release branches** are created **from `develop`**. +This separation enables applications to organize functionality into modular units without introducing unnecessary runtime complexity or coupling between modules and execution infrastructure. -## Stability Guarantee +## FireHub Icon Security -❌ No backward compatibility guarantee -❌ APIs may change without notice -❌ Behavior may be incomplete or inconsistent -❌ Breaking changes are expected +For security reporting and guidelines, please refer to our [SECURITY.md](https://github.com/The-FireHub-Project/.github/blob/master/.github/SECURITY.md) file. -This branch is intended **only for contributors and advanced testers**. +## FireHub Icon Community -## FireHub Icon Composer Usage (Not Recommended) +![GitHub watchers](https://img.shields.io/github/watchers/The-FireHub-Project/Module?style=social) +![GitHub Repo stars](https://img.shields.io/github/stars/The-FireHub-Project/Module?style=social) +![GitHub forks](https://img.shields.io/github/forks/The-FireHub-Project/Module?style=social) + +- Be sure to review the [Code of Conduct](https://github.com/The-FireHub-Project/.github/blob/master/.github/CODE_OF_CONDUCT.md). +- Read a [Contributing](https://github.com/The-FireHub-Project/.github/blob/master/.github/CONTRIBUTING.md) file to see how you can contribute to this project. +- Read our [Security policy](https://github.com/The-FireHub-Project/.github/blob/master/.github/SECURITY.md) file to see how you can report a vulnerability. +- Review the project [Governance model](https://github.com/The-FireHub-Project/.github/blob/master/.github/GOVERNANCE.md), including roles, decision-making, RFC process, and releases. + +## FireHub Icon Support + +

+ + GitHub in-progress issues + + GitHub total issues + + GitHub opened pull requests +

-For internal testing only: +For help with FireHub products, please refer to the following resources: -```json -{ - "require": { - "the-firehub-project/module": "dev-develop" - } -} -``` -⚠️ Never use dev-develop in production. +- **General questions & discussions**: [GitHub Discussions](https://github.com/orgs/The-FireHub-Project/discussions) +- **Bug reports & issues**: [Support](https://github.com/The-FireHub-Project/Module/issues) +- **Documentation & guides**: [FireHub Docs](https://the-firehub-project.github.io) +- **Commercial support** (Pro/Enterprise): contact your account manager ## FireHub Icon Authors and Contributors @@ -134,4 +159,4 @@ Architecture guidelines, design principles, and ecosystem documentation are avai This software is licensed under the Apache-2.0 License. -For more details, read the full license [here](./LICENSE). \ No newline at end of file +For more details, read the full license [here](./LICENSE).