Laravel and Next.js remain my default stack for B2B SaaS. Laravel handles auth, billing, queues, and business logic; Next.js delivers SEO, fast dashboards, and a polished marketing site in one repo or two.
Architecture overview
I split marketing (Next.js static/ISR) from the authenticated app (Next.js client + Laravel API). Shared types via OpenAPI or Zod schemas keep contracts honest between teams.
Multi-tenancy patterns
- Single database with tenant_id scoping for most MVPs
- Stripe Customer + Subscription per tenant from day one
- Queue workers for webhooks, emails, and report generation
- Feature flags per plan tier stored in config, not hardcoded
Deployment that scales
Vercel for Next.js, Forge or ECS for Laravel, Redis for cache/queues, and S3 for uploads. CI runs Pest/PHPUnit and Playwright before any production deploy.
Enjoyed this article?
Get notified when I publish new posts on SaaS, Laravel, and remote engineering.