PHPackages                             gacela-project/gacela - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. gacela-project/gacela

ActiveLibrary[Framework](/categories/framework)

gacela-project/gacela
=====================

Gacela helps you separate your project into modules

1.12.0(6mo ago)133118.3k—9.2%8[2 issues](https://github.com/gacela-project/gacela/issues)[7 PRs](https://github.com/gacela-project/gacela/pulls)8MITPHPPHP &gt;=8.1CI passing

Since Apr 2Pushed 2mo ago6 watchersCompare

[ Source](https://github.com/gacela-project/gacela)[ Packagist](https://packagist.org/packages/gacela-project/gacela)[ Docs](https://gacela-project.com)[ Fund](https://chemaclass.com/sponsor)[ RSS](/packages/gacela-project-gacela/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (14)Versions (66)Used By (8)

   ![Gacela logo](gacela-logo.svg)

 [ ![GitHub Build Status](https://github.com/gacela-project/gacela/actions/workflows/tests.yml/badge.svg) ](https://github.com/gacela-project/gacela/actions/workflows/tests.yml) [ ![Scrutinizer Code Quality](https://camo.githubusercontent.com/0aae59ec0e140c38c13886add6c5b38598cfde333a7e6b173abc973acf4008f2/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f676163656c612d70726f6a6563742f676163656c612f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e) ](https://scrutinizer-ci.com/g/gacela-project/gacela/?branch=main) [ ![Scrutinizer Code Coverage](https://camo.githubusercontent.com/ab79d38bc29572e1abb47916d749571a7f57d01062ee2b2aa3c1d5abdd84b5ed/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f676163656c612d70726f6a6563742f676163656c612f6261646765732f636f7665726167652e706e673f623d6d61696e) ](https://scrutinizer-ci.com/g/gacela-project/gacela/?branch=main) [ ![Psalm Type-coverage Status](https://camo.githubusercontent.com/22248434eb05330a02983fc79511b60e43631918041434911a3ac8d1c84bc240/68747470733a2f2f73686570686572642e6465762f6769746875622f676163656c612d70726f6a6563742f676163656c612f636f7665726167652e737667) ](https://shepherd.dev/github/gacela-project/gacela) [ ![Mutation testing badge](https://camo.githubusercontent.com/0ec8cabe7082f16778695fa585a2884b4aedac7272b6d571c41f0c66cfd3de4e/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f7374796c653d666c61742675726c3d687474707325334125324625324662616467652d6170692e737472796b65722d6d757461746f722e696f2532466769746875622e636f6d253246676163656c612d70726f6a656374253246676163656c612532466d61696e) ](https://dashboard.stryker-mutator.io/reports/github.com/gacela-project/gacela/main) [ ![MIT Software License](https://camo.githubusercontent.com/784362b26e4b3546254f1893e778ba64616e362bd6ac791991d2c9e880a3a64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667) ](https://github.com/gacela-project/gacela/blob/master/LICENSE)

Gacela helps you build modular applications
-------------------------------------------

[](#gacela-helps-you-build-modular-applications)

**VISION**: Simplify the communication of your different modules in your web application.

**MISSION**: Normalize the entry point of a module, without interfering with your domain-business logic.

Splitting your project into different modules help in terms of maintainability and scalability. It encourages your modules to interact with each other in a unified way by following these rules:

- Modules interact with each other **only** via their **Facade**
- The [**Facade**](https://gacela-project.com/docs/facade/) is the *entry point* of a module
- The [**Factory**](https://gacela-project.com/docs/factory/) manage the *intra-dependencies* the module
- The [**Provider**](https://gacela-project.com/docs/provider/) resolves the *extra-dependencies* of the module
- The [**Config**](https://gacela-project.com/docs/config/) access the project's *config files*

### Installation

[](#installation)

```
composer require gacela-project/gacela
```

### Getting started

[](#getting-started)

See the [getting started guide](docs/getting-started.md) for a step-by-step example of creating your first module.

### Module structure

[](#module-structure)

You can prefix gacela classes with the module name to improve readability. See more [about gacela](https://gacela-project.com/about-gacela/).

An example of an application structure using gacela modules:

```
application-name
├── gacela.php
├── config
│   └── ...
│
├── src
│   ├── ModuleA
│   │   ├── Domain
│   │   │   └── ...
│   │   ├── Application
│   │   │   └── ...
│   │   ├── Infrastructure
│   │   │   └── ...
│   │   │ # These are the 4 "gacela classes":
│   │   ├── Facade.php
│   │   ├── Factory.php
│   │   ├── Provider.php
│   │   └── Config.php
│   │
│   └── ModuleB
│       └── ...
│
├── tests
│   └── ...
└── vendor
    └── ...
```

### Static Analysis

[](#static-analysis)

Gacela provides configuration files for PHPStan and Psalm that suppress false positives related to dynamic resolution via `#[ServiceMap]` attributes.

**PHPStan**: Include `phpstan-gacela.neon` in your `phpstan.neon`:

```
includes:
    - vendor/gacela-project/gacela/phpstan-gacela.neon
```

**Psalm**: Include `psalm-gacela.xml` using XInclude:

```

```

This suppresses warnings about:

- Magic methods `getFacade()`, `getFactory()`, `getConfig()` resolved via `ServiceResolverAwareTrait`
- Config methods on `AbstractConfig` that are resolved at runtime
- Type mismatches where Gacela resolves the correct concrete type

### Documentation

[](#documentation)

You can check the full documentation in the official [website](https://gacela-project.com/).

### Examples

[](#examples)

You can see examples using gacela in [this repository](https://github.com/gacela-project/gacela-example).

### Contribute

[](#contribute)

You are more than welcome to contribute reporting [issues](https://github.com/gacela-project/gacela/issues), sharing [ideas](https://github.com/gacela-project/gacela/discussions), or [contributing](.github/CONTRIBUTING.md) with your Pull Requests.

---

> Inspired by Spryker Framework:

###  Health Score

60

—

FairBetter than 99% of packages

Maintenance76

Regular maintenance activity

Popularity47

Moderate usage in the ecosystem

Community29

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 81% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~31 days

Recently: every ~86 days

Total

55

Last Release

190d ago

Major Versions

0.32.0 → 1.0.02023-01-01

PHP version history (3 changes)0.1.0PHP &gt;=7.4

1.0.0PHP ^8.0, &lt;8.3

1.7.0PHP &gt;=8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/3d166420c6770c5941e10bd68b2d26501eabb432e280d8e6eba0a344bcc1e5ae?d=identicon)[Chemaclass](/maintainers/Chemaclass)

![](https://www.gravatar.com/avatar/104da2afcf190e1628dd0cbb29d4f404be41286642d23b51700002d60635ada1?d=identicon)[JesusValeraDev](/maintainers/JesusValeraDev)

---

Top Contributors

[![Chemaclass](https://avatars.githubusercontent.com/u/5256287?v=4)](https://github.com/Chemaclass "Chemaclass (1226 commits)")[![JesusValeraDev](https://avatars.githubusercontent.com/u/6381924?v=4)](https://github.com/JesusValeraDev "JesusValeraDev (266 commits)")[![localheinz](https://avatars.githubusercontent.com/u/605483?v=4)](https://github.com/localheinz "localheinz (8 commits)")[![antonio-gg-dev](https://avatars.githubusercontent.com/u/13595197?v=4)](https://github.com/antonio-gg-dev "antonio-gg-dev (5 commits)")[![webcraftniray](https://avatars.githubusercontent.com/u/4202977?v=4)](https://github.com/webcraftniray "webcraftniray (5 commits)")[![jenshaase](https://avatars.githubusercontent.com/u/176220?v=4)](https://github.com/jenshaase "jenshaase (2 commits)")[![alexandrajulius](https://avatars.githubusercontent.com/u/23189414?v=4)](https://github.com/alexandrajulius "alexandrajulius (1 commits)")

---

Tags

frameworkgacelalibrarymodularphpphpframeworkkernelmodular

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Psalm, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/gacela-project-gacela/health.svg)

```
[![Health](https://phpackages.com/badges/gacela-project-gacela/health.svg)](https://phpackages.com/packages/gacela-project-gacela)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
