All production classes live under src/, and all unit/integration tests live under tests/.
Core runtime and DI wiring.
- Bootstrap: entry point that bootstraps the phpList core system and configures the application.
- ApplicationKernel, ApplicationStructure: Symfony kernel and structure configuration.
- Compiler passes (e.g., BounceProcessorPass, DoctrineMappingPass), environment helpers, parameter providers.
Bounce processing feature. (This module continuously updates the database throughout the bounce-processing workflow; therefore, it is separated into its own feature block.)
- Command/: Console commands related to processing bounces.
- Service/: Services that parse, classify and handle bounces.
- Exception/: Bounce‑related exceptions.
Integration with Composer.
- ScriptHandler, ModuleFinder, PackageRepository: helpers invoked by Composer scripts and for module discovery.
Domain logic organized by sub‑domains (e.g., Analytics, Common, Configuration, Identity, Messaging, Subscription). Each sub‑domain follows similar conventions:
- Model/: Domain entities/value objects. Contains business logic; no direct DB access.
- Repository/: Reading/writing models and other DB queries.
- Service/: Domain services and orchestration.
- Exception/: Domain‑specific exceptions.
A minimal Symfony bundle providing an empty start page.
- Controller/: Controllers for the bundle.
Holds database migration files (Doctrine Migrations). May be empty until migrations are generated.
Routing extensions and loaders.
- ExtraLoader: additional/dynamic route loading.
Security‑related concerns.
- Authentication: authentication helpers/integration.
- HashGenerator: password hashing utilities.
Utilities to support tests.
- Traits/: Reusable traits and helpers used in the test suite.