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 a Symfony starter kit: 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: 481 tests, 2109 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 parts that are tedious to get right, and the tests that check them.
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. Numbering, archiving and transmission (Peppol access points, French PDPs) stay yours: the docs draw the line.
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.
481 tests (2,109 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
Parthenon, the other Symfony SaaS boilerplate, has had no commit since June 2025. Here is what is actually on the market, rechecked on 26 August 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 | 481 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, every row rechecked against each project's public site on 2026-08-26. 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 support@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.
All sales are final once you claim your repository access. Source code cannot be returned: the moment the invitation is accepted, you have the whole kit, every past release and every future one. That is why everything you need to decide is available before you pay, and none of it is behind the purchase: the full feature list, the license in plain words, the docs, and a live demo you can sign into and use as a real user. Try it first, and email us any question you have before buying. If your payment never resulted in access being granted, write to us and we will make it right.
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 481 tests (2,109 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.
One-time payment · Delivered as a GitHub invitation · Try the live demo before you buy