Zum Inhalt springen

PHP-Architektur für SaaS-Plattformen

Tenant Management, Subscription-Billing und Core-Product gehören in getrennte Bounded Contexts. Jardis gibt deiner SaaS-Plattform die Architektur, die Tenant-Isolation auf Code-Ebene erzwingt, vom ersten Context bis zur Enterprise-Skalierung.

Je mehr Tenants ihr habt, desto riskanter wird jedes Deployment.

Laravel-Monolithen starten schnell. Aber ohne Domain-Grenzen leaken Daten zwischen Tenants, Billing-Logik wuchert, und Feature-Flags werden zur Wartungshölle.

Tenant-Isolation existiert nur auf Papier

Tenant-Daten werden per WHERE-Clause getrennt. Ein vergessener Filter, ein fehlender Scope, und Kundendaten leaken zwischen Tenants. Je mehr Tenants, desto höher das Risiko. Ein einziger fehlender Tenant-Scope in einer Query reicht für einen Datenschutzvorfall.

Billing-Logik durchzieht die gesamte Codebasis

Subscription-Status, Plan-Limits und Abrechnungsregeln stecken in Controllern, Middlewares und Views. Eine Preisänderung erfordert Änderungen in Dutzenden Dateien. Der Wechsel von Flat-Rate zu Usage-Based Billing wird zum Quartalsprojekt statt zum Sprint.

Feature-Flags als if/else-Hölle

Jeder Plan hat andere Features. Die Logik landet als verschachtelte Conditionals überall im Code. Neue Pläne einzuführen oder ein Enterprise-Tier mit Custom-Limits anzubieten bedeutet wochenlange Anpassungen quer durch die Codebasis.

Tenant-Grenzen im Code, nicht im WHERE-Clause.

Der Jardis Builder generiert physische Domain-Grenzen für jede SaaS-Domain. Tenant, Billing und Core-Product als eigenständige Packages mit erzwungener Trennung.

TENANT ISOLATION

Tenant Management als eigener Bounded Context

Tenant-Logik wird ein eigenständiges Package mit eigener Repository Pipeline. Kein versehentlicher Zugriff auf fremde Tenant-Daten, weil die Trennung auf Dateisystem-Ebene erzwungen wird. Ob Shared-Database mit Row-Level-Isolation oder Database-per-Tenant: die Domain-Logik bleibt identisch, nur der Repository-Adapter ändert sich.

DOMAIN SEPARATION

Billing, Onboarding und Core-Product entkoppelt

Jede Domain bekommt eigene Commands, Queries und Events. SubscriptionCreated, PlanUpgraded, TrialExpired, UsageLimitReached: der Builder generiert die Event-Struktur als typisierte PHP-Klassen. Billing kennt das Core-Product nicht. Der Wechsel von Flat-Rate zu Usage-Based Billing betrifft nur den Billing-Context, nicht das Produkt.

PRODUCTION-READY

SaaS Architektur in PHP, sofort einsetzbar

Der Builder generiert Tenant-aware PHP-Infrastruktur: jeder Bounded Context bekommt eine isolierte Repository Pipeline mit Tenant-Scoping. Kein globaler State, keine vergessenen WHERE-Clauses. Euer Team schreibt die Business-Logik: Tenant-Provisioning, Usage-Metering, Plan-Regeln und Trial-to-Paid-Conversion.

Sieh selbst, was aus drei Dateien entsteht.

Drei Definitionsdateien rein, ein kompletter Bounded Context raus. Klick dich durch den generierten Code.

E-Commerce / Sales
schema.yaml
# Database Schema — Sales Bounded Context
# This file defines the persistent storage structure.

schema:
  domain: ECommerce
  boundedContext: Sales

tables:
  order:
    columns:
      id:
        type: integer
        primary: true
        autoIncrement: true
      public_id:
        type: uuid7
        unique: true
      customer_email:
        type: string
        length: 255
      status:
        type: string
        length: 32
        default: "draft"
      total_amount:
        type: integer
      currency:
        type: string
        length: 3
        default: "EUR"
      created_at:
        type: datetime
      updated_at:
        type: datetime
        nullable: true

  order_item:
    columns:
      id:
        type: integer
        primary: true
        autoIncrement: true
      order_id:
        type: integer
        foreignKey:
          table: order
          column: id
          onDelete: cascade
      product_name:
        type: string
        length: 255
      sku:
        type: string
        length: 64
      quantity:
        type: integer
      unit_price:
        type: integer
      line_total:
        type: integer
Dateien
Definitions (Input)
Generated Code (Output)
BUILDER OUTPUT
80%
Infrastruktur-Code generiertEntities, Commands, Queries, Events, API Contracts und die Repository Pipeline für jede SaaS-Domain.
0
Tenant-Daten-Leaks
3x
schnellere Domain-Launches
ARCHITEKTUR
100%
Architektur-konformJede generierte Datei folgt der hexagonalen Architektur. Tenant-Isolation ist strukturell erzwungen, nicht optional.

Was SaaS-Teams mit Jardis gewinnen.

Vom MVP bis zur Multi-Tenant-Plattform. Jardis wächst mit eurem Produkt.

> Tenant Isolation

Bounded Contexts pro Domain, nicht pro Tenant

Tenant Management, Billing, Core-Product: jede Domain ist ein eigenständiges Package. Tenant-Daten bleiben isoliert durch Architektur, nicht durch WHERE-Clauses die jemand vergessen kann. Auch bei 1000 Tenants bleibt die Isolation strukturell garantiert.

> Velocity

Billing-Context in Minuten statt Sprints

Subscription-Management, Usage-Metering, Trial-Conversion oder Plan-Upgrades als eigene Domain? Schema definieren, Builder starten. Commands, Events und Repository Pipeline stehen, bevor das erste Ticket geschlossen wird.

> Klare Ownership

Teams arbeiten an Domains, nicht an Features

Ein Team besitzt Billing. Ein anderes den Core-Product-Context. Deployments sind unabhängig. Das Billing-Team kann Pricing-Modelle iterieren, ohne dass das Product-Team ein Release koordinieren muss.

Wie lange soll eure Tenant-Isolation noch auf WHERE-Clauses basieren?

Auf die Waitlist

Struktur kostet weniger als Chaos.

Kostenloser Trial

Teste Jardis 7 Tage kostenlos

Lass Jardis an deiner echten Domäne los. Discovery, Struktur und dein erster Platform Build.

Join Waitlist
20 Discovery Runs
5 Structure Builds
1 Platform Build
Alle Jardis Packages als Open Source
Jardis Base
29 €pro Monat

Die komplette DDD-Architektur mit allen Klassen und Contracts. Dein Team schreibt Features, nicht Infrastruktur.

Join Waitlist
Unlimited Discovery Runs
Unlimited Structure Builds
Alle 26 Jardis Packages enthalten
PHPStan Level 8 von Anfang an
Jardis Pro
180 €pro Monat

Die komplette Business-Logik mit Handlern, Validierung und Pipelines. Was früher ein Sprint war, ist jetzt ein Build.

Join Waitlist
Alles aus Jardis Base
Commands, Queries, Events direkt implementiert
Platform Code in Sekunden statt Wochen
Weitere Runs für 89 € einzeln
Enterprise

Mehr als 20 Platform Builds pro Monat?

Lass uns sprechen

Sei dabei, wenn Jardis startet.

Trag dich ein. Du bekommst Zugang, sobald wir live gehen. Inklusive kostenlosem Trial.

100+ Entwickler warten bereits auf den Launch

Neugierig, wie Jardis funktioniert?

Jardis entdecken

Häufige Fragen

Antworten auf die wichtigsten Fragen zu Jardis im SaaS-Kontext.

Jardis generiert Tenant Management als eigenen Bounded Context mit dedizierter Repository Pipeline. Tenant-Isolation wird auf Dateisystem-Ebene erzwungen, nicht per WHERE-Clause die vergessen werden kann. Der Tenant-Context kommuniziert mit anderen Domains ausschließlich über Domain Events. Ein TenantProvisioned-Event triggert die Initialisierung in Billing und Core-Product.