atriumphp / atrium
A PHP-configured, modular admin panel framework for Symfony, powered by Live Components.
Requires
- php: >=8.4
- symfony/config: ^8.1
- symfony/dependency-injection: ^8.1
- symfony/framework-bundle: ^8.1
- symfony/http-foundation: ^8.1
- symfony/http-kernel: ^8.1
- symfony/property-access: ^8.1
- symfony/routing: ^8.1
- symfony/twig-bundle: ^8.1
- symfony/ux-chartjs: ^3.1
- symfony/ux-live-component: ^3.0
- symfony/ux-twig-component: ^3.0
- symfony/validator: ^8.1
Requires (Dev)
- doctrine/orm: ^3.0
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.5 || ^12.0 || ^13.0
- symfony/asset: ^8.1
- symfony/asset-mapper: ^8.1
- symfony/browser-kit: ^8.1
- symfony/css-selector: ^8.1
- symfony/phpunit-bridge: ^8.1
- symfony/var-exporter: ^8.1
Suggests
- doctrine/orm: Default DataProvider adapter (DoctrineDataProvider) for reading/writing entities.
- symfony/asset-mapper: Serves the panel's precompiled stylesheet and JavaScript with no build step.
- symfony/ux-live-component: Required for the reactive table, form and widget components.
- symfony/ux-twig-component: Required for the framework's Twig components.
This package is auto-updated.
Last update: 2026-06-03 18:09:06 UTC
README
A PHP-configured, modular, open-source admin panel framework for Symfony. Describe an admin interface entirely in PHP (resources, columns, fields, actions) and get a polished, reactive UI with no JavaScript build step and no separate API. Reactivity is delivered server-side via Symfony UX Live Components; styling via Tailwind.
Status: pre-1.0, under active development. The reactive panel, tables, forms (fields, layout, tabs/wizards, validation, reactivity), actions, query scoping and the full resource lifecycle are implemented and tested. See the integration guide to build with it, the
CHANGELOGfor what's landed, anddocs/PRDs/PRD.mdfor the roadmap.
Documentation
The integration guide is the place to start — install and build your first resource, then dive into resources, tables, forms, actions and data.
Requirements
- PHP >= 8.4
- Symfony 8.1
Installation
composer require atriumphp/atrium
Register the bundle (Symfony Flex does this automatically; otherwise add it to
config/bundles.php):
return [ // ... Atrium\AtriumBundle::class => ['all' => true], ];
Defining a resource
A resource is one PHP class per entity — point it at the entity, describe the table and the form, and Atrium discovers it automatically (no tags, no YAML) and serves a full CRUD screen:
use Atrium\Form\Field\TextField; use Atrium\Form\Schema; use Atrium\Resource\AdminResource; use Atrium\Table\Column; use Atrium\Table\TableConfiguration; final class TagResource extends AdminResource { public function getEntityClass(): string { return Tag::class; } public function table(TableConfiguration $table): TableConfiguration { return $table->columns([ Column::make('name')->sortable()->searchable(), Column::make('slug'), ]); } public function form(Schema $schema): Schema { return $schema->fields([ TextField::make('name')->required(), TextField::make('slug')->required(), ]); } }
That's a searchable, sortable, paginated list with Edit/New actions and a
validated create/edit form, at /admin/tag. Non-trivial resources delegate to
dedicated Tables/, Schemas/ and Pages/ classes; small ones inline as above.
See the getting-started guide for the
full walkthrough.
Quality gates
composer test # PHPUnit composer phpstan # PHPStan (max) composer cs # PHP-CS-Fixer (Symfony ruleset), dry-run check composer cs:fix # PHP-CS-Fixer, apply
License
MIT.
