<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tenantx</title>
    <description>The latest articles on DEV Community by Tenantx (@tenantx).</description>
    <link>https://dev.to/tenantx</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3883546%2Ff2575315-57cb-4722-8a12-a6f9c990f102.png</url>
      <title>DEV Community: Tenantx</title>
      <link>https://dev.to/tenantx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tenantx"/>
    <language>en</language>
    <item>
      <title>How I Built a Production Multi-Tenant SaaS Starter Kit with Laravel 12 + React 18 + TypeScript</title>
      <dc:creator>Tenantx</dc:creator>
      <pubDate>Fri, 17 Apr 2026 03:29:16 +0000</pubDate>
      <link>https://dev.to/tenantx/how-i-built-a-production-multi-tenant-saas-starter-kit-with-laravel-12-react-18-typescript-3p08</link>
      <guid>https://dev.to/tenantx/how-i-built-a-production-multi-tenant-saas-starter-kit-with-laravel-12-react-18-typescript-3p08</guid>
      <description>&lt;p&gt;I've spent the last few years building a multi-tenant SaaS product from scratch. Real paying customers. Real production traffic. Real architectural mistakes that cost months to fix.&lt;br&gt;
After going through that process I realized something — the hardest part wasn't the features. It was the foundation. Multi-tenancy, roles, permissions, admin portal, billing, notifications, file storage — all of it had to be figured out before I could build what actually mattered.&lt;br&gt;
So I packaged everything I built and battle-tested into TenantX.&lt;/p&gt;

&lt;p&gt;What is TenantX?&lt;br&gt;
TenantX is a Laravel 12 + React 18 + TypeScript B2B SaaS starter kit. Not a tutorial project. Not a side experiment. Extracted from a real production SaaS with real paying customers.&lt;br&gt;
Stack:&lt;/p&gt;

&lt;p&gt;Laravel 12 + PostgreSQL + Sanctum&lt;br&gt;
React 18 + TypeScript + TanStack Query&lt;br&gt;
shadcn/ui + Tailwind CSS&lt;br&gt;
Spatie Permissions (team-scoped)&lt;br&gt;
Docker ready&lt;/p&gt;

&lt;p&gt;The architecture problem nobody talks about&lt;br&gt;
Most Laravel boilerplates give you two levels — a user belongs to a team. That works for simple SaaS.&lt;br&gt;
But real B2B SaaS needs more. Think of how tools like Slack, Notion, or Linear work:&lt;br&gt;
Platform Admin&lt;br&gt;
    └── Organization (e.g. "Acme Corp")&lt;br&gt;
            └── Workspace (e.g. "Marketing Team")&lt;br&gt;
                    └── User&lt;br&gt;
This is 3-level multi-tenancy — and almost no Laravel boilerplate ships with it out of the box.&lt;br&gt;
Getting this wrong early means refactoring your entire data model six months in, after you already have customers. I know because I've been there.&lt;/p&gt;

&lt;p&gt;Why React + TypeScript instead of Livewire?&lt;br&gt;
This is the question I get asked most.&lt;br&gt;
Laravel's ecosystem has excellent Livewire tooling. But when I looked at what real B2B SaaS products need — the answer was clear.&lt;br&gt;
Laravel officially shipped a React starter kit in February 2025. Spatie, the company behind 300+ Laravel packages, standardized their stack on Laravel + Inertia + React + TypeScript. The ecosystem is moving. Most boilerplates haven't caught up yet.&lt;br&gt;
React + TypeScript gives you:&lt;/p&gt;

&lt;p&gt;Type safety across your entire frontend — catch bugs at compile time, not runtime&lt;br&gt;
A codebase junior developers can safely contribute to&lt;br&gt;
The ability to add a mobile app later without rebuilding your API&lt;br&gt;
Familiar tooling for the largest developer community in the world&lt;/p&gt;

&lt;p&gt;With Livewire you're learning a new paradigm. With React you're using what your team already knows.&lt;/p&gt;

&lt;p&gt;What's included&lt;br&gt;
TenantX ships with everything a real B2B SaaS needs from day one:&lt;/p&gt;

&lt;p&gt;✅ 3-level multi-tenancy (Platform → Organization → Workspace → User)&lt;br&gt;
✅ Deep platform admin portal (plans, subscriptions, orgs, usage, files)&lt;br&gt;
✅ Roles &amp;amp; permissions via Spatie (team-scoped)&lt;br&gt;
✅ In-app help center&lt;br&gt;
✅ Activity logs + login audit trail&lt;br&gt;
✅ File storage system&lt;br&gt;
✅ Notification system&lt;br&gt;
✅ In-app translation editor&lt;br&gt;
✅ English + Arabic with full RTL support&lt;br&gt;
✅ Docker ready&lt;br&gt;
✅ AGENTS.md + Cursor rules for AI-assisted development&lt;/p&gt;

&lt;p&gt;The RTL story&lt;br&gt;
One thing I haven't seen any other Laravel boilerplate ship — RTL support.&lt;br&gt;
Building for Arabic-speaking markets meant supporting a right-to-left interface from the ground up. RTL typically adds 25–35% extra development cost to any SaaS project when added after the fact.&lt;br&gt;
TenantX ships with English and Arabic out of the box — full RTL included. If you're building for Arabic markets there is literally no other Laravel boilerplate that covers you.&lt;/p&gt;

&lt;p&gt;What I learned extracting production code into a kit&lt;br&gt;
This was harder than building the original features.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You discover how many implicit assumptions live in your codebase.
Things that "just worked" because of your specific data or environment break immediately when you try to generalize them.&lt;/li&gt;
&lt;li&gt;Seeders are harder than migrations.
Getting a demo seeder that works cleanly across fresh installs — with the right roles, permissions, organizations, and workspaces — took longer than expected.&lt;/li&gt;
&lt;li&gt;Documentation is a product.
Shipping the code is 50% of the work. Writing AGENTS.md and Cursor rules so developers can actually understand and extend the architecture took the other 50%.&lt;/li&gt;
&lt;li&gt;The extraction process revealed dead code.
Features that made sense for the original product didn't belong in a general starter kit. Cutting them was painful but necessary.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Who TenantX is for&lt;/p&gt;

&lt;p&gt;Laravel developers building B2B SaaS who need multi-tenancy without architecting it from scratch&lt;br&gt;
Agencies who want to standardize their SaaS foundation and quote faster timelines&lt;br&gt;
Indie hackers who want to ship and charge customers this week, not next quarter&lt;br&gt;
CTOs who need a production-ready foundation their team can trust&lt;/p&gt;

&lt;p&gt;What's next&lt;br&gt;
TenantX is launching at $399 founding member price at tenantx.dev.&lt;br&gt;
A live demo is coming — log in as platform admin, create an organization, add a workspace, manage users, and see the full flow without installing anything.&lt;br&gt;
I'll be writing more about the technical decisions behind TenantX — multi-tenancy architecture, React + TypeScript + Laravel, and building in public as a solo founder.&lt;br&gt;
Follow along if that's useful.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://tenantx.dev" rel="noopener noreferrer"&gt;https://tenantx.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built from real production code. Extracted so you don't have to start from scratch.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>react</category>
      <category>saas</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
