|
| 1 | +# Dirigent architecture |
| 2 | + |
| 3 | +## Technology stack |
| 4 | + |
| 5 | +- **Languages & frameworks**: |
| 6 | + - PHP 8.3+ |
| 7 | + - Symfony 7.3 |
| 8 | + - PostgreSQL 16.x (via Doctrine ORM 3.x) |
| 9 | + - TypeScript |
| 10 | +- **Development requirements**: |
| 11 | + - Docker |
| 12 | + - Symfony CLI |
| 13 | +- **Package managers**: |
| 14 | + - **PHP**: Composer |
| 15 | + - **TypeScript**: NPM |
| 16 | +- **Frontend**: Twig, EasyAdmin 4.x |
| 17 | +- **Frontend (JavaScript)**: Webpack Encore, Stimulus |
| 18 | +- **Linting**: Rector, PHP-CS-Fixer, PHPStan |
| 19 | +- **Testing**: PHPUnit 12.x, Testcontainers |
| 20 | + |
| 21 | +## Directory structure |
| 22 | + |
| 23 | +``` |
| 24 | +assets/ # Frontend assets |
| 25 | +config/ # Symfony configuration |
| 26 | +migrations/ # Doctrine migrations (PostgreSQL) |
| 27 | +src/ |
| 28 | +├── Attribute/ # PHP attributes |
| 29 | +├── Command/ # Symfony console commands |
| 30 | +├── Composer/ # Composer integration logic |
| 31 | +├── Controller/ # HTTP controllers |
| 32 | +│ └── Dashboard/ # EasyAdmin dashboard controllers |
| 33 | +├── Doctrine/ |
| 34 | +│ ├── Entity/ # Doctrine ORM entities |
| 35 | +│ ├── Repository/ # Doctrine repositories |
| 36 | +│ ├── Type/ # Custom Doctrine types |
| 37 | +│ └── DataFixtures/ # Database fixtures |
| 38 | +├── Encryption/ # Encryption utilities |
| 39 | +├── Entity/ # Enums (UserRole, PackageUpdateSource) |
| 40 | +├── EventListener/ # Symfony event listeners |
| 41 | +├── Form/ # Symfony form types |
| 42 | +├── Message/ # Symfony messenger messages and handlers (async jobs) |
| 43 | +├── Package/ # Package management services |
| 44 | +├── Routing/ # Symfony routing logic |
| 45 | +├── Twig/ # Twig extensions |
| 46 | +└── Validator/ # Symfony validators |
| 47 | +templates/ # Twig templates |
| 48 | +tests/ |
| 49 | +├── UnitTests/ # Unit tests |
| 50 | +├── FunctionalTests/ # Functional/Integration tests |
| 51 | +└── Docker/ # Docker image tests |
| 52 | +``` |
| 53 | + |
| 54 | +## Coding style |
| 55 | + |
| 56 | +### PHP |
| 57 | + |
| 58 | +Dirigent follows the [PER coding style][per-coding-style] and the [Symfony coding standards][symfony-coding-standards]. |
0 commit comments