Symfony 7.2 web app that displays a rotating daily image from numbered image collections, with templated text overlays.
- Backend: PHP 8.2+ / Symfony 7.2 / Twig
- Frontend: Stimulus.js, Turbo, AssetMapper (no build step)
- Infrastructure: Docker (Nginx + PHP-FPM), Traefik for production
# Docker local dev
docker-compose -f docker-compose.local.yml up -d
docker-compose exec phpfpm composer install
docker-compose exec phpfpm php bin/console importmap:install
# Run tests
docker-compose exec phpfpm php bin/phpunit- Access keys: Base64-encoded strings containing display config (start date, folder, prefix, filetype, digit padding, weekend handling, zero-start flag). Generated via
php bin/console app:get-key. - Daily files: User-provided numbered images stored in
daily-files/<folder>/. Text templates indaily-files/text-templates/. - Routes:
/display/daily/{key}renders daily image;/serve/{folder}/{filename}serves files privately.
src/Controller/DisplayDailyController.php— Main display logicsrc/Controller/ServePrivateFileController.php— Private file servingsrc/Command/GetKeyCommand.php— CLI key generatortemplates/display_daily/index.html.twig— Main templatedaily-files/— Image collections and text templatesconfig/services.yaml— Service config,DISPLAY_KEYenv param
- PSR-4 namespacing (
App\) - Attribute-based routing (
#[Route(...)]) - Constructor promotion for DI
- Responsive CSS with orientation media queries