PHPackages                             codemonster-ru/annabel - 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. codemonster-ru/annabel

ActiveLibrary[Framework](/categories/framework)

codemonster-ru/annabel
======================

Elegant and lightweight PHP framework for modern web applications

v1.15.2(3w ago)01311MITPHPPHP &gt;=8.2CI passing

Since Jun 10Pushed 2w agoCompare

[ Source](https://github.com/codemonster-ru/annabel-framework)[ Packagist](https://packagist.org/packages/codemonster-ru/annabel)[ Docs](https://github.com/codemonster-ru/annabel)[ RSS](/packages/codemonster-ru-annabel/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (36)Versions (28)Used By (1)

Annabel
=======

[](#annabel)

Annabel is the official monorepo for the Codemonster PHP framework ecosystem.

Structure
---------

[](#structure)

```
packages/
  api-resource/ codemonster-ru/api-resource
  framework/   codemonster-ru/annabel
  support/     codemonster-ru/support
  http/        codemonster-ru/http
  http-client/ codemonster-ru/http-client
  router/      codemonster-ru/router
  view/        codemonster-ru/view
  view-php/    codemonster-ru/view-php
  view-ssr/    codemonster-ru/view-ssr
  razor/       codemonster-ru/razor
  cache/       codemonster-ru/cache
  config/      codemonster-ru/config
  env/         codemonster-ru/env
  events/      codemonster-ru/events
  database/    codemonster-ru/database
  session/     codemonster-ru/session
  auth/        codemonster-ru/auth
  filesystem/  codemonster-ru/filesystem
  validation/  codemonster-ru/validation
  logging/     codemonster-ru/logging
  mail/        codemonster-ru/mail
  queue/       codemonster-ru/queue
  scheduler/   codemonster-ru/scheduler
  errors/      codemonster-ru/errors
  security/    codemonster-ru/security
  dumper/      codemonster-ru/dumper
  ssr-bridge/  codemonster-ru/ssr-bridge

skeleton/
  annabel-skeleton/ codemonster-ru/annabel-skeleton

applications/
  annabel-cms/ codemonster-ru/annabel-cms

```

`packages/` contains reusable libraries published as package splits. `skeleton/` contains starter project templates, not maintained applications. `applications/` contains maintained applications and products.

The framework package `codemonster-ru/annabel` lives in `packages/framework`. The application skeleton lives in `skeleton/annabel-skeleton`. The official CMS lives in `applications/annabel-cms`.

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

[](#development)

The root `composer.json` declares path repositories for `packages/*`. Package manifests are kept inside their package directories so they can still be published as independent Composer packages.

Architecture and release rules:

- [Architecture](maintenance/ARCHITECTURE.md)
- [Release policy](maintenance/RELEASE.md)

Run the full release gate before tagging or splitting packages:

```
composer quality
```

Package Splits
--------------

[](#package-splits)

Package repositories are updated from this monorepo by the `Split Packages`workflow. The workflow requires a `MONOREPO_SPLIT_TOKEN` secret with write access to the target repositories.

All package releases use package-scoped tags in the monorepo:

```
git tag framework/v1.15.0
git push origin framework/v1.15.0
```

```
git tag support/v1.5.0
git push origin support/v1.5.0
```

The split workflow pushes the package contents and a normal Composer tag, such as `v1.5.0`, to the target package repository. The framework package target is `codemonster-ru/annabel-framework`; the public `codemonster-ru/annabel`repository remains the monorepo. The skeleton target is `codemonster-ru/annabel-skeleton`, and the CMS target is `codemonster-ru/annabel-cms`.

Split repositories are publishing mirrors and should be treated as read-only. Make code changes in this monorepo only. Public Packagist packages should point to the split repositories, including `codemonster-ru/annabel`, which should use the `codemonster-ru/annabel-framework` split repository as its source.

Every push to monorepo `main` updates the `main` branch of each split repository. Package-scoped tags publish version tags and GitHub releases only for the selected package.

Annabel CMS
-----------

[](#annabel-cms)

Install and test the CMS against symlinked monorepo packages:

```
composer install:cms
composer test:cms
composer analyse:cms
```

The public CMS manifest uses stable Packagist constraints. Its `composer.dev.json` is reserved for monorepo development.

Docker
------

[](#docker)

Build and start the complete monorepo development stack:

```
docker compose up -d --build
```

This starts both applications, their asset watchers, one shared MySQL server, Redis for CMS sessions, and phpMyAdmin.

ServiceURLSkeletonSkeleton ViteSkeleton phpMyAdminAnnabel CMSAnnabel CMS adminMySQL is published on `3307`. Skeleton and CMS use separate databases on that server so their `users`, `migrations`, and other application tables cannot collide.

The `skeleton` service installs the skeleton with `skeleton/annabel-skeleton/composer.dev.json`, which points Composer at the local packages in this monorepo. Development dependencies are symlinked from `packages/*`, so changes in packages are visible in the browser without publishing them first.

The `skeleton-assets` service provides skeleton HMR. The `cms-assets` service watches the admin Vue and CSS sources and rebuilds the CMS manifest automatically; refresh `/admin` to load the rebuilt bundle.

The `cms` service uses `applications/annabel-cms/composer.dev.json`, so its Annabel dependencies are also symlinked from `packages/*`.

`applications/annabel-cms/docker-compose.yml` remains the standalone Docker entrypoint shipped to the split `codemonster-ru/annabel-cms` repository. The root Compose file is the monorepo orchestration layer.

Database credentials:

```
server: db
username: annabel
password: annabel
skeleton database: annabel
CMS database: annabel_cms

```

Install and test a package from inside the container:

```
docker compose run --rm php composer --working-dir=packages/framework config repositories.monorepo '{"type":"path","url":"../*","canonical":true,"options":{"symlink":true}}'
docker compose run --rm php composer --working-dir=packages/framework update --prefer-dist
docker compose run --rm php composer --working-dir=packages/framework test
```

Stop the development services:

```
docker compose down
```

###  Health Score

47

↑

FairBetter than 93% of packages

Maintenance96

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity56

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 ~10 days

Recently: every ~40 days

Total

27

Last Release

23d ago

Major Versions

v0.0.5 → v1.0.02025-10-17

PHP version history (2 changes)v0.0.1PHP &gt;=8.1

v1.0.0PHP &gt;=8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/33142935?v=4)[Kirill Kolesnikov](/maintainers/KolesnikovKirill)[@KolesnikovKirill](https://github.com/KolesnikovKirill)

---

Top Contributors

[![KolesnikovKirill](https://avatars.githubusercontent.com/u/33142935?v=4)](https://github.com/KolesnikovKirill "KolesnikovKirill (87 commits)")

---

Tags

annabelcodemonstercontainerframeworkmvcphprouterviewphpcontainerframeworkroutermvcviewcodemonsterannabel

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/codemonster-ru-annabel/health.svg)

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

###  Alternatives

[symfony/symfony

The Symfony PHP framework

31.4k87.2M2.2k](/packages/symfony-symfony)[cakephp/cakephp

The CakePHP framework

8.9k19.5M1.8k](/packages/cakephp-cakephp)[typo3/cms

TYPO3 CMS is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.

1.2k1.9M122](/packages/typo3-cms)[shopware/platform

The Shopware e-commerce core

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

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[spiral/framework

Spiral, High-Performance PHP/Go Framework

2.1k2.2M66](/packages/spiral-framework)

PHPackages © 2026

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