{"id":13461430,"url":"https://github.com/gantry/gantry5","last_synced_at":"2025-10-07T20:10:24.874Z","repository":{"id":29460597,"uuid":"32997061","full_name":"gantry/gantry5","owner":"gantry","description":":rocket: Next Generation Template / Theme Framework","archived":false,"fork":false,"pushed_at":"2025-09-15T08:04:38.000Z","size":80119,"stargazers_count":1056,"open_issues_count":540,"forks_count":211,"subscribers_count":86,"default_branch":"develop","last_synced_at":"2025-09-15T09:38:13.533Z","etag":null,"topics":["framework","gantry","grav","joomla","php","themes","wordpress"],"latest_commit_sha":null,"homepage":"http://gantry.org","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gantry.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-03-27T16:28:55.000Z","updated_at":"2025-09-15T08:12:40.000Z","dependencies_parsed_at":"2023-10-20T16:44:01.635Z","dependency_job_id":"b8c043dd-1633-4897-b601-3fd769bb6983","html_url":"https://github.com/gantry/gantry5","commit_stats":{"total_commits":7017,"total_committers":48,"mean_commits":146.1875,"dds":0.662106313239276,"last_synced_commit":"397887e87e8f61b101375da7d4ee5d62596b3ccc"},"previous_names":[],"tags_count":110,"template":false,"template_full_name":null,"purl":"pkg:github/gantry/gantry5","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantry%2Fgantry5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantry%2Fgantry5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantry%2Fgantry5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantry%2Fgantry5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gantry","download_url":"https://codeload.github.com/gantry/gantry5/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gantry%2Fgantry5/sbom","scorecard":{"id":418317,"data":{"date":"2025-08-11","repo":{"name":"github.com/gantry/gantry5","commit":"c8ccc7f80a1f882d491e21f356991aeeb138faaf"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci-builds.yaml:1","Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/tests.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 5.5.23 not signed: https://api.github.com/repos/gantry/gantry5/releases/238916268","Warn: release artifact 5.5.22 not signed: https://api.github.com/repos/gantry/gantry5/releases/235578425","Warn: release artifact 5.5.21 not signed: https://api.github.com/repos/gantry/gantry5/releases/234494593","Warn: release artifact 5.5.20 not signed: https://api.github.com/repos/gantry/gantry5/releases/234229080","Warn: release artifact 5.5.19 not signed: https://api.github.com/repos/gantry/gantry5/releases/157328481","Warn: release artifact 5.5.23 does not have provenance: https://api.github.com/repos/gantry/gantry5/releases/238916268","Warn: release artifact 5.5.22 does not have provenance: https://api.github.com/repos/gantry/gantry5/releases/235578425","Warn: release artifact 5.5.21 does not have provenance: https://api.github.com/repos/gantry/gantry5/releases/234494593","Warn: release artifact 5.5.20 does not have provenance: https://api.github.com/repos/gantry/gantry5/releases/234229080","Warn: release artifact 5.5.19 does not have provenance: https://api.github.com/repos/gantry/gantry5/releases/157328481"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'develop'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-builds.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/ci-builds.yaml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-builds.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/ci-builds.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-builds.yaml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/ci-builds.yaml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-builds.yaml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/ci-builds.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/release.yaml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/release.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/release.yaml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/release.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/tests.yaml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yaml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/tests.yaml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/gantry/gantry5/tests.yaml/develop?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"58 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-hc9w-4p87-j549","Warn: Project is vulnerable to: GHSA-wg6g-ppvx-927h","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-9vvw-cc9w-f27h","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-vh7m-p724-62c2","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-qrmc-fj45-qfc2","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-pc58-wgmc-hfjr","Warn: Project is vulnerable to: GHSA-vvv8-xw5f-3f88","Warn: Project is vulnerable to: GHSA-r8f7-9pfq-mjmv","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-hwj9-h5mp-3pm3","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-7mwh-4pqv-wmr8","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-hj9c-8jmm-8c52","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-6377-hfv9-hqf6","Warn: Project is vulnerable to: GHSA-jjxq-ff2g-95vh","Warn: Project is vulnerable to: GHSA-6c3j-c64m-qhgq","Warn: Project is vulnerable to: GHSA-gxr4-xjj5-5px2"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T00:29:54.232Z","repository_id":29460597,"created_at":"2025-08-19T00:29:54.232Z","updated_at":"2025-08-19T00:29:54.232Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278838434,"owners_count":26054720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","gantry","grav","joomla","php","themes","wordpress"],"created_at":"2024-07-31T11:00:38.825Z","updated_at":"2025-10-07T20:10:24.857Z","avatar_url":"https://github.com/gantry.png","language":"PHP","funding_links":[],"categories":["Themes and Framework","PHP"],"sub_categories":[],"readme":"\u003e [!IMPORTANT]\n\u003e **A NEW CHAPTER FOR GANTRY** - [Read about it here](https://tiger12.com/gantry/)\n\u003e\nTiger12 is now the official steward of Gantry and gantry.org, the powerful theming framework that has shaped websites across WordPress, Joomla, and Grav for over a decade. Gantry has long been trusted by developers and organizations for its flexibility, speed, and clean design principles. We’ve crafted with it. We’ve relied on it. And now—we’re building its future.\n\nGantry’s success is built on the vision and dedication of Andy Miller and the team at RocketTheme. Their innovative work laid the foundation for a framework trusted by thousands. We are honored that they have officially chosen us to carry this legacy forward and continue the development of Gantry into the future.\n\n================\n\n[![PHPStan](https://img.shields.io/badge/PHPStan-enabled-brightgreen.svg?style=flat)](https://github.com/phpstan/phpstan)\n[![Join the chat at https://gitter.im/gantry/gantry5](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/gantry/gantry5?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nReady to get started with Gantry 5? That's great! We are here to help.\n\nOn this page, you will get some quick tips to help you hit the ground running with Gantry 5. You can find more detailed documentation for each of these tips by clicking the **Learn More** button at the bottom of each section.\n\nWe hope you enjoy Gantry 5 every bit as much as we have enjoyed making it.\n\n## Browser Requirements\n\nThe back-end administration requirements of Gantry in order of preference are as follows:\n\n* Google Chrome 60+\n* Firefox 60+\n* Safari 12+\n* Opera 47+\n* MS Edge\n\n**Note:** Internet Explorer is no longer supported\n\n## Installing Gantry 5 and the Hydrogen Theme\n\nGantry 5 is a framework by which Gantry-powered themes are made. In order for a Gantry theme to work, you will need to install both the **framework** and the **theme**. Doing this is not difficult at all.\n\nThe first thing you need to do is download the latest build of Gantry 5 and Hydrogen. You can do so by clicking the links below, or via [GitHub](http://github.com/gantry/gantry5/).\n\n| [Download Stable](http://www.gantry.org/downloads#gantry5) | [Download CI Builds](http://gantry.org/downloads#ci-builds) |\n|:---------------------------------------------------:|:---------------------------------------------------------:|\n\nOnce you have the latest packages, installation is simple. We have provided a step-by-step guide in the **Installation** portion of this documentation.\n\n[**Learn More**](http://docs.gantry.org/gantry5/basics/installation)\n\n## Accessing the Gantry Administrator\n\n### Joomla\n\nWhen you have installed and activated both the Gantry framework and Hydrogen, you can access the Gantry 5 administrator in several different ways. The easiest being simply navigating to **Components \u003e Gantry 5 Templates** from the back end of Joomla.\n\nHere, you will see a list of any installed Gantry-powered themes. You can **Preview** the theme from here or select **Configure** to go directly to the **Gantry Administrator** where you can get started modifying your Gantry-powered site.\n\n## Navigating the Gantry 5 Administrator\n\nThe Gantry Administrator has multiple administrative tools you can flip through to configure how your Gantry-powered theme looks and functions. Here is a quick breakdown of each of these tools, and what you can do with them.\n\nYou will notice the following menu items in the Gantry 5 Administrator:\n\n1. **Menu Editor**: This administrative panel gives you the ability to enhance the platform's menu by altering styling, rearranging links, and creating menu items that sit outside of the CMS's integrated Menu Manager.\n\n2. **About**: This page gives you quick, at-a-glance information about the currently-accessed theme. This is a one-stop shop for information about the theme including: name, version number, creator, support links, features, and more.\n\n3. **Platform Settings**: This button takes you to the CMS' settings page for Gantry 5. In Joomla, this is the **Permissions** configuration page.\n\n4. **Clear Cache**: This button clears the cache files related to Gantry. This includes all of the temporary files outside of CSS and configuration information.\n\n5. **Outlines Dropdown**: This dropdown makes it easy to quickly switch between Outlines without having to leave the Gantry Administrator.\n\n6. **Styles**: This administrative panel gives you access to style related outline settings. This includes things like theme colors, fonts, style presets, and more.\n\n7. **Settings**: This administrative panel offers you the ability to configure the functional settings of the theme. This includes setting defaults for Particles, as well as enabling/disabling individual Particles.\n\n8. **Layout**: This administrative panel is where you would configure the layout for your theme. Creating an placing module positions, Particles, spacers, and non-rendered scripts such as Google Analytics code is all done in this panel.\n\n[**Learn More**](http://docs.gantry.org/gantry5/configure/gantry-admin)\n\n## What are Outlines, Particles, Atoms, etc.?\n\nBecause Gantry 5 is so different from any version of Gantry before it, we came up with some terms to help make sense of the relationships Gantry's new features have with one-another. Here is a quick breakdown of commonly used terms related to Gantry 5.\n\n| Term          | Definition                                                                                                                                             |\n| :-----        | :-----                                                                                                                                                 |\n| Outline       | A configurable style used in one or more areas of your site. It serves as the container on which a page's style, settings, and layout are set.         |\n| Particle      | A typically small block of data used on the front end. It acts a lot like a widget/module, but can be easily configured in the Gantry 5 Administrator. |\n| Atom          | A type of Particle that contains non-rendered data, such as custom scripting (JS, CSS, etc.) or analytics scripts for traffic tracking.                |\n\n[**Learn More**](http://docs.gantry.org/gantry5/basics/terminology)\n\n## Where to Get Help\n\nA chat room has been set up using [Gitter](https://gitter.im/gantry/gantry5) where you can go to talk about the project with developers, contributors, and other members of the community. This is the best place to go to get quick tips and discuss features with others.\n\n[Documentation](http://docs.gantry.org) is also available, and being continually added to as development progresses. Is something missing? You can contribute to the documentation through GitHub.\n\n## How to Contribute\n\nContributing to the Gantry 5 framework, or to its associated documentation is easy. Development for both of these projects is being conducted via [Github](http://github.com), where you can submit **Issues** to report any bugs or suggest improvements, as well as submit your own **Pull Requests** to submit your own fixes and additions.\n\nWe recommend chatting with the team via [Gitter](https://gitter.im/gantry/gantry5) prior to submitting the pull request to avoid doubling up on a fix that is already pending or likely to be overwritten by an upcoming change.\n\n## Using git version of Gantry\n\nTo use git version of Gantry, you first need to install composer dependencies. To do this, run:\n\n```\nbin/composer-install\n```\n\nAfter that, you need to properly symlink Gantry into your CMS installation.\n\n## Testing PHP 8.3 Compatibility\n\nThe framework includes a PHPUnit test suite specifically for validating PHP 8.3 compatibility. To run these tests:\n\n```bash\n# Install composer dependencies if not already done\nbin/composer-install\n\n# Run the PHP 8.3 compatibility tests\nvendor/bin/phpunit\n```\n\nThis will execute tests that verify key components work correctly with PHP 8.3 including:\n- Type system compatibility (nullable and union types)\n- Trait implementation compatibility\n- Core framework functionality\n- Platform-specific features\n- Twig integration\n\n## Bundling JS and Compiling SCSS\n\nIn our development environment, we use **Gulp** to bundle **JavaScript** and compile **SCSS** with the capability of `watch` so that any change on target files will automatically trigger the recompilation.\n\nIf you would like to set this up in your own development environment, you can do so following these simple instructions.\n\n\u003e Note that for this to work, you need to have **Gantry 5** source and not a package. You can either **clone** it or **download** the source from GitHub.\n\nThe first thing you need is `Node / NPM`. If you don’t have them already, you can grab the installer for your OS from [https://nodejs.org/download/](https://nodejs.org/download/).\n\nThe next step is to install all of the JS module dependencies. To do so, make sure you are at the root of the Gantry 5 project, and run the command `npm install`.\n\nOnce that’s done, you can install **Gulp**. We recommend installing Gulp globally so you can use the command from any folder. Here is the command to do so: `sudo npm install gulp --global`\n\nGantry has different sets of JS and CSS files that can be recompiled from the root. The first time you get started with Gantry, or if you ever need to reset and reinstall all the modules, you can run the command `npm run build-assets`. This operation will remove all the `node_modules` folders and re-run `npm install` in all the project folders. It will take a while.\n\nAn alternative method which won't remove all the `node_modules` folders is via `gulp -up`.\n\n\u003e Along with the `-up` command, you can alternatively use `-update`, `--update`, `-up`, `--up`, `-install`,\n\u003e `--install`, `-inst`, `--inst`, `-go`, `--go`, `-deps`, `--deps`.\n\u003e Whichever is easier for you to remember. The code will understand on its own if it needs to install for the first time or just update the node modules.\n\u003e\n\u003e Note that this might take a few moments.\n\nAt this point you have everything you need to run Gulp. Just type the command `gulp` and you should see the CSS and JS getting compiled.\n\nWe provide a few handy tasks as well:\n\n  1. `$ gulp` / `$ gulp all`: Compiles all of the CSS and JS in the project.\n  2. `$ gulp watch`: Starts the compilers in `watch` mode. Any change applied to targeted **JS** or **SCSS** files will trigger an automatic recompilation.\n  3. `$ gulp watch --css` / `$ gulp watch --js`: Starts the compilers in `watch` mode and listens to only **SCSS** or **JS** changes. Useful if you are only focusing on one and not the other.\n  4. `$ gulp css` / `$ gulp js`: Compiles all of either CSS or JS files, in case you are only working on one and not the other.\n  5. `$ gulp —prod`: Compiles every CSS and JS in production mode. The compiled files won’t have source maps and will be compressed (this usually takes slightly longer than normal mode).\n\n## Updating Google Fonts\n\nThe Google Fonts JSON file can be generated by following guide at `https://developers.google.com/fonts/docs/developer_api` or simply using the `https://www.googleapis.com/webfonts/v1/webfonts?key=YOUR-API-KEY` url. You need to enable usage of Google Fonts API and provide your API key in the place of `YOUR-API-KEY`.\n\n## License\nGantry Framework v5 or later is licensed under a dual license system ([MIT](http://www.opensource.org/licenses/mit-license.php) or [GPL version 2 or later](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html). This means you are free to choose which license (MIT or GPL version 2 or later) is appropriate for your needs.\n\n| [More Details](http://docs.gantry.org/gantry5/basics/license-and-usage) |\n|:-----------------------------------------------------------------------:|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgantry%2Fgantry5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgantry%2Fgantry5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgantry%2Fgantry5/lists"}