PHPackages                             middag-io/moodle - 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. middag-io/moodle

ActiveLibrary[Framework](/categories/framework)

middag-io/moodle
================

MIDDAG Moodle adapter — platform bindings, ACL layer, and Moodle-specific implementations for middag-framework

v0.5.0(today)01↑2900%[1 issues](https://github.com/middag-io/middag-php-moodle/issues)Apache-2.0PHPPHP ^8.2CI passing

Since Jun 26Pushed todayCompare

[ Source](https://github.com/middag-io/middag-php-moodle)[ Packagist](https://packagist.org/packages/middag-io/moodle)[ RSS](/packages/middag-io-moodle/feed)WikiDiscussions main Synced today

READMEChangelog (2)Dependencies (16)Versions (4)Used By (0)

middag-io/moodle
================

[](#middag-iomoodle)

[![License: Apache 2.0](https://camo.githubusercontent.com/5b60841bea9e11d9d0b0950d690c9bc554e06385634056a7d5d62a15d1a4eabe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368655f322e302d626c75652e737667)](https://opensource.org/licenses/Apache-2.0)

MIDDAG Moodle adapter — platform bindings, ACL layer, and Moodle-specific implementations of the [`middag-io/framework`](https://github.com/middag-io/middag-php-framework)contracts.

> **License:** Apache-2.0.

What this package is
--------------------

[](#what-this-package-is)

`middag-io/moodle` is the Moodle host adapter for the MIDDAG framework. It provides the Moodle-side implementations of the framework's adapter contracts — bootstrap, config resolution, signal dispatch, command bus, outbox, user context — plus Moodle API wrappers (`Support/`), entities, DTOs, settings types, and PDF / HTTP / Inertia infrastructure.

It binds the framework to a Moodle site. A Moodle plugin provides the composition root that wires it in; any `local_*` or `mod_*` plugin can play that role.

### What it does not include

[](#what-it-does-not-include)

- No product features, business rules, or governed domain capabilities.
- No dependency on any non-OSS MIDDAG package — the adapter builds only on the OSS framework and the host platform. Importing any non-OSS MIDDAG namespace or package is forbidden and enforced by `composer check:boundaries` and the adapter isolation tests.
- No bundled Moodle plugin. You wire the adapter into your own plugin.

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

[](#requirements)

- PHP `^8.2` (tested on 8.2, 8.3, 8.4)
- `ext-json`
- A Moodle site (the adapter targets Moodle's runtime APIs)

Installation
------------

[](#installation)

```
composer require middag-io/moodle
```

This pulls `middag-io/framework` and `middag-io/ui` automatically.

> The `middag-io/*` packages are published on [Packagist](https://packagist.org/packages/middag-io/), so they resolve from the default Composer registry with no extra configuration. No manual `repositories` entry is required.

Development
-----------

[](#development)

```
git clone https://github.com/middag-io/middag-php-moodle
cd middag-php-moodle
composer install
```

Run the quality gates and the test suite:

```
composer check   # boundaries + PHPStan + PHP-CS-Fixer + Rector (dry-run)
composer test    # PHPUnit
```

Git hooks are configured automatically via `post-install-cmd`. The `commit-msg`hook enforces [Conventional Commits](https://www.conventionalcommits.org/).

### Working against a sibling framework checkout

[](#working-against-a-sibling-framework-checkout)

During development the adapter can resolve the OSS `middag-io/framework` package from a sibling path repository (`../middag-php-framework`, symlinked) declared in `composer.json`. This is a **development-only** convenience for editing the framework and the adapter side by side. Published releases resolve the dependency through the normal Composer registry — the path repository has no effect on consumers.

### `composer.lock` is gitignored

[](#composerlock-is-gitignored)

Like a typical library, this repo does not commit `composer.lock`; consumers pin versions in their own application. Because the development setup may use a path repository for the framework, a **local** `composer.lock` can show path or dev references. That is expected local development state and **not** a defect in the released package.

See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the full contributor setup, including the dependency-resolution notes.

### Commit format

[](#commit-format)

```
type(scope): description

Types: feat, fix, chore, docs, style, refactor, perf, test, build, ci, revert

```

### Releases

[](#releases)

Releases are managed by [release-please](https://github.com/googleapis/release-please). Conventional commits merged to `main` open a Release PR automatically.

License
-------

[](#license)

Licensed under the [Apache License 2.0](LICENSE). See [`NOTICE`](NOTICE) for attribution.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor1

Top contributor holds 87.5% 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 ~0 days

Total

2

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/6410303?v=4)[Michael Douglas Meneses de Souza](/maintainers/michaelmeneses)[@michaelmeneses](https://github.com/michaelmeneses)

---

Top Contributors

[![michaelmeneses](https://avatars.githubusercontent.com/u/6410303?v=4)](https://github.com/michaelmeneses "michaelmeneses (7 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/middag-io-moodle/health.svg)

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

###  Alternatives

[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.4M519](/packages/shopware-core)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M196](/packages/sulu-sulu)[symfony/framework-bundle

Provides a tight integration between Symfony components and the Symfony full-stack framework

3.6k246.0M11.1k](/packages/symfony-framework-bundle)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.1k16.8k](/packages/prestashop-prestashop)[oro/platform

Business Application Platform (BAP)

642140.7k104](/packages/oro-platform)

PHPackages © 2026

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