gacela-project/gacela
| Install | |
|---|---|
composer require gacela-project/gacela |
|
| Latest Version: | 2.4.0 |
| PHP: | >=8.3 |
| License: | MIT |
| Last Updated: | Aug 17, 2026 |
| Links: | GitHub · Packagist |
Gacela — build modular PHP applications
Gacela normalizes module boundaries so parts of your application communicate through a single entry point, without leaking internals.
Each module is built from four pillars — only the first two are required:
- Facade — public API, the only way in
- Factory — creates internal services
- Provider — wires external dependencies (optional)
- Config — reads project config (optional)
Installation
composer require gacela-project/gacela
Requires PHP 8.3+. Coming from 1.x? See UPGRADE.md.
Module structure
app/
├── gacela.php
├── config/
└── src/
└── Blog/
├── BlogFacade.php
├── BlogFactory.php
├── BlogProvider.php
└── BlogConfig.php
That is what make:module App/Blog below writes. Pass --short-name for Facade.php instead of BlogFacade.php — both resolve; the prefix is the default because it survives being read out of context.
CLI
vendor/bin/gacela init # scaffold gacela.php
vendor/bin/gacela make:module App/Blog # scaffold a module
vendor/bin/gacela # every command
Modules can be inspected, validated and prepared for production — see CLI commands.
Documentation
Start with getting started, then getting a dependency — the one that answers "how do I reach that from here". docs/ is the full index; the rest:
- Upgrading from 1.x
- CLI commands
- Container configuration — bindings, contextual bindings, attributes, hooks
- Caching and cacheable methods
- Static analysis (PHPStan / Psalm)
- Module health checks
- Events
- Testing
- Opcache preload and production performance
- Full reference: gacela-project.com
- Symfony bundle — bootstrap Gacela from the kernel, reach Symfony services,
bin/console gacela:* - Laravel provider — bootstrap Gacela when the app boots, reach Laravel services,
artisan gacela:* - Examples:
- gacela-example
- symfony-gacela-example — Gacela with Symfony 7.4
- laravel-gacela-example — Gacela with Laravel 12
Contributing
Report issues, share ideas, or open a pull request.
Inspired by Spryker.