- Languages & frameworks:
- PHP 8.5+
- Symfony 8.1
- PostgreSQL 16.x (via Doctrine ORM 3.x)
- Node 24
- TypeScript
- Development requirements:
- Docker
- Symfony CLI
- Package managers:
- PHP: Composer
- TypeScript: NPM
- Frontend: Twig, EasyAdmin 5.x
- Frontend (JavaScript): Webpack Encore, Stimulus
- Linting: Rector, PHP-CS-Fixer, PHPStan
- Testing: PHPUnit 13.x, Testcontainers
assets/ # Frontend assets
config/ # Symfony configuration
migrations/ # Doctrine migrations (PostgreSQL)
src/
├── Attribute/ # PHP attributes
├── Command/ # Symfony console commands
├── Composer/ # Composer integration logic
├── Controller/ # HTTP controllers
│ └── Dashboard/ # EasyAdmin dashboard controllers
├── DependencyInjection/ # Symfony dependency injection configuration
├── Doctrine/
│ ├── Entity/ # Doctrine ORM entities
│ ├── Repository/ # Doctrine repositories
│ ├── Type/ # Custom Doctrine types
│ └── DataFixtures/ # Database fixtures
├── EasyAdmin/ # EasyAdmin fields and filters
├── Encryption/ # Encryption utilities
├── Entity/ # Domain classes
├── EventListener/ # Symfony event listeners
├── Form/ # Symfony form types
├── Message/ # Symfony messenger messages and handlers (async jobs)
├── Package/ # Package management services
├── Rector/ # Project-specific Rector rules
├── Routing/ # Symfony routing logic
├── Twig/ # Twig extensions
└── Validator/ # Symfony validators
templates/ # Twig templates
tests/
├── UnitTests/ # Unit tests
├── FunctionalTests/ # Functional/Integration tests
├── Helper/ # Shared test classes
└── ImageTests/ # OCI image tests
Dirigent follows the PER coding style and the Symfony coding standards.