Skip to content

Latest commit

Β 

History

History
58 lines (51 loc) Β· 2.22 KB

File metadata and controls

58 lines (51 loc) Β· 2.22 KB

Dirigent architecture

Technology stack

  • 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

Directory structure

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

Coding style

PHP

Dirigent follows the [PER coding style][per-coding-style] and the [Symfony coding standards][symfony-coding-standards].