Auth you can ship as-is
Email + password with mandatory verification, magic-link sign-in, TOTP 2FA with single-use backup codes, password reset, login throttling and 30-day remember-me.
- 2FA + backup codes
- magic links
- throttling
ShipAnvil is the production-grade starter for Symfony: auth with 2FA, Stripe and Lemon Squeezy billing, teams, an admin with MRR metrics and a Claude AI module, already wired, tested and documented. You start at the interesting part: your product.
One-time payment · Full source code · Lemon Squeezy handles your VAT
$ git clone git@github.com:you/your-saas.git
$ make init
→ PHP 8.5, Composer 2, PostgreSQL 18 ok
→ composer install ok
→ database + migrations + fixtures ok
→ tailwind build ok
→ phpunit: 392 tests, 1735 asserts ok
✔ ShipAnvil is ready. Start it with: make serve
$ ▋
/**
* One payment provider = one implementation.
* Stripe, Lemon Squeezy and an offline sandbox ship
* with the kit; Paddle is just another adapter.
*/
#[AutoconfigureTag('billing.payment_provider')]
interface PaymentProviderInterface
{
public function createCheckoutUrl(
Organization $organization,
Plan $plan,
User $user,
): string;
// Verified, replay-protected, idempotent.
public function parseWebhook(Request $r): WebhookEvent;
}
What's inside
Not a demo with happy paths: the boring, hard, production parts, done properly and covered by tests.
Email + password with mandatory verification, magic-link sign-in, TOTP 2FA with single-use backup codes, password reset, login throttling and 30-day remember-me.
Stripe and Lemon Squeezy behind one PaymentProvider interface: hosted checkout, customer portal, plan upgrades, dunning emails, and an offline sandbox so you build before creating any account.
Signed, replay-protected, stored in an idempotent inbox and processed async via Messenger with retries. Out-of-order and duplicate deliveries are test cases, not incidents.
Organizations with owner/admin/member roles, email invitations and an organization switcher. A Doctrine filter scopes every query to the current organization automatically, with tests proving tenant isolation.
A hand-rolled back office on the kit’s own stack (no admin bundle to fight): estimated MRR, churn and signups over 30 days, read-only billing mirrors, and secure user impersonation with an audit log.
Streaming chat (SSE) and structured extraction via tool use, metered per organization with per-plan token quotas. An offline fake provider keeps dev and CI key-free.
A framework-free EN 16931 engine: Factur-X (CII) with PDF/A-3 embedding, PEPPOL BIS (UBL) and business-rule validators, with output checked in CI by the official KoSIT and OpenPEPPOL validators. EU e-invoicing mandates, handled.
Six branded templates with inlined CSS, a one-file theme, async sending so a slow SMTP never breaks signup, a dev preview catalog, and an SPF/DKIM/DMARC deliverability guide.
A multi-stage FrankenPHP Docker image and a step-by-step VPS recipe (PHP-FPM, Apache or nginx, certbot, systemd worker), plus an optional GitHub Actions deploy workflow.
392 tests (1,735 assertions) including full billing lifecycles replayed from signed webhook fixtures, PHPStan at level max with zero errors, CS-Fixer and a ready-made CI pipeline.
Nonce-based CSP and security headers on every page, CSRF on every state change, per-IP rate limits on email-sending endpoints, signature-verified webhooks, hardened sessions, threat model documented.
A sectioned landing page, file-based markdown blog, SEO/OG meta, sitemap and legal page skeletons: the very site you are reading runs on it.
Plus: custom error pages, Sentry pre-wired, fixtures, Makefile, agent-ready docs, and the LAST stack (AssetMapper, Stimulus, Turbo): no Node.js, no build step to babysit.
Quickstart
The install path is rehearsed from a fresh clone: the test suite even runs as part of it.
Pay with Lemon Squeezy, enter your GitHub username on the claim page, accept the invitation to the private repo.
One command checks your PHP, installs dependencies, creates the database, builds the CSS and runs the full test suite.
Rename the product, edit the plans in one YAML file, replace the landing copy. The docs walk you through every file that matters.
Follow the VPS recipe or ship the production Docker image. Webhooks, worker, HTTPS and OPcache are all covered, step by step.
Live demo
This very site runs on ShipAnvil. Poke around the dashboard, the billing flow (offline sandbox), the AI chat and the team pages with the shared demo account.
Open the live demodemo@shipanvil.com
anvil-demo
Shared account: it resets every night. Be nice in the AI chat.
Comparison
Two Symfony boilerplates were abandoned (Kitto, Parthenon). Here is what is actually on the market, from public information as of June 2026.
| ShipAnvil €149 early bird | ShipDead $165 | Fastfony free, OSS | |
|---|---|---|---|
| Auth + 2FA (TOTP, backup codes) | auth, no 2FA | auth bundles, no 2FA | |
| Stripe + Lemon Squeezy | both | both | — |
| Teams / multi-tenancy | with isolation tests | — | — |
| Admin + MRR/churn metrics | admin, no metrics | — | |
| AI module (Claude, streaming) | — | Claude Code skill | |
| EU e-invoicing (Factur-X / EN 16931) | engine + CI gates | — | — |
| Test suite shipped | 392 tests | not advertised | tooling only |
| VPS deploy recipe | step by step | not visible | — |
| Live demo | this site | — | — |
| Public docs | 404 at review time | minimal | |
| Written license | one page | not published | MIT |
Compiled 2026-06-10 (e-invoicing row added 2026-07-07) from each project's public site and docs. Fastfony is open-source auth/tooling bundles, not a full SaaS kit: it is great if that is all you need. Spotted an error? Tell us and we will fix it.
Pricing
Pay once, build unlimited products. Lemon Squeezy is the merchant of record: VAT is handled and you get a proper invoice.
For the first 50 builders. Thanks for trusting us early.
€149
€199
one-time · VAT handled at checkout
The regular license, once the early-bird seats are gone.
€199
one-time
For companies building together.
€349
one-time
FAQ
Something else? Write to hello@shipanvil.com. You reach the developer who wrote the code.
An invitation to the private GitHub repository with the full source code, every doc and guide (quickstart, billing setup, deploy, email deliverability), the CI pipeline, and updates per your tier. No obfuscation, no phone-home, no runtime license checks.
Build and sell unlimited end products: SaaS, client work, internal tools. The only thing you cannot do is redistribute or resell ShipAnvil itself (or a competing boilerplate derived from it). The license is one readable page in the repo.
Early-bird buyers get lifetime updates. Solo and Team get 12 months; after that the code keeps working and stays yours forever: you just stop pulling new releases. Updates arrive as commits in the repo: pull or cherry-pick what you want.
Email support and GitHub issues on the private repo. It is a small operation: you talk to the developer who wrote the code, usually within one business day. No SLA theater, just answers.
A 14-day refund policy, handled through Lemon Squeezy. Tell us it is not for you and we will refund. We only ask that you have not shipped a product with it. Source code cannot really be returned, so please try the live demo and read the docs first.
PHP 8.4 or 8.5, PostgreSQL 16+, Composer. No Node.js: the frontend is Symfony's AssetMapper with Tailwind v4 (standalone binary). Docker is optional, never required.
No. Pick either (one env var), or start with the built-in offline sandbox provider and decide later. The webhook pipeline, plans and gating are identical across providers.
No. It is enabled per env var; turned off, the pages and nav links disappear. With it on, you bring your own Anthropic API key. A fake offline provider covers dev and CI.
The kit ships a framework-free EN 16931 engine producing Factur-X (CII), PDF/A-3 hybrids and PEPPOL BIS (UBL) documents, with business-rule validators, and CI validates its output against the official KoSIT and OpenPEPPOL rule sets. Invoice numbering, archiving and transmission (Peppol access points, French PDPs) remain product decisions; the docs are explicit about that boundary.
Lemon Squeezy is the merchant of record: it collects the right tax for your country, supports VAT IDs for B2B reverse charge, and issues the invoice.
Over 392 tests (1,735 assertions) run on every commit, including complete billing lifecycles replayed from signed webhook fixtures. PHPStan at level max with zero errors. And this site (store, checkout, demo) runs on the kit itself.
The production plumbing of a SaaS (auth, billing, teams, admin, AI), tested and documented, for the price of half a day of freelance work.
One-time payment · 14-day refund policy · Delivered as a GitHub invitation