thelia / flexy
thelia design system
Package info
github.com/thelia-templates/flexy
Language:Twig
Type:thelia-frontoffice-template
pkg:composer/thelia/flexy
Requires
- symfony/http-client: ^6.4 || ^7.4
- symfony/stimulus-bundle: ^2.19
- symfony/twig-bundle: ^6.4 || ^7.4
- symfony/ux-icons: ^2.21
- symfony/ux-live-component: ^2.19
- symfony/ux-translator: ^2.19
- symfony/ux-twig-component: ^2.36
- symfonycasts/dynamic-forms: ^0.1.2
- symfonycasts/tailwind-bundle: ^0.11.1
- tales-from-a-dev/twig-tailwind-extra: ^1.0.0
- thelia/header-highlights-module: ^2.0
- thelia/installer: ~1.1
- thelia/recently-viewed-module: ^2.1
- thelia/seone-module: ^1.1
- thelia/thelia-blocks-module: ^3.0
- thelia/thelia-library-module: ^2.0
- thelia/twig-engine-module: ^1.0
- twig/extra-bundle: ^3.24.0
- twig/html-extra: ^3.24.0
- twig/intl-extra: ^3.24
- twig/string-extra: ^3.24
This package is auto-updated.
Last update: 2026-08-14 09:54:49 UTC
README
Front-office template for Thelia 3, built on Twig, Symfony UX and Tailwind CSS v4.
Requirements
- Thelia 3.0.0 or later
- PHP 8.3+
Assets are served through Symfony AssetMapper — there is no Node build step, no bundler and no dist/ directory. Tailwind is compiled by symfonycasts/tailwind-bundle, which downloads a standalone binary on first use.
Installation
composer require thelia/flexy
thelia/installer places the template under templates/frontOffice/flexy. Activate it from the back office, or set it in .env:
ACTIVE_FRONT_TEMPLATE=flexy
Layout
| Path | Contents |
|---|---|
*.html.twig |
Pages, at the root. config/views.yaml lists the ones a controller renders, which are not reachable by name |
components/ |
Twig components, grouped by responsibility: Atoms, Molecules, Organisms, Layouts, Forms, Fields |
src/ |
PHP: controllers, services, DTOs, Twig extensions, form types (FlexyBundle\ namespace) |
assets/ |
Styles, icons, images, Stimulus controllers |
form/ |
Form theme — applied explicitly per template, never registered globally |
translations/ |
messages.en_US.yaml, messages.fr_FR.yaml |
docs/ |
Notes on the parts whose behaviour the code alone does not explain |
A component owns its template, its styles and its behaviour in a single directory. Base.php holds the data, Base.html.twig the markup, Base.css the styles, base_controller.js the interactions.
Extending it
The template declares theme_hook() extension points across its pages — layout.head.top, product.bottom, cart.top and others. A module answers one by implementing Thelia\Core\Hook\Theme\ThemeHookInterface; the tag priority drives the rendering order.
The SEOne module already answers layout.head.top and layout.head.bottom, which is where the title, description, canonical, hreflang and structured data come from.
Development
ddev composer cs-diff # coding standards, dry run ddev composer cs # and fix them ddev composer phpstan-flexy # static analysis ddev composer test:http-flexy # HTTP smoke tests
Run test suites through the composer test:* scripts only. Calling vendor/bin/phpunit directly resolves to the development database instead of the test one.
Licence
GPL-3.0-or-later. See LICENSE.