- Languages & frameworks:
- PHP 8.5+
- Symfony 7.3
- PostgreSQL 16.x (via Doctrine ORM 3.x)
- TypeScript
- Development requirements:
- Docker
- Symfony CLI
- Package managers:
- PHP: Composer
- TypeScript: NPM
- Frontend: Twig, EasyAdmin 4.x
- Frontend (JavaScript): Webpack Encore, Stimulus
- Linting: Rector, PHP-CS-Fixer, PHPStan
- Testing: PHPUnit 12.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
βββ Doctrine/
β βββ Entity/ # Doctrine ORM entities
β βββ Repository/ # Doctrine repositories
β βββ Type/ # Custom Doctrine types
β βββ DataFixtures/ # Database fixtures
βββ Encryption/ # Encryption utilities
βββ Entity/ # Enums (UserRole, PackageUpdateSource)
βββ EventListener/ # Symfony event listeners
βββ Form/ # Symfony form types
βββ Message/ # Symfony messenger messages and handlers (async jobs)
βββ Package/ # Package management services
βββ Routing/ # Symfony routing logic
βββ Twig/ # Twig extensions
βββ Validator/ # Symfony validators
templates/ # Twig templates
tests/
βββ UnitTests/ # Unit tests
βββ FunctionalTests/ # Functional/Integration tests
βββ Docker/ # Docker image tests
Dirigent follows the [PER coding style][per-coding-style] and the [Symfony coding standards][symfony-coding-standards].