c975l/core-bundle

The base of the c975L ecosystem in a single package: ConfigBundle (database-backed configuration, EasyAdmin dashboard, user accounts, health check, sitemaps) and UiBundle (page blocks, media library, theme, legal models, forms, emails). Two bundles, one package, one release.

Maintainers

Package info

github.com/975L/CoreBundle

Type:symfony-bundle

pkg:composer/c975l/core-bundle

Transparency log

Statistics

Installs: 51

Dependents: 3

Suggesters: 0

Stars: 1

Open Issues: 0

v1.1.2 2026-08-03 20:16 UTC

This package is auto-updated.

Last update: 2026-08-03 20:17:21 UTC


README

The base of the c975L ecosystem in a single package: ConfigBundle (database-backed configuration, EasyAdmin dashboard, user accounts, health check, sitemaps) and UiBundle (page blocks, media library, theme, legal models, forms, emails). Two bundles, one package, one release.

GitHub Packagist Version PHP Version

One package, two bundles

CoreBundle

This is not a merged bundle. A Composer package is not a Symfony bundle: this package ships the two bundles unchanged, each with its own namespace, its own services.yaml, its own configs.json, its own translation domain and its own dashboard section.

CoreBundle/
├── composer.json      ← the only one
├── ConfigBundle/      → c975L\ConfigBundle\
└── UiBundle/          → c975L\UiBundle\

There is no c975L\CoreBundle\ namespace. The name core-bundle exists on Packagist only.

Why they ship together

ConfigBundle and UiBundle referenced each other in their composer.json, in both directions:

  • Ui → Config is deep and deliberate: ConfigServiceInterface is read everywhere, and every *ProviderInterface of the generic registry mechanism is declared in ConfigBundle.
  • Config → Ui comes from the dashboard itself (FontRegistry, FormThemeRegistry, StylesheetManagementRegistry, ScriptAdminRegistry, WhatsNewRegistry) and from user accounts (Form/FormField + EmailService).

Two packages that require each other cannot be released independently, and neither can see the other's work-in-progress — only its last published version. They were never two layers; they were one layer billed as two. This package says so out loud.

Installation

composer require c975l/core-bundle

Then register both bundles — they remain two entries:

// config/bundles.php
return [
    // ...
    c975L\ConfigBundle\c975LConfigBundle::class => ['all' => true],
    c975L\UiBundle\c975LUiBundle::class => ['all' => true],
];

Documentation

Each bundle keeps its own README, unchanged:

Its history, on the other hand, is the package's: ChangeLog.md and UPGRADE.md carry both bundles from here on. Each bundle's own files stop at its last published release — v5.17.1 for ConfigBundle, v1.17.0 for UiBundle — and are kept as archives.

Quality checks

The five checks the CI runs live in composer.json alone, as one list:

composer qa

composer run -l names what each one covers, and each is callable on its own (composer cs, fixer, stan, stan-scaffold, test). The workflow calls those same scripts, so a check is never declared twice.

A development machine's vendor/ symlinks the sibling repositories, which expose code no tag has published yet — code the CI never sees. bin/ci.sh replays composer qa on a copy of the repository whose dependencies are resolved from Packagist, uncommitted changes included:

bin/ci.sh

Migrating from c975l/config-bundle / c975l/ui-bundle

See UPGRADE.md. In short: replace the two requirements with c975l/core-bundle. No PHP use, no @c975LUi/… template reference, no translation key and no bundles.php entry changes — the namespaces are the same ones.

License

MIT — see LICENSE.