Gacela helps you separate your project into modules

Maintainers

Package info

github.com/gacela-project/gacela

Homepage

pkg:composer/gacela-project/gacela

Transparency log

Fund package maintenance!

chemaclass.com/sponsor

Statistics

Installs: 215 241

Dependents: 12

Suggesters: 2

Stars: 134

Open Issues: 0

2.3.0 2026-08-15 09:23 UTC

README

Gacela logo

GitHub Build Status Packagist Downloads Psalm Type-coverage Status Mutation testing badge MIT Software License

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:

Contributing

Report issues, share ideas, or open a pull request.

Inspired by Spryker.