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 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/CHANGELOG.md b/CHANGELOG.md index cb8be6b..07ff6e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ 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)) +- 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 ### Added diff --git a/README.md b/README.md index 6548461..5cf2d5d 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ /> version @@ -73,9 +73,10 @@ This repository provides a clean folder structure and example setup to get start ## 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 diff --git a/app/.gitkeep b/app/.gitkeep new file mode 100644 index 0000000..e69de29 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, 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 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