From be50407598d26fad5aae52933cdf14c9b2b8fa4c Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 09:00:00 +0100 Subject: [PATCH 01/10] Update `README.md` to reflect Bootstrap and PHPStan integration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Renamed the primary branch details from "FireHub Skeleton – Develop Branch" to "Bootstrap and PHPStan – Development Branch." - Updated badge colors, SVG logos, and URLs to reference `feature/add-bootstrap-and-phpstan`. - Added information about pull request #2, GitHub milestone #1, and updated the badges to reflect the branch's specific activities. - Introduced a comprehensive feature overview for this branch, including Bootstrap folder initialization and PHPStan integration for code analysis. - Outlined compatibility with Core-Foundation v0.2.0, documentation updates for running PHPStan, and support for CI pipelines. - Removed outdated sections, such as "Unstable" and "Branch Purpose," and replaced them with updated goals for the feature branch. - Clearly defined the branch workflow for contributions, testing, and integration into the main `develop` branch. Enhances clarity, aligns documentation with project workflows, and prepares for further development and integration with Skeleton v0.2.x. --- README.md | 149 +++++++++++++++++++++++++----------------------------- 1 file changed, 70 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index c9fa87e..82c33e6 100644 --- a/README.md +++ b/README.md @@ -3,128 +3,119 @@

release version GitHub license

-## FireHub Skeleton — Develop Branch +## Bootstrap and PHPStan – Development Branch

- + GitHub last commit (branch) - + GitHub activity (branch) - + GitHub commit difference between two branches

-⚠️ **This is the `develop` branch** +### Pull request -- Unstable -- APIs may change without notice -- Not intended for production use - - -## Branch Purpose +

+ + GitHub pull request title + + GitHub pull request author + + GitHub pull request created + + GitHub pull request comments +

-The `develop` branch is the **primary integration branch** for all ongoing skeleton development. +### Milestone -It is used to: -- Evolve the project structure -- Introduce new bootstrap patterns -- Prepare upcoming skeleton releases -- Validate integration concepts with FireHub Core +

+ + GitHub milestone details +

-All **release branches** are created **from `develop`**. +⚠️ **This is a feature branch for Skeleton v0.2.x** -## Stability Guarantee +- Adds the initial web entry structure for new projects +- Not intended for production use +- Branch is unstable; API and structure may change -❌ No backward compatibility guarantee -❌ Folder structure may change -❌ Bootstrap APIs may change -❌ Breaking changes are expected +## Purpose -This branch is intended **only for contributors and advanced users experimenting with FireHub**. +This branch implements the **initial web entry structure** as part of the ongoing Skeleton development: -## Versioning Strategy +- Bootstrap folder and initialization scripts are added to Skeleton. +- PHPStan is installed and configured for the src/ folder. +- Skeleton is compatible with Core-Foundation 0.2.0. +- Documentation includes instructions for running bootstrap and PHPStan. +- CI pipelines (if any) can execute PHPStan checks successfully. -FireHub follows **Semantic Versioning (SemVer)**: +## Stability Guarantee -MAJOR.MINOR.PATCH +❌ No backward compatibility guarantee +❌ Structure and file content may change +❌ Intended only for contributors and early testing -### Important notes +## Versioning -- Skeleton versioning is **independent** from FireHub Core versioning -- Compatibility is documented, not enforced via SemVer -- Until `v1.0.0`, all versions are considered unstable +The feature branch is aligned with **Skeleton v0.2.x**: -### Pre-release versions +- Pre-release feature +- Future releases will stabilize the structure +- Semantic versioning applies when merged into the main develop branch -Pre-release versions are tagged **only on release branches**, never directly on `develop`. +## Branch Workflow -Examples: -- `v0.1.0-alpha.1` -- `v0.1.0-beta.1` -- `v0.1.0-rc.1` +- Branch created from `develop` branch of Skeleton +- Pull requests should target `develop` for integration +- All later features or fixes based on this branch should branch off from here -The `develop` branch itself is considered **pre-release by definition**. +## Usage -## Branch Workflow +Developers can use this branch to: -### Main branches - -| Branch | Purpose | -|-----------------|-----------------------------------------| -| `master` | Production-ready, stable releases only | -| `develop` | Active development & integration | -| `release/x.y.z` | Release preparation & stabilization | -| `vX.y.z` | Maintenance branches for older versions | - -### Supporting branches - -| Branch | Purpose | -|-----------------|-----------------------------------| -| `feature/*` | New features | -| `bugfix/*` | Bug fixes | -| `patch/*` | Patch | -| `hotfix/*` | Critical fixes for production | -| `experiment/*` | Prototypes and experiments | -| `feature/*` | Feature branch | -| `integration/*` | Temp branch for multiple features | -| `wip/*` | Temporary work-in-progress | - -## Merging rules - -- bugfix/* → develop -- patch/* → develop -- hotfix/* → master → develop -> vX.y.z -- experiment/* → develop (only if promoted) -- feature/* → develop -- integration/* → develop -- release/* → master (stable only) - -❌ Direct commits to develop are discouraged -✅ Pull requests with review are required +1. Verify initial web entry structure setup +2. Start building HTTP-based project scaffolding +3. Test integration with Skeleton core ## FireHub Icon License From 7531d34259ba823a3432dbde22a4e857dd6f168b Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 09:06:24 +0100 Subject: [PATCH 02/10] Add `bootstrap/app.php` and update `composer.json` for Bootstrap integration - Introduced `bootstrap/app.php` as the primary configuration entry point for initializing the FireHub Framework with HTTP kernel support. - Added error handling for bootloader exceptions (`FailedToLoadBootloaderException` and `NotBootloaderException`) to enhance stability during configuration. - Updated `composer.json` to: - Add `firehub/core-foundation` (~0.2) as a dependency to support the initialization process. - Include dev dependencies (`phpstan/phpstan`, `phpstan/phpstan-strict-rules`, and `phpunit/phpunit`) for code analysis and unit testing. - Enable autoloading of `core.phar` from the `firehub/core-foundation` package. - Ensures compatibility with PHP 8.5 and aligns with the ongoing framework development. This update enhances the Skeleton's bootstrap system, paves the way for improved developer workflows, and prepares for strict code quality enforcement via integrated tools. --- bootstrap/app.php | 37 +++++++++++++++++++++++++++++++++++++ composer.json | 13 ++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 bootstrap/app.php diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..b0dd8b0 --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,37 @@ + + * @copyright 2026 The FireHub Project - All rights reserved + * @license https://opensource.org/licenses/MIT MIT License + * + * @php-version 8.4 + * @package App\Bootstrap + * + * @version GIT: $Id$ Blob checksum. + */ + +namespace App\Bootstrap; + +use FireHub\Core\Support\Bootstrap\FireHubConfigurator; + +/** + * ### Let there be light + * @since 1.0.0 + * + * @throws \FireHub\Core\Throwable\Exception\Bootstrap\FailedToLoadBootloaderException If a bootloader fails to + * load. + * @throws \FireHub\Core\Throwable\Exception\Bootstrap\NotBootloaderException If a bootloader is not a bootloader. + * + * @return \FireHub\Core\FireHub + */ +return new FireHubConfigurator() + ->withBootloaders([ + // + ]) + ->create(); \ No newline at end of file diff --git a/composer.json b/composer.json index 50312f8..9617986 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,18 @@ "homepage": "https://the-firehub-project.github.io/Skeleton", "license": "MIT", "require": { - "php": "^8.5" + "php": "^8.5", + "firehub/core-foundation": "~0.2" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^13.0" + }, + "autoload": { + "files": [ + "vendor/firehub/core-foundation/phar/core.phar" + ] }, "minimum-stability": "dev", "prefer-stable": true, From 7b1e4a01c441e5d6f83c16779bf462ad9c633b5b Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 09:16:24 +0100 Subject: [PATCH 03/10] Update README.md and CHANGELOG.md --- CHANGELOG.md | 5 +++++ README.md | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb8be6b..03ea6bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ 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). +## [v0.2.0](https://github.com/The-FireHub-Project/Skeleton/compare/v0.1.1...v0.2.0) – 2026-03-24 + +### Added +- Add bootstrap/app.php and update composer.json for Bootstrap integration (pr: [#8](https://github.com/The-FireHub-Project/Skeleton/pull/8), commit: [`7531d34`](https://github.com/The-FireHub-Project/Skeleton/commit/7531d34)) + ## [v0.1.1](https://github.com/The-FireHub-Project/Skeleton/compare/v0.1.0...v0.1.1) – 2026-02-24 ### Added diff --git a/README.md b/README.md index 82c33e6..d0a0ee5 100644 --- a/README.md +++ b/README.md @@ -41,24 +41,24 @@ ### Pull request

- + GitHub pull request title - + GitHub pull request author - + GitHub pull request created - + GitHub pull request comments

From c9f5c2884114c27af1775901091f793c926d16ce Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 09:33:10 +0100 Subject: [PATCH 04/10] Update `.gitattributes` to refine export-ignore rules - Added `CHANGELOG.md`, `CITATION.cff`, and `README.md` to `export-ignore` to exclude these files from Git archive downloads, reducing unnecessary file inclusion in packaged distributions. - Removed `.editorconfig` and `.gitignore` from `export-ignore`, aligning with updated packaging requirements. - Ensures a cleaner and more focused file set for distribution and archives, adhering to project optimization efforts. --- .gitattributes | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitattributes b/.gitattributes index 1e7bf2f..9ce81a6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6,9 +6,10 @@ # Exclude files and folders from Git archive downloads /.github export-ignore -/.editorconfig export-ignore /.gitattributes export-ignore -/.gitignore export-ignore +/CHANGELOG.md export-ignore +/CITATION.cff export-ignore +/README.md export-ignore # Explicit text file types *.php text From 316a6dbb623d9b82bc9208724ba082704b3797f0 Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 09:37:51 +0100 Subject: [PATCH 05/10] Integrate FireHub Framework Bootstrap in `index.php` - Added `bootstrap/app.php` initialization in `index.php` to serve as the entry point for bootstrapping the FireHub Framework. - Enabled framework booting via the `boot()` method for seamless application instantiation. - Retained Composer autoloader registration for dynamic class loading. - Provides a foundational setup for running the application using the FireHub Framework, aligning with ongoing framework enhancements. --- web/index.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/web/index.php b/web/index.php index 6082462..bdc2db4 100644 --- a/web/index.php +++ b/web/index.php @@ -17,4 +17,7 @@ */ /** ### Register the Composer autoloader */ -require __DIR__.'/../vendor/autoload.php'; \ No newline at end of file +require __DIR__.'/../vendor/autoload.php'; + +/** ### Bootstrap FireHub Framework */ +echo (require __DIR__.'/../bootstrap/app.php')->boot(); \ No newline at end of file From 31bde2ff98b26ce7d83d65bd3df40861d732cb77 Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 09:50:54 +0100 Subject: [PATCH 06/10] Add `.gitkeep` to `Skeleton/app` folder - Introduced a `.gitkeep` file in the `Skeleton/app` folder to ensure the directory is tracked by Git, even when empty. - Helps maintain the folder's structure within the repository, ensuring developers are aware of its purpose and intended usage. - Aligns with best practices for managing empty directories in Git repositories. --- app/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/.gitkeep diff --git a/app/.gitkeep b/app/.gitkeep new file mode 100644 index 0000000..e69de29 From c0798e8325e769e38bcfdb5b635511aa7c9378e5 Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 09:57:54 +0100 Subject: [PATCH 07/10] Add PHPUnit and PHPStan configuration files, update `.gitignore` - Added `phpunit.xml.dist` with test suite configuration, including custom error handling and bootstrap settings for improved test coverage and debugging. - Introduced `phpstan.dist.neon` with strict rules and max analysis level to enforce robust code quality and identify potential issues. - Updated `.gitignore` to exclude `storage/` for runtime-generated files and `vendor/` directories. - Enhanced project setup by integrating tools for unit testing and static code analysis to ensure maintainability and high-quality code standards. --- .gitignore | 3 +++ phpstan.dist.neon | 25 +++++++++++++++++++++++++ phpunit.xml.dist | 21 +++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 phpstan.dist.neon create mode 100644 phpunit.xml.dist diff --git a/.gitignore b/.gitignore index efcfe5b..d483947 100644 --- a/.gitignore +++ b/.gitignore @@ -12,5 +12,8 @@ Thumbs.db # Composer dependencies resolver composer.lock +# Storage folder for runtime-generated files +/storage/ + # Vendor /vendor/ \ No newline at end of file diff --git a/phpstan.dist.neon b/phpstan.dist.neon new file mode 100644 index 0000000..61e7a53 --- /dev/null +++ b/phpstan.dist.neon @@ -0,0 +1,25 @@ +includes: + - phar://phpstan.phar/conf/bleedingEdge.neon + - vendor/phpstan/phpstan-strict-rules/rules.neon + +parameters: + level: max + paths: + - app/ + tmpDir: storage/cache/phpstan/ + ignoreErrors: + - identifier: ternary.shortNotAllowed + + checkImplicitMixed: true + checkMissingTypehints: true + checkTooWideReturnTypesInProtectedAndPublicMethods: true + checkUninitializedProperties: true + reportAlwaysTrueInLastCondition: true + reportAnyTypeWideningInVarTag: true + reportMaybesInMethodSignatures: true + reportMaybesInPropertyPhpDocTypes: true + reportPossiblyNonexistentGeneralArrayOffset: true + reportPossiblyNonexistentConstantArrayOffset: true + reportStaticMethodSignatures: true + reportUnmatchedIgnoredErrors: false + treatPhpDocTypesAsCertain: false \ No newline at end of file diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..f5e8b3c --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,21 @@ + + + + + tests/unit + + + + + app + + + + + + + + \ No newline at end of file From 4aa95511bd6b9e4d3178354e443fc77b29a80fdf Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 09:59:02 +0100 Subject: [PATCH 08/10] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03ea6bd..07ff6e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Add bootstrap/app.php and update composer.json for Bootstrap integration (pr: [#8](https://github.com/The-FireHub-Project/Skeleton/pull/8), commit: [`7531d34`](https://github.com/The-FireHub-Project/Skeleton/commit/7531d34)) +- Integrate FireHub Framework Bootstrap in `index.php` (pr: [#8](https://github.com/The-FireHub-Project/Skeleton/pull/8), commit: [`316a6db`](https://github.com/The-FireHub-Project/Skeleton/commit/316a6db)) +- Add PHPUnit and PHPStan configuration files, update `.gitignore` (pr: [#8](https://github.com/The-FireHub-Project/Skeleton/pull/8), commit: [`c0798e8`](https://github.com/The-FireHub-Project/Skeleton/commit/c0798e8)) ## [v0.1.1](https://github.com/The-FireHub-Project/Skeleton/compare/v0.1.0...v0.1.1) – 2026-02-24 From e4c1c95a3912509b4ebc3fde4bf9061ede740df7 Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 10:05:50 +0100 Subject: [PATCH 09/10] Update README.md for develop --- README.md | 149 +++++++++++++++++++++++++++++------------------------- 1 file changed, 79 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index d0a0ee5..a5750d0 100644 --- a/README.md +++ b/README.md @@ -3,119 +3,128 @@

release version GitHub license

-## Bootstrap and PHPStan – Development Branch +## FireHub Skeleton — Develop Branch

- + GitHub last commit (branch) - + GitHub activity (branch) - + GitHub commit difference between two branches

-### Pull request +⚠️ **This is the `develop` branch** -

- - GitHub pull request title - - GitHub pull request author - - GitHub pull request created - - GitHub pull request comments -

- -### Milestone - -

- - GitHub milestone details -

+- Unstable +- APIs may change without notice +- Not intended for production use -⚠️ **This is a feature branch for Skeleton v0.2.x** -- Adds the initial web entry structure for new projects -- Not intended for production use -- Branch is unstable; API and structure may change +## Branch Purpose -## Purpose +The `develop` branch is the **primary integration branch** for all ongoing skeleton development. -This branch implements the **initial web entry structure** as part of the ongoing Skeleton development: +It is used to: +- Evolve the project structure +- Introduce new bootstrap patterns +- Prepare upcoming skeleton releases +- Validate integration concepts with FireHub Core -- Bootstrap folder and initialization scripts are added to Skeleton. -- PHPStan is installed and configured for the src/ folder. -- Skeleton is compatible with Core-Foundation 0.2.0. -- Documentation includes instructions for running bootstrap and PHPStan. -- CI pipelines (if any) can execute PHPStan checks successfully. +All **release branches** are created **from `develop`**. ## Stability Guarantee ❌ No backward compatibility guarantee -❌ Structure and file content may change -❌ Intended only for contributors and early testing +❌ Folder structure may change +❌ Bootstrap APIs may change +❌ Breaking changes are expected -## Versioning +This branch is intended **only for contributors and advanced users experimenting with FireHub**. -The feature branch is aligned with **Skeleton v0.2.x**: +## Versioning Strategy -- Pre-release feature -- Future releases will stabilize the structure -- Semantic versioning applies when merged into the main develop branch +FireHub follows **Semantic Versioning (SemVer)**: -## Branch Workflow +MAJOR.MINOR.PATCH + +### Important notes + +- Skeleton versioning is **independent** from FireHub Core versioning +- Compatibility is documented, not enforced via SemVer +- Until `v1.0.0`, all versions are considered unstable -- Branch created from `develop` branch of Skeleton -- Pull requests should target `develop` for integration -- All later features or fixes based on this branch should branch off from here +### Pre-release versions -## Usage +Pre-release versions are tagged **only on release branches**, never directly on `develop`. -Developers can use this branch to: +Examples: +- `v0.1.0-alpha.1` +- `v0.1.0-beta.1` +- `v0.1.0-rc.1` + +The `develop` branch itself is considered **pre-release by definition**. + +## Branch Workflow -1. Verify initial web entry structure setup -2. Start building HTTP-based project scaffolding -3. Test integration with Skeleton core +### Main branches + +| Branch | Purpose | +|-----------------|-----------------------------------------| +| `master` | Production-ready, stable releases only | +| `develop` | Active development & integration | +| `release/x.y.z` | Release preparation & stabilization | +| `vX.y.z` | Maintenance branches for older versions | + +### Supporting branches + +| Branch | Purpose | +|-----------------|-----------------------------------| +| `feature/*` | New features | +| `bugfix/*` | Bug fixes | +| `patch/*` | Patch | +| `hotfix/*` | Critical fixes for production | +| `experiment/*` | Prototypes and experiments | +| `feature/*` | Feature branch | +| `integration/*` | Temp branch for multiple features | +| `wip/*` | Temporary work-in-progress | + +## Merging rules + +- bugfix/* → develop +- patch/* → develop +- hotfix/* → master → develop -> vX.y.z +- experiment/* → develop (only if promoted) +- feature/* → develop +- integration/* → develop +- release/* → master (stable only) + +❌ Direct commits to develop are discouraged +✅ Pull requests with review are required ## FireHub Icon License From 94f43233d25e5b7cfc0b3743592cf87252d94e7b Mon Sep 17 00:00:00 2001 From: Riddick Date: Tue, 24 Mar 2026 10:34:31 +0100 Subject: [PATCH 10/10] Update README.md for master --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 15cb504..5cf2d5d 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ /> version FireHub Icon Quick Start -![Packagist PHP Version](https://img.shields.io/packagist/dependency-v/firehub/skeleton/php?version=v0.1.0&style=flat&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UEhQPC90aXRsZT48cGF0aCBmaWxsPSIjOTU5ZGE1IiBkPSJNNy4wMSAxMC4yMDdoLS45NDRsLS41MTUgMi42NDhoLjgzOGMuNTU2IDAgLjk3LS4xMDUgMS4yNDItLjMxNC4yNzItLjIxLjQ1NS0uNTU5LjU1LTEuMDQ5LjA5Mi0uNDcuMDUtLjgwMi0uMTI0LS45OTUtLjE3NS0uMTkzLS41MjMtLjI5LTEuMDQ3LS4yOXpNMTIgNS42ODhDNS4zNzMgNS42ODggMCA4LjUxNCAwIDEyczUuMzczIDYuMzEzIDEyIDYuMzEzUzI0IDE1LjQ4NiAyNCAxMmMwLTMuNDg2LTUuMzczLTYuMzEyLTEyLTYuMzEyem0tMy4yNiA3LjQ1MWMtLjI2MS4yNS0uNTc1LjQzOC0uOTE3LjU1MS0uMzM2LjEwOC0uNzY1LjE2NC0xLjI4NS4xNjRINS4zNTdsLS4zMjcgMS42ODFIMy42NTJsMS4yMy02LjMyNmgyLjY1Yy43OTcgMCAxLjM3OC4yMDkgMS43NDQuNjI4LjM2Ni40MTguNDc2IDEuMDAyLjMzIDEuNzUyYTIuODM2IDIuODM2IDAgMCAxLS4zMDUuODQ3Yy0uMTQzLjI1NS0uMzMuNDktLjU2MS43MDN6bTQuMDI0LjcxNWwuNTQzLTIuNzk5Yy4wNjMtLjMxOC4wMzktLjUzNi0uMDY4LS42NTEtLjEwNy0uMTE2LS4zMzYtLjE3NC0uNjg3LS4xNzRIMTEuNDZsLS43MDQgMy42MjVIOS4zODhsMS4yMy02LjMyN2gxLjM2N2wtLjMyNyAxLjY4MmgxLjIxOGMuNzY3IDAgMS4yOTUuMTM0IDEuNTg2LjQwMXMuMzc4LjcuMjYzIDEuMjk5bC0uNTcyIDIuOTQ0aC0xLjM4OXptNy41OTctMi4yNjVhMi43ODIgMi43ODIgMCAwIDEtLjMwNS44NDdjLS4xNDMuMjU1LS4zMy40OS0uNTYxLjcwM2EyLjQ0IDIuNDQgMCAwIDEtLjkxNy41NTFjLS4zMzYuMTA4LS43NjUuMTY0LTEuMjg2LjE2NGgtMS4xOGwtLjMyNyAxLjY4MmgtMS4zNzhsMS4yMy02LjMyNmgyLjY0OWMuNzk3IDAgMS4zNzguMjA5IDEuNzQ0LjYyOC4zNjYuNDE3LjQ3NyAxLjAwMS4zMzEgMS43NTF6TTE3Ljc2NiAxMC4yMDdoLS45NDNsLS41MTYgMi42NDhoLjgzOGMuNTU3IDAgLjk3MS0uMTA1IDEuMjQyLS4zMTQuMjcyLS4yMS40NTUtLjU1OS41NTEtMS4wNDkuMDkyLS40Ny4wNDktLjgwMi0uMTI1LS45OTVzLS41MjQtLjI5LTEuMDQ3LS4yOXoiLz48L3N2Zz4=&logoColor=959da5&labelColor=31373e) -![Packagist Stars](https://img.shields.io/packagist/stars/firehub/skeleton?style=flat&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UEhQPC90aXRsZT48cGF0aCBmaWxsPSIjOTU5ZGE1IiBkPSJNNy4wMSAxMC4yMDdoLS45NDRsLS41MTUgMi42NDhoLjgzOGMuNTU2IDAgLjk3LS4xMDUgMS4yNDItLjMxNC4yNzItLjIxLjQ1NS0uNTU5LjU1LTEuMDQ5LjA5Mi0uNDcuMDUtLjgwMi0uMTI0LS45OTUtLjE3NS0uMTkzLS41MjMtLjI5LTEuMDQ3LS4yOXpNMTIgNS42ODhDNS4zNzMgNS42ODggMCA4LjUxNCAwIDEyczUuMzczIDYuMzEzIDEyIDYuMzEzUzI0IDE1LjQ4NiAyNCAxMmMwLTMuNDg2LTUuMzczLTYuMzEyLTEyLTYuMzEyem0tMy4yNiA3LjQ1MWMtLjI2MS4yNS0uNTc1LjQzOC0uOTE3LjU1MS0uMzM2LjEwOC0uNzY1LjE2NC0xLjI4NS4xNjRINS4zNTdsLS4zMjcgMS42ODFIMy42NTJsMS4yMy02LjMyNmgyLjY1Yy43OTcgMCAxLjM3OC4yMDkgMS43NDQuNjI4LjM2Ni40MTguNDc2IDEuMDAyLjMzIDEuNzUyYTIuODM2IDIuODM2IDAgMCAxLS4zMDUuODQ3Yy0uMTQzLjI1NS0uMzMuNDktLjU2MS43MDN6bTQuMDI0LjcxNWwuNTQzLTIuNzk5Yy4wNjMtLjMxOC4wMzktLjUzNi0uMDY4LS42NTEtLjEwNy0uMTE2LS4zMzYtLjE3NC0uNjg3LS4xNzRIMTEuNDZsLS43MDQgMy42MjVIOS4zODhsMS4yMy02LjMyN2gxLjM2N2wtLjMyNyAxLjY4MmgxLjIxOGMuNzY3IDAgMS4yOTUuMTM0IDEuNTg2LjQwMXMuMzc4LjcuMjYzIDEuMjk5bC0uNTcyIDIuOTQ0aC0xLjM4OXptNy41OTctMi4yNjVhMi43ODIgMi43ODIgMCAwIDEtLjMwNS44NDdjLS4xNDMuMjU1LS4zMy40OS0uNTYxLjcwM2EyLjQ0IDIuNDQgMCAwIDEtLjkxNy41NTFjLS4zMzYuMTA4LS43NjUuMTY0LTEuMjg2LjE2NGgtMS4xOGwtLjMyNyAxLjY4MmgtMS4zNzhsMS4yMy02LjMyNmgyLjY0OWMuNzk3IDAgMS4zNzguMjA5IDEuNzQ0LjYyOC4zNjYuNDE3LjQ3NyAxLjAwMS4zMzEgMS43NTF6TTE3Ljc2NiAxMC4yMDdoLS45NDNsLS41MTYgMi42NDhoLjgzOGMuNTU3IDAgLjk3MS0uMTA1IDEuMjQyLS4zMTQuMjcyLS4yMS40NTUtLjU1OS41NTEtMS4wNDkuMDkyLS40Ny4wNDktLjgwMi0uMTI1LS45OTVzLS41MjQtLjI5LTEuMDQ3LS4yOXoiLz48L3N2Zz4=&logoColor=959da5&labelColor=31373e) -![Packagist Downloads](https://img.shields.io/packagist/dt/firehub/skeleton?style=flat&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UEhQPC90aXRsZT48cGF0aCBmaWxsPSIjOTU5ZGE1IiBkPSJNNy4wMSAxMC4yMDdoLS45NDRsLS41MTUgMi42NDhoLjgzOGMuNTU2IDAgLjk3LS4xMDUgMS4yNDItLjMxNC4yNzItLjIxLjQ1NS0uNTU5LjU1LTEuMDQ5LjA5Mi0uNDcuMDUtLjgwMi0uMTI0LS45OTUtLjE3NS0uMTkzLS41MjMtLjI5LTEuMDQ3LS4yOXpNMTIgNS42ODhDNS4zNzMgNS42ODggMCA4LjUxNCAwIDEyczUuMzczIDYuMzEzIDEyIDYuMzEzUzI0IDE1LjQ4NiAyNCAxMmMwLTMuNDg2LTUuMzczLTYuMzEyLTEyLTYuMzEyem0tMy4yNiA3LjQ1MWMtLjI2MS4yNS0uNTc1LjQzOC0uOTE3LjU1MS0uMzM2LjEwOC0uNzY1LjE2NC0xLjI4NS4xNjRINS4zNTdsLS4zMjcgMS42ODFIMy42NTJsMS4yMy02LjMyNmgyLjY1Yy43OTcgMCAxLjM3OC4yMDkgMS43NDQuNjI4LjM2Ni40MTguNDc2IDEuMDAyLjMzIDEuNzUyYTIuODM2IDIuODM2IDAgMCAxLS4zMDUuODQ3Yy0uMTQzLjI1NS0uMzMuNDktLjU2MS43MDN6bTQuMDI0LjcxNWwuNTQzLTIuNzk5Yy4wNjMtLjMxOC4wMzktLjUzNi0uMDY4LS42NTEtLjEwNy0uMTE2LS4zMzYtLjE3NC0uNjg3LS4xNzRIMTEuNDZsLS43MDQgMy42MjVIOS4zODhsMS4yMy02LjMyN2gxLjM2N2wtLjMyNyAxLjY4MmgxLjIxOGMuNzY3IDAgMS4yOTUuMTM0IDEuNTg2LjQwMXMuMzc4LjcuMjYzIDEuMjk5bC0uNTcyIDIuOTQ0aC0xLjM4OXptNy41OTctMi4yNjVhMi43ODIgMi43ODIgMCAwIDEtLjMwNS44NDdjLS4xNDMuMjU1LS4zMy40OS0uNTYxLjcwM2EyLjQ0IDIuNDQgMCAwIDEtLjkxNy41NTFjLS4zMzYuMTA4LS43NjUuMTY0LTEuMjg2LjE2NGgtMS4xOGwtLjMyNyAxLjY4MmgtMS4zNzhsMS4yMy02LjMyNmgyLjY0OWMuNzk3IDAgMS4zNzguMjA5IDEuNzQ0LjYyOC4zNjYuNDE3LjQ3NyAxLjAwMS4zMzEgMS43NTF6TTE3Ljc2NiAxMC4yMDdoLS45NDNsLS41MTYgMi42NDhoLjgzOGMuNTU3IDAgLjk3MS0uMTA1IDEuMjQyLS4zMTQuMjcyLS4yMS40NTUtLjU1OS41NTEtMS4wNDkuMDkyLS40Ny4wNDktLjgwMi0uMTI1LS45OTVzLS41MjQtLjI5LTEuMDQ3LS4yOXoiLz48L3N2Zz4=&logoColor=959da5&labelColor=31373e) +![Core Foundation Version](https://img.shields.io/packagist/dependency-v/firehub/skeleton/firehub%2Fcore-foundation?version=v0.2.0&style=flat&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMzMuNjUxIDM4Ny4wOSI+CiAgICA8dGl0bGU+RmlyZWh1YiBJY29uPC90aXRsZT4KICAgIDxzdHlsZT4KICAgICAgICAuY29sb3Ige2ZpbGw6ICNkNTAwMDA7fQogICAgPC9zdHlsZT4KICAgIDxnPgogICAgICAgIDxwYXRoIGNsYXNzPSJjb2xvciIgZD0iTTI2Ny4xMDYsMjYyLjU2MWMxMC41LTE3LjYzMSwxOS42My0zNi45MzEsMjAuMTItNTcuNDUxYzAuNDktMjAuNTItOS42LTQyLjQxOS0yOC40Ni01MC41MmM1LjcxLDkuNjcsMTAuMjUsMjAuNjIsOS4yOCwzMS44MWMtMC45NywxMS4xOS04Ljg2LDIyLjM3LTIwLDI0Yy0xMC40OSwxLjUyOS0yMC43Ny01Ljg1MS0yNS41MS0xNS4zNGMtNC43NC05LjQ5MS00LjYyLTIwLjU2MS00LTMxLjE1QzIyNC4zOTYsNTYuMTcsMTQyLjA0Niw1Ljk0LDEyNy4yODYsMGMwLDAsMTEuNDksMTIuMzksMTMuODgsMzAuNTNjMS45LDE0LjQ0LDAuMTcsMjkuMjItMy4zNCw0My4yNGMtMTAuODgsNDMuMzUtMzYuODYsNzcuODItNTguNTksMTE2Yy0xNC41OCwyNS41OC0yNCw1NC4wNS0yMy4zMiw4My42OWMwLjc2LDM0LDE2LDY3LjksNDIuNzMsODguODdjMTMuMDUsMTAuMjI5LDI4LjMyLDE3LjY1LDQzLjg0LDIzLjI5Yy0yLjE5LTIuNjItNC44NS01LjYyLTctOC42MDFjLTE4LjY4LTI1LjkzOS0zMi4yNi01MS41LTMzLjE3LTg0LjEwOWMtMC43Ny0yOC4yMyw3LjQtNTMuOTMsMTUuMTQtODAuNjFjLTAuOTEsMy4xNCwxLjgzLDEwLjcsMi4xLDE0LjIxYzAuNDEsNS40LDAuNDYsMTAuODIsMC41LDE2LjIyMWMwLjA4LDExLjQ3LTAuMTQsMjMsMS4zMiwzNC4zNzljMy40MiwyNi43NCwxOC4yOCw0OS43MTEsNDMuMjYsNjEuMjAxYy04LjQ3LTE5LjY5LTkuMzEtMzYuMzAxLTEuMjgtNTYuNzIxYzYuMDUtMTUuMzY5LDE0LjcxLTI5Ljc3OSwxOC45NC00NS43NWM4LjYzLTMyLjU2LTIuNDItNjcuNjQtMjAuNzUtOTUuODljMTcuMzIsMTUuMzEsMzIsMzQuNDUsMzguMyw1Ni43YzcuMzYsMjYsMi44Niw1My41NiwwLDgwLjM5Yy0yLjUxLDIzLjIxLTMuNzEsNDgsNS40Miw3MC4wNWM4LDE5LjIzLDIyLjQsMjkuNTIxLDM5LjUxLDQwYy0zLjY0NC0zLjAxMS02LjU2Ni02LjgtOC41NS0xMS4wOWMtOS4xNi0xOC4zNy02LjczLTQwLjY2LDAuNzktNTkuNzZTMjU2LjYxNiwyODAuMiwyNjcuMTA2LDI2Mi41NjF6Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNvbG9yIiBkPSJNMTczLjEzNiwyMi40M2M1LjA3OCw0Ljk5MSw5Ljg3MiwxMC4yNjIsMTQuMzYsMTUuNzljMS43NzMsMi4xODcsMy40ODMsNC40LDUuMTMsNi42NGM3OS42NzQsMTQuMjQ0LDEzMi43MTYsOTAuMzgsMTE4LjQ3MiwxNzAuMDU0Yy02Ljk0NywzOC44NTctMjkuMjc2LDczLjI3LTYxLjkzMiw5NS40NDZjLTEuNDMsMy0yLjc3LDYtNCw5Yy0yLjUyOCw2LjM3Ny00LjMzLDEzLjAxOS01LjM3LDE5LjhjODIuODQ5LTQwLjMyOSwxMTcuMzE4LTE0MC4xODUsNzYuOTg5LTIyMy4wMzNDMjg5Ljg0OSw2MC43OSwyMzQuNjM1LDI0Ljc3NywxNzMuMTM2LDIyLjQzeiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjb2xvciIgZD0iTTQ3LjA0NiwyNzMuNjA5di0wLjA4QzAuNDM1LDIwNy4zNTQsMTYuMjk2LDExNS45MjMsODIuNDcxLDY5LjMxM2MxNS4yNTQtMTAuNzQ0LDMyLjQyLTE4LjQ3Nyw1MC41NzUtMjIuNzgzYzAuMjEyLTQuOTYyLDAuMDA1LTkuOTMzLTAuNjItMTQuODZjLTAuMjUzLTEuODc1LTAuNjI0LTMuNzMxLTEuMTEtNS41NkM0MS4yOTksNDUuNzM4LTE1Ljc2MywxMzQuNjIzLDMuODY1LDIyNC42NGM3LjI4LDMzLjM5LDI0LjY0LDYzLjczOCw0OS43MzEsODYuOTRDNDkuNTU5LDI5OS4zMTQsNDcuMzUyLDI4Ni41Miw0Ny4wNDYsMjczLjYwOXoiLz4KICAgIDwvZz4KPC9zdmc+) +![Packagist PHP Version](https://img.shields.io/packagist/dependency-v/firehub/skeleton/php?version=v0.2.0&style=flat&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UEhQPC90aXRsZT48cGF0aCBmaWxsPSIjOTU5ZGE1IiBkPSJNNy4wMSAxMC4yMDdoLS45NDRsLS41MTUgMi42NDhoLjgzOGMuNTU2IDAgLjk3LS4xMDUgMS4yNDItLjMxNC4yNzItLjIxLjQ1NS0uNTU5LjU1LTEuMDQ5LjA5Mi0uNDcuMDUtLjgwMi0uMTI0LS45OTUtLjE3NS0uMTkzLS41MjMtLjI5LTEuMDQ3LS4yOXpNMTIgNS42ODhDNS4zNzMgNS42ODggMCA4LjUxNCAwIDEyczUuMzczIDYuMzEzIDEyIDYuMzEzUzI0IDE1LjQ4NiAyNCAxMmMwLTMuNDg2LTUuMzczLTYuMzEyLTEyLTYuMzEyem0tMy4yNiA3LjQ1MWMtLjI2MS4yNS0uNTc1LjQzOC0uOTE3LjU1MS0uMzM2LjEwOC0uNzY1LjE2NC0xLjI4NS4xNjRINS4zNTdsLS4zMjcgMS42ODFIMy42NTJsMS4yMy02LjMyNmgyLjY1Yy43OTcgMCAxLjM3OC4yMDkgMS43NDQuNjI4LjM2Ni40MTguNDc2IDEuMDAyLjMzIDEuNzUyYTIuODM2IDIuODM2IDAgMCAxLS4zMDUuODQ3Yy0uMTQzLjI1NS0uMzMuNDktLjU2MS43MDN6bTQuMDI0LjcxNWwuNTQzLTIuNzk5Yy4wNjMtLjMxOC4wMzktLjUzNi0uMDY4LS42NTEtLjEwNy0uMTE2LS4zMzYtLjE3NC0uNjg3LS4xNzRIMTEuNDZsLS43MDQgMy42MjVIOS4zODhsMS4yMy02LjMyN2gxLjM2N2wtLjMyNyAxLjY4MmgxLjIxOGMuNzY3IDAgMS4yOTUuMTM0IDEuNTg2LjQwMXMuMzc4LjcuMjYzIDEuMjk5bC0uNTcyIDIuOTQ0aC0xLjM4OXptNy41OTctMi4yNjVhMi43ODIgMi43ODIgMCAwIDEtLjMwNS44NDdjLS4xNDMuMjU1LS4zMy40OS0uNTYxLjcwM2EyLjQ0IDIuNDQgMCAwIDEtLjkxNy41NTFjLS4zMzYuMTA4LS43NjUuMTY0LTEuMjg2LjE2NGgtMS4xOGwtLjMyNyAxLjY4MmgtMS4zNzhsMS4yMy02LjMyNmgyLjY0OWMuNzk3IDAgMS4zNzguMjA5IDEuNzQ0LjYyOC4zNjYuNDE3LjQ3NyAxLjAwMS4zMzEgMS43NTF6TTE3Ljc2NiAxMC4yMDdoLS45NDNsLS41MTYgMi42NDhoLjgzOGMuNTU3IDAgLjk3MS0uMTA1IDEuMjQyLS4zMTQuMjcyLS4yMS40NTUtLjU1OS41NTEtMS4wNDkuMDkyLS40Ny4wNDktLjgwMi0uMTI1LS45OTVzLS41MjQtLjI5LTEuMDQ3LS4yOXoiLz48L3N2Zz4=&logoColor=959da5&labelColor=31373e) +![Packagist Stars](https://img.shields.io/packagist/stars/firehub/skeleton?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjOTU5ZGE1Ij48cGF0aCBkPSJtMzU0LTI4NyAxMjYtNzYgMTI2IDc3LTMzLTE0NCAxMTEtOTYtMTQ2LTEzLTU4LTEzNi01OCAxMzUtMTQ2IDEzIDExMSA5Ny0zMyAxNDNaTTIzMy0xMjBsNjUtMjgxTDgwLTU5MGwyODgtMjUgMTEyLTI2NSAxMTIgMjY1IDI4OCAyNS0yMTggMTg5IDY1IDI4MS0yNDctMTQ5LTI0NyAxNDlabTI0Ny0zNTBaIi8+PC9zdmc+&logoColor=959da5&labelColor=31373e) +![Packagist Downloads](https://img.shields.io/packagist/dt/firehub/skeleton?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjOTU5ZGE1Ij48cGF0aCBkPSJNNDgwLTMyMCAyODAtNTIwbDU2LTU4IDEwNCAxMDR2LTMyNmg4MHYzMjZsMTA0LTEwNCA1NiA1OC0yMDAgMjAwWk0yNDAtMTYwcS0zMyAwLTU2LjUtMjMuNVQxNjAtMjQwdi0xMjBoODB2MTIwaDQ4MHYtMTIwaDgwdjEyMHEwIDMzLTIzLjUgNTYuNVQ3MjAtMTYwSDI0MFoiLz48L3N2Zz4=&logoColor=959da5&labelColor=31373e) 1. **Create a new project with composer**: ```bash