This project uses the Symfony UX frontend stack. Seven agent skills are installed to help you work with it.
- Pure JS behavior, no server round-trip -- use the
stimulusskill - Navigation, partial page updates -- use the
turboskill - Reusable static UI component -- use the
twig-componentskill - Reactive component that re-renders on user input -- use the
live-componentskill - SVG icons (local or Iconify) -- use the
ux-iconsskill - Interactive maps (Leaflet / Google Maps) -- use the
ux-mapskill - Not sure which one fits -- use the
symfony-uxskill (orchestrator / decision tree)
- Always render
{{ attributes }}on the root element of a LiveComponent - Prefer HTML syntax (
<twig:Alert />) over Twig syntax ({% component 'Alert' %}) - Use
data-model="debounce(300)|field"for text inputs in LiveComponents - Stimulus controllers must clean up listeners and observers in
disconnect() - Turbo Frame IDs must match between the page and the server response
- Use Turbo Streams when updating multiple page sections; use Frames for a single section
<twig:Turbo:Stream:Append>syntax is available since Symfony UX 2.22+- Prefer
<twig:ux:icon name="..." />over{{ ux_icon('...') }}for consistency - Map containers must have an explicit height (
style="height: 400px;") - Use
fitBoundsToMarkers()instead of manually calculating center/zoom - Lock on-demand icons before deploying:
php bin/console ux:icons:lock