Architecture Overview
Thelia 3 runs on Symfony and adds the pieces an e-commerce application needs on top of it.
Core components
Technology stack
| Layer | Technology | Purpose |
|---|---|---|
| Language | PHP 8.3 or 8.4 | composer.json requires >= 8.3, and the CI matrix runs both |
| Framework | Symfony 7.4 LTS | HTTP handling, DI, routing, security |
| ORM | Propel ORM (not Doctrine) | Database abstraction and queries |
| API | API Platform 4.3 (standalone) | RESTful API generation (api-platform/symfony) |
| Front-Office | Twig + Symfony UX (Flexy bundle) | Reactive UI components |
| Back-Office | Twig (default-twig bundle) | Admin interface templating |
note
Propel is not Doctrine: there is no EntityManager and no flush(). Every ->save() persists immediately. Respect the strict native Propel types (string for decimal columns, int for tinyint columns).
Back-office: Twig is the reference
The Twig back-office (default-twig bundle) is the only admin theme Thelia installs. The Smarty default back-office is no longer installed as of Thelia 3.2 and is not maintained. Build admin features on the default-twig bundle.
Directory structure
thelia/
├── core/
│ └── lib/Thelia/
│ ├── Api/ # API Platform integration
│ │ ├── Resource/ # API resources
│ │ ├── Bridge/Propel/ # Propel state providers
│ │ └── Service/DataAccess/ # DataAccessService
│ ├── Domain/ # Business logic facades (17 folders)
│ │ ├── Cart/ # e.g. Cart, Customer, Order, Checkout,
│ │ ├── Customer/ # Catalog, Promotion, Shipping,
│ │ ├── Order/ # Taxation, Media, CMS, Addressing,
│ │ └── Checkout/ # Admin, Localization, Marketing,
│ │ # Module, DataTransfer, Shared
│ ├── Core/ # Kernel, security, forms
│ └── Model/ # Propel models
├── templates/
│ ├── frontOffice/flexy/ # Front-office Twig theme (FlexyBundle)
│ └── backOffice/default-twig/ # Back-office Twig theme