Everything in a codebase can be changed later, except the shape of what you already wrote to disk. A version prefix costs seven bytes, it is free exactly once, and the day you want it the column is already full.
A compliance form asked whether I encrypt personal data at rest. The honest answer was no, so I made it yes: libsodium secretbox behind a custom Doctrine type, a migration that rewrites existing rows, and the queries, indexes, logs and backups that stop working the moment a column becomes opaque.
Shopify's docs assume Node and Remix. Here is the whole authentication path in Symfony 7.4: session token verification, OAuth token exchange with expiring tokens, a stateless firewall, webhook HMAC, encrypted tokens at rest, and the CSP the App Store checks. From an app live in the Shopify App Store.
Choix de version, socle vs from scratch, les briques qu'un SaaS a avant sa première ligne de produit, et les spécificités françaises (facturation électronique, TVA, RGPD) qu'aucun boilerplate américain ne gère. Guide complet, daté de juillet 2026.
Transactional email now fails closed: Gmail, Yahoo and Outlook reject unauthenticated mail outright. The DNS records that matter, the DMARC alignment rule that explains them, and the Symfony-side mistakes we made so you don't have to.
Symfony ships passwordless sign-in in the security component. Here is a production login_link setup: signature invalidation, enumeration-proof requests, rate limiting, and the 2FA interplay nobody writes about.
We removed EasyAdmin from ShipAnvil and replaced it with 1,321 lines of plain controllers, Twig and Tailwind. The metrics that matter, the honest definitions behind them, and when you should (and shouldn't) do the same.
The complete production recipe for a Symfony SaaS on a plain Linux box: a dedicated system user, a tuned PHP-FPM pool, OPcache with timestamp checks off, the Messenger worker everyone forgets, TLS, hardening, backups, and a deploy routine that doesn't drift. From a server running real products.
E-invoicing's most-confused names don't compete. They live at four different layers: semantic model, XML syntax, PDF packaging, delivery network. A working map for developers, the 2026 mandate landscape it has to fit, and the one architecture that serves all of it.
How to produce EN 16931-compliant Factur-X / ZUGFeRD hybrid invoices in plain PHP: the document model, the horstoeko/zugferd mapping, PDF/A-3 embedding, and the business rules that actually reject documents, from an engine that passes the official KoSIT Schematron in CI.
ShipFast is Next.js-only: there is no PHP or Symfony version. Here's what actually exists for Symfony developers in 2026, what died, and how to choose in ten minutes.
A full production SaaS (Tailwind 4, Stimulus, Turbo, a streaming AI chat) with no package.json, no node_modules and no bundler. The exact AssetMapper setup, dev loop and deploy pipeline, from a shipping codebase.
A blocking CI pipeline for e-invoice conformance: the official KoSIT validator for Factur-X/CII, the OpenPEPPOL Schematron compiled with SchXslt and run with Saxon for UBL, and a tiny SVRL gate, with the five real bugs it caught before any customer did.
A production 2FA setup with scheb/2fa-bundle: confirmed activation, hashed single-use backup codes, and the design decisions that separate a checkbox from a security feature.
Bug fixes until November 2028, security fixes until November 2029, and what that actually means when you're choosing the version your business will sit on.
A production architecture for Claude in a Symfony SaaS: scoped HttpClient, SSE streaming to the browser, tool-use extraction, retries, and AI quotas wired into your billing plans.
The single-database tenancy model that scales from side project to real B2B: organizations, memberships, and an SQL filter that scopes every query automatically, with the pitfalls that bite in production.
Hosted Checkout, a webhook inbox, idempotent processing through Messenger and a normalized subscription state: the billing design patterns that don't fall over, with code.
Every Symfony SaaS boilerplate was either dead, demo-grade or both. After fifteen years of building the same foundations for clients, I built the one I always wanted to start from.