susi.dev https://susi.dev/blog Personal site and blog of Susi en-us [email protected] (Susi) [email protected] (Susi) Wed, 08 Nov 2023 00:00:00 GMT https://susi.dev/blog/local-development-with-traefik-mkcert Local (PHP) Development with HTTPS, Traefik, mkcert and Docker https://susi.dev/blog/local-development-with-traefik-mkcert Discover Traefik and mkcert setup for HTTPS and local development. Configure Traefik, generate SSL certs, and manage (PHP) projects efficiently. Wed, 08 Nov 2023 00:00:00 GMT [email protected] (Susi) dockertraefikmkcerthttps https://susi.dev/blog/sentry-typo3 Sentry & TYPO3 https://susi.dev/blog/sentry-typo3 Integrate Sentry with TYPO3 for real-time error tracking and performance monitoring: installation, configuration, and best practices. Fri, 04 Aug 2023 00:00:00 GMT [email protected] (Susi) sentrytypo3phpmonitoringerror tracking https://susi.dev/blog/add-navigation-icons-to-typo3 Add Navigation Icons to TYPO3 https://susi.dev/blog/add-navigation-icons-to-typo3 Navigation icons can be a great addition to your TYPO3 website, providing a visual representation of different pages in the navigation menu. Tue, 01 Aug 2023 00:00:00 GMT [email protected] (Susi) typo3navigationiconstcaphp https://susi.dev/blog/setting-up-persistent-local-volumes-on-docker-desktop-kubernetes-wsl2-or-mac Setting Up Persistent Local Volumes on Docker Desktop Kubernetes (WSL2 or Mac) https://susi.dev/blog/setting-up-persistent-local-volumes-on-docker-desktop-kubernetes-wsl2-or-mac Set up persistent local volumes on Docker Desktop’s Kubernetes (WSL2 or Mac). Create PV/PVC, bind to a path, and keep data across pod restarts. Fri, 21 Jul 2023 00:00:00 GMT [email protected] (Susi) kubernetesdocker-desktopwsl2macpersistent-volumesdocker https://susi.dev/blog/use-gitlab-typo3-project-template Use GitLab TYPO3 Project Template https://susi.dev/blog/use-gitlab-typo3-project-template GitLab provides a TYPO3 project template. Learn how to start a new project from it, run it locally with Docker, and leverage built-in CI. Fri, 16 Dec 2022 00:00:00 GMT [email protected] (Susi) gitlabtypo3templatecidocker https://susi.dev/blog/change-docroot-of-ddev-based-typo3 Change document root of DDEV based TYPO3 https://susi.dev/blog/change-docroot-of-ddev-based-typo3 How to change the docroot of a TYPO3 composer-based install while using DDEV — switch from public to html and adjust DDEV settings. Fri, 25 Mar 2022 00:00:00 GMT [email protected] (Susi) ddevtypo3composerdocroot https://susi.dev/blog/ddev-shopware-6 Installing / Developing Shopware 6 with DDEV https://susi.dev/blog/ddev-shopware-6 Complete guide to set up Shopware 6 on DDEV: installation, Elasticsearch, storefront/administration build & watch, HTTPS/ports, and useful tips. Tue, 08 Feb 2022 00:00:00 GMT [email protected] (Susi) ddevshopwaredocker https://susi.dev/blog/typo3-cli-command-extbase-data-import-validation TYPO3 CLI/Symfony Command, Extbase Data Import & Validation https://susi.dev/blog/typo3-cli-command-extbase-data-import-validation Use a TYPO3 Symfony Console command to import data, validate entities via Extbase, and persist them with your Extbase repository. Sun, 06 Feb 2022 00:00:00 GMT [email protected] (Susi) typo3extbaseclisymfonyvalidation https://susi.dev/blog/structure-symfony-dependency-injection-yaml Import / Structure Symfony Service Definition YAML Files (e.g. in TYPO3) https://susi.dev/blog/structure-symfony-dependency-injection-yaml Import definitions from separate Symfony Dependency Injection YAML files to keep services.yaml small and maintainable (works well in TYPO3 projects). Sat, 22 Jan 2022 00:00:00 GMT [email protected] (Susi) symfonyyamldependency-injectiontypo3services https://susi.dev/blog/typo3-symfony-encore-tailwind TYPO3, Symfony Encore, Webpack & Tailwind CSS https://susi.dev/blog/typo3-symfony-encore-tailwind Build a TYPO3 website with Tailwind CSS and Symfony Encore/Webpack: install, configure, and integrate assets in Fluid templates. Sat, 01 Jan 2022 00:00:00 GMT [email protected] (Susi) typo3symfonyencorewebpacktailwind-css https://susi.dev/blog/create-typo3-backend-module TYPO3 Backend Module Essentials https://susi.dev/blog/create-typo3-backend-module TYPO3 Backend Module Registration — how to register a custom TYPO3 backend module, render it with Fluid templates and register custom icons or CSS. Wed, 15 Dec 2021 00:00:00 GMT [email protected] (Susi) typo3backendmodulefluidphp https://susi.dev/blog/ddev-xdebug-troubleshooting DDEV Xdebug Troubleshooting https://susi.dev/blog/ddev-xdebug-troubleshooting Fixing Xdebug step debugging in DDEV when the client can’t connect on port 9003, especially on WSL2 and PHPStorm. Fri, 26 Nov 2021 00:00:00 GMT [email protected] (Susi) ddevxdebugphpstormdockerwsl2 https://susi.dev/blog/auto-language-detection TYPO3: Autolanguage detection with PSR-15 https://susi.dev/blog/auto-language-detection Implement automatic language detection in TYPO3 using a PSR-15 middleware that redirects users based on Accept-Language or custom logic. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) typo3psr-15middlewarei18nlanguage detection https://susi.dev/blog/fluid-locale-aware Locale-aware formatting in Fluid https://susi.dev/blog/fluid-locale-aware Format dates, numbers, and currencies locale-aware in TYPO3 Fluid templates. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) typo3fluidlocalizationi18n https://susi.dev/blog/fully-integrate-ddev-and-phpstorm-including-unit-tests-with-coverage-update-2021 Fully integrate DDEV and PhpStorm (incl. unit tests with coverage) — Update 2021 https://susi.dev/blog/fully-integrate-ddev-and-phpstorm-including-unit-tests-with-coverage-update-2021 Run tests with coverage and debug inside DDEV from PhpStorm: interpreters, path mappings, Xdebug, and PHPUnit config. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) ddevphpstormxdebugcoveragephpunit https://susi.dev/blog/php-8-on-wsl2-ubuntu Compile PHP8 on Windows WSL2 Ubuntu https://susi.dev/blog/php-8-on-wsl2-ubuntu Build (and alternatively install) PHP 8 on WSL2 Ubuntu: prerequisites, configure flags, make install, switching versions, and troubleshooting. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) phpwsl2ubuntubuildcompile https://susi.dev/blog/php-performance-over-time PHP Performance Over Time https://susi.dev/blog/php-performance-over-time A look at PHP performance evolution across versions based on common micro-benchmarks and real-world tasks. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) phpperformancebenchmarks https://susi.dev/blog/php8-benchmark-jit-symfony PHP 8 JIT Benchmarks (Symfony context) https://susi.dev/blog/php8-benchmark-jit-symfony Exploring PHP 8’s JIT impact in a Symfony-style workload: expectations vs. reality. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) php8jitsymfonyperformance https://susi.dev/blog/phpdbg-for-coverage Generate Code Coverage with native PHP Debugger (no Xdebug required) https://susi.dev/blog/phpdbg-for-coverage Use phpdbg to generate PHPUnit coverage without Xdebug – faster startup, simple CI usage, and easy IDE integration. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) phpcoveragephpdbgphpunitci https://susi.dev/blog/typo3-cropvariants TYPO3: Using image crop variants with focus and cover areas https://susi.dev/blog/typo3-cropvariants Configure and use TYPO3 image crop variants (focus/cover areas) in TCA and Fluid to deliver correctly cropped/responsive images. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) frontendintegrationtypo3 https://susi.dev/blog/typo3-extend-configuration-module TYPO3: Extending the configuration module https://susi.dev/blog/typo3-extend-configuration-module Extend the TYPO3 Configuration backend module to expose custom settings, readers, or debug info for your extensions. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) typo3php https://susi.dev/blog/typo3-tests-php8 Run TYPO3 Tests with PHP8 https://susi.dev/blog/typo3-tests-php8 Run TYPO3 core/extension tests with PHP 8 locally: requirements, Composer constraints, and invoking the test runner. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) typo3phptesting https://susi.dev/blog/typo3-tree-data-provider TYPO3 TCA Tree with non-database items https://susi.dev/blog/typo3-tree-data-provider Provide a TCA tree (renderType=selectTree) backed by a custom data provider (non‑DB source) for configuration-like selections. Sat, 20 Nov 2021 00:00:00 GMT [email protected] (Susi) typo3phpintegration https://susi.dev/blog/typo3-symfony-debug TYPO3 <3 Symfony: dump() + dd() https://susi.dev/blog/typo3-symfony-debug Use Symfony VarDumper’s dump()/dd() effectively in TYPO3 for quick, readable debugging in CLI and backend contexts. Fri, 19 Nov 2021 00:00:00 GMT [email protected] (Susi) typo3symfonyphp https://susi.dev/blog/useful-commands Useful Commands https://susi.dev/blog/useful-commands Handy Bash and SQL snippets I reach for regularly: search/replace, one‑liners, and maintenance helpers. Fri, 19 Nov 2021 00:00:00 GMT [email protected] (Susi) toolsproductivity https://susi.dev/blog/prometheus-grafana-loki-with-docker-compose Prometheus + Grafana + Loki with docker-compose https://susi.dev/blog/prometheus-grafana-loki-with-docker-compose Spin up a local observability stack (Prometheus for metrics, Loki for logs, Grafana for dashboards) using docker-compose with minimal configs. Thu, 18 Nov 2021 00:00:00 GMT [email protected] (Susi) dockerprometheusgrafanalokiobservabilitylogsmetrics https://susi.dev/blog/typo3-psr15-middleware-add-header PSR-15 Middleware: Add custom header in TYPO3 https://susi.dev/blog/typo3-psr15-middleware-add-header Small PSR‑15 middleware example for TYPO3: register a middleware that appends a custom HTTP response header. Thu, 18 Nov 2021 00:00:00 GMT [email protected] (Susi) typo3psr-15middlewarephp https://susi.dev/blog/create-date-table-in-microsoft-power-bi Create Date Table in Microsoft Power BI https://susi.dev/blog/create-date-table-in-microsoft-power-bi Create a reusable custom date table in Power BI using Power Query (M) with fiscal year support and handy helper columns. Wed, 21 Jul 2021 00:00:00 GMT [email protected] (Susi) power bimdate tablepower query https://susi.dev/blog/mock-http-api-responses-with-guzzle-psr-18-psr-7 Mock HTTP API Responses with Guzzle (PSR-18/PSR-7) https://susi.dev/blog/mock-http-api-responses-with-guzzle-psr-18-psr-7 Mock HTTP responses and verify requests in unit tests using Guzzle’s MockHandler and History middleware with PSR-18/PSR-7 clients. Sun, 16 May 2021 00:00:00 GMT [email protected] (Susi) integrationphpguzzlepsr-18psr-7testing https://susi.dev/blog/promtail-pipeline-for-caddy-logs Promtail Pipeline for Caddy Logs https://susi.dev/blog/promtail-pipeline-for-caddy-logs Ingest Caddy access logs with Promtail: configure scrape job, parse logfmt/json, extract labels and fields, and forward to Loki/Grafana. Thu, 15 Apr 2021 00:00:00 GMT [email protected] (Susi) integrationmonitoring https://susi.dev/blog/typo3-fluid-paginate TYPO3: Migrate Fluid pagination widget to paginator API https://susi.dev/blog/typo3-fluid-paginate TYPO3 v10 deprecated and v11 removed Fluid widgets. Replace the Fluid pagination widget with the native Paginator API introduced in TYPO3 10.2. Sun, 15 Nov 2020 00:00:00 GMT [email protected] (Susi) typo3phpfrontend https://susi.dev/blog/supervisor-ddev Supervisor / "Pseudo Cron Jobs" in DDEV https://susi.dev/blog/supervisor-ddev Use the built-in supervisord in DDEV to run long-running workers (e.g. Symfony Messenger) and emulate cron-like intervals for TYPO3 Scheduler without extra services. Fri, 30 Oct 2020 00:00:00 GMT [email protected] (Susi) ddevsymfonytypo3 https://susi.dev/blog/composer2-perf Composer 2 performance tests – Shopware & TYPO3 https://susi.dev/blog/composer2-perf Measuring Composer 2 vs. Composer 1.10 on real projects (Shopware 6 and TYPO3) — setup, commands, and the impact on day‑to‑day DX. Wed, 28 Oct 2020 00:00:00 GMT [email protected] (Susi) integrationshopwaretypo3performancebenchmarkscomposer https://susi.dev/blog/hcaptcha A quick look at hCaptcha - I am human! https://susi.dev/blog/hcaptcha Overview of hCaptcha, key settings, integrations (Laravel, Symfony), and how to use it in TYPO3 via an EXT:form element. Sun, 25 Oct 2020 00:00:00 GMT [email protected] (Susi) hcaptchacaptchafrontendintegrationsymfonytypo3 https://susi.dev/blog/phpstan-phpstorm-pro Integrating PHPStan in PhpStorm / PHPStan Pro https://susi.dev/blog/phpstan-phpstorm-pro Install and configure PHPStan for your project and wire it into PhpStorm – including baselines, framework stubs, and running inside Docker/DDEV. Sun, 18 Oct 2020 00:00:00 GMT [email protected] (Susi) phpstanphpstormstatic-analysisqualityddevdocker https://susi.dev/blog/typo3-coverage-dbg-phpstorm TYPO3 test coverage in under 2 minutes with PhpStorm + phpdbg https://susi.dev/blog/typo3-coverage-dbg-phpstorm Generate fast code coverage for TYPO3 (or any PHP project) using phpdbg — run from PhpStorm or CLI without Xdebug, with tips for setup and troubleshooting. Sun, 27 Sep 2020 00:00:00 GMT [email protected] (Susi) typo3phpphpdbgcoveragephpunitphpstorm https://susi.dev/blog/twig-migrate-transchoice Twig: Migrate transchoice to trans with ICU messages https://susi.dev/blog/twig-migrate-transchoice How to migrate from Twig's deprecated transchoice to trans using ICU messages: rename files, rewrite messages, pass variables, and register ICU resources. Sun, 30 Aug 2020 00:00:00 GMT [email protected] (Susi) integrationsymfonytwigi18n https://susi.dev/blog/ddev-phpstorm-integration Fully integrate DDEV and PhpStorm – including Unit Tests with Coverage https://susi.dev/blog/ddev-phpstorm-integration Configure PhpStorm to run everything inside DDEV: CLI/Composer, PHPUnit with coverage, debugging (Xdebug), and quality tools – fully integrated. Sat, 22 Aug 2020 00:00:00 GMT [email protected] (Susi) ddevphpstormdockerxdebugphpunitcoverage https://susi.dev/blog/swagger-shopware-storeapi Workaround: Working Swagger Docs for Store API in Shopware 6 https://susi.dev/blog/swagger-shopware-storeapi Enable the Swagger UI for Shopware 6 Store API in dev/test despite CSP blocks by adjusting DI parameters; plus tips for mocking with Prism. Fri, 24 Jul 2020 00:00:00 GMT [email protected] (Susi) shopware https://susi.dev/blog/dev-env-2020 My 2020 Dev Environment https://susi.dev/blog/dev-env-2020 A snapshot of my 2020 development environment: IDEs, terminals, tooling, and quality-of-life tweaks. Wed, 01 Jan 2020 00:00:00 GMT [email protected] (Susi) dev environmenttoolsproductivity https://susi.dev/blog/prism-ckeditor-typo3 Prism, CKEditor, TYPO3 https://susi.dev/blog/prism-ckeditor-typo3 Add syntax highlighting with Prism.js to TYPO3/CKEditor: include assets, configure CKEditor, and render highlighted code blocks. Sun, 16 Sep 2018 00:00:00 GMT [email protected] (Susi) typo3ckeditorprismsyntax-highlightingjavascript https://susi.dev/blog/typo3-bootstrap-4-webpack TYPO3, Bootstrap 4 & Webpack https://susi.dev/blog/typo3-bootstrap-4-webpack Wire Bootstrap 4 into a TYPO3 site package and bundle assets with Webpack: project structure, configs, and Fluid integration. Sun, 16 Sep 2018 00:00:00 GMT [email protected] (Susi) typo3frontendwebpackbootstrap