PHPackages                             darkwood/darkwood - 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. darkwood/darkwood

ActiveLibrary[Framework](/categories/framework)

darkwood/darkwood
=================

The Darkwood PHP framework

v8.0.13(1w ago)10[1 PRs](https://github.com/darkwood-com/darkwood/pulls)MITPHPPHP &gt;=8.5CI passing

Since May 25Pushed 1w agoCompare

[ Source](https://github.com/darkwood-com/darkwood)[ Packagist](https://packagist.org/packages/darkwood/darkwood)[ Docs](https://darkwood.com)[ RSS](/packages/darkwood-darkwood/feed)WikiDiscussions 8.0 Synced 1w ago

READMEChangelog (4)DependenciesVersions (6)Used By (0)

[ ![Darkwood Logo](https://camo.githubusercontent.com/ed9191001b99da221650e5e721264b2a8bb9705f4442b0db1aef180d21d97fd9/68747470733a2f2f6461726b776f6f642e636f6d2f6c6f676f2e737667)](https://darkwood.com)

Development repository for [Darkwood](https://github.com/darkwood-com) PHP libraries and Symfony bundles.

All packages share a **single global version line** (Symfony-style): one tag (`v8.0.11`, `v8.0.12`, …) applies to the monorepo and to every satellite repository published on Packagist.

- Default branch: `8.0`
- Changelog: [CHANGELOG-8.0.md](CHANGELOG-8.0.md)
- Upgrading from pre-unified tags: [UPGRADE-8.0.md](UPGRADE-8.0.md)

Packages
--------

[](#packages)

PathComposer namePublic repository`src/Darkwood/Component/Navi``darkwood/navi`[darkwood-com/navi](https://github.com/darkwood-com/navi)`src/Darkwood/Component/Flow``darkwood/flow`[darkwood-com/flow](https://github.com/darkwood-com/flow)`src/Darkwood/Bundle/MediaBundle``darkwood/media-bundle`[darkwood-com/media-bundle](https://github.com/darkwood-com/media-bundle)`src/Darkwood/Bundle/IaExceptionBundle``darkwood/ia-exception-bundle`[darkwood-com/ia-exception-bundle](https://github.com/darkwood-com/ia-exception-bundle)Package-specific documentation, installation, and usage live in each package `README.md`.

Requirements
------------

[](#requirements)

- PHP **8.5+** for Navi, Flow, MediaBundle, and IaExceptionBundle
- [Composer](https://getcomposer.org)
- OpenSwoole extension for Navi and Flow CI runtime tests

Local development
-----------------

[](#local-development)

Work inside the package directory you are changing:

```
cd src/Darkwood/Component/Navi   # or Flow, MediaBundle, IaExceptionBundle
composer install
```

### Quality assurance (per package)

[](#quality-assurance-per-package)

Execute targets via `make`:

```
make php-cs-fixer
make phpstan
make phpunit
```

### Link monorepo packages into another project

[](#link-monorepo-packages-into-another-project)

After `composer install` in a consuming application, symlink local clones from this monorepo:

```
./link /path/to/your/symfony-app
```

Use `./link --rollback /path/to/your/symfony-app` to restore vendor copies, then run `composer install` in the app.

Repository layout
-----------------

[](#repository-layout)

```
darkwood/
└── .github/           # CI, fabbot, PR template, packages manifest
├── src/
│   └── Darkwood/
│       ├── Component/     # Standalone libraries (Navi, Flow)
│       └── Bundle/        # Symfony bundles
├── link               # Symlink darkwood/* packages from vendor to this monorepo
├── splitsh.json       # Monorepo path → satellite Git repository mapping
├── CHANGELOG-8.0.md   # Unified release changelog
├── RELEASING.md       # Release process for maintainers
├── UPGRADE-8.0.md     # Upgrade notes between unified versions
├── CONTRIBUTING.md

```

### Continuous integration

[](#continuous-integration)

GitHub Actions at `.github/workflows/ci.yml` runs on every pull request and push to `8.0`:

- **Fabbot** — coding standards and license headers
- **QA** — only for packages touched by the PR (PHP CS Fixer, PHPStan, PHPUnit per `packages.json`)

On push to `8.0`, all packages are tested. Changing files under `.github/` triggers a full run.

Run the same checks locally for one package:

```
.github/ci-run-package.sh navi
```

Contributing
------------

[](#contributing)

Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.

License
-------

[](#license)

MIT — see [LICENSE](LICENSE).

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance98

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~1 days

Total

5

Last Release

13d ago

Major Versions

v1.3.0 → v8.0.122026-05-25

### Community

Maintainers

![](https://www.gravatar.com/avatar/97714c2a86385f953811112ab18938b453bc0f826f91753730037ad5f9c7dbe9?d=identicon)[matyo91](/maintainers/matyo91)

---

Top Contributors

[![matyo91](https://avatars.githubusercontent.com/u/1254025?v=4)](https://github.com/matyo91 "matyo91 (418 commits)")

---

Tags

bundledarkwoodframeworkphpphp-frameworksymfonysymfony-bundleframeworkdev

### Embed Badge

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

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

###  Alternatives

[symfony/symfony

The Symfony PHP framework

31.4k86.9M2.2k](/packages/symfony-symfony)[spatie/pest-plugin-route-testing

Make sure all routes in your Laravel app are ok

13864.8k](/packages/spatie-pest-plugin-route-testing)[pestphp/pest-plugin-stressless

Stressless plugin for Pest

68943.9k18](/packages/pestphp-pest-plugin-stressless)

PHPackages © 2026

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