Van idee tot
schaalbaar product.
Wij bouwen SaaS-producten die groeien. Multi-tenant, abonnementsgestuurd en klaar voor honderden klanten.
Starter
Pro
Enterprise
Isolatie is geen feature, het is de architectuur.
Veel SaaS-projecten beginnen met "multi-tenant" als checkbox en ontdekken een half jaar later dat elke nieuwe feature een extra vergeten tenant-check bleek te bevatten. Een data-leak is dan niet ver weg. De juiste aanpak is omgekeerd: tenant-bewustzijn zit op het laagste niveau, zodat ontwikkelaars niet eens de kans krijgen om scoping per ongeluk te vergeten.
Wij bouwen SaaS-platforms waarin tenant-ID zo diep in de querybuilder zit dat een vergeten where onmogelijk is. Policies controleren elke mutatie tegen de actieve tenant. Bestandsdownloads lopen via signed URLs die niet zomaar uit te wisselen zijn tussen tenants. Cross-tenant toegang retourneert een 404, bestaan van andermans data mag niet eens lekken.
Daarbovenop komt waar klanten écht om vragen: custom domains, white-label branding, per-tenant billing en een onboarding-flow die ofwel in vijf minuten zelfvoorzienend is, ofwel past in je verkoopproces. Laravel en Filament vormen daarvoor een stack die we op de detailniveaus kennen.
Wat we bouwen
De bouwstenen van een SaaS-platform dat met je klantenbestand meeschaalt.
Multi-tenancy
Elke klant zijn eigen afgeschermde omgeving, één applicatie, honderden klanten.
Abonnementsbeheer
Mollie of Stripe ingebouwd. Upgrades, downgrades en facturen automatisch.
Onboarding flow
Nieuwe klanten in 3 stappen actief, geen handmatig werk.
Usage-based billing
Factureer op gebruik. API-calls, gebruikers, opslag, wat bij jou past.
Tenant-scoping op query-niveau
Global scopes op elk Eloquent-model, een tenant-middleware die op elk request de context zet, en policies die tegen die context valideren. Scoping overslaan is structureel onmogelijk.
Custom domains en white-label
Subdomeinen én volledige custom domains met automatische SSL. Per-tenant logo, kleuren en e-mailsjablonen.
Admin en klant apart
Twee Filament-panels: eentje voor je interne team (ziet alle tenants), eentje voor eindgebruikers (ziet alleen hun eigen tenant). Verschillende rollen, verschillende UI.
Security by default
Row-level security op Postgres, signed URLs voor downloads, APP_KEY-rotatie zonder downtime. Cross-tenant pogingen leveren altijd een 404 op, geen hint over andermans data.
Zo werken we
Business model
Pricing-strategie, doelgroep en feature-tiers leggen we samen vast voordat er code wordt geschreven. Welk segment betaalt voor welke feature, welke usage telt mee, waar zitten de tier-grenzen.
Tenant-architectuur
Tenant-resolver, scoping-strategie, isolatie. Shared schema, database-per-tenant of hybride, vastgelegd vanuit compliance- en volume-eisen, niet vanuit voorkeur.
Bouw met tenant-tests
Elke feature krijgt expliciete cross-tenant tests in CI. De build faalt als een query tenant-scoping mist, dus een vergeten where wordt nooit een productie-incident.
Provisioning en launch
Onboarding-flow, admin-tooling voor support, monitoring per tenant. We onboarden je eerste klanten samen, daarna rolt het breder uit.
Waarmee we werken
Een stack die we op productie hebben staan, inclusief de foutafhandeling.
Platform en multi-tenancy
- Laravel (PHP 8.4)
- Filament 5 voor admin en portal
- Livewire 3 waar interactief
- Tenancy for Laravel + subdomain routing
- Custom domains met automatische SSL
Billing en data
- Stripe en Mollie subscriptions
- Laravel Cashier waar passend
- PostgreSQL met row-level security
- Redis voor cache, sessions en queues
- Laravel Horizon voor jobs
Infra en observability
- AWS Route53 + ACM voor SSL
- Cloudflare voor wildcard-domains
- Sentry voor errors en releases
- Per-tenant metrics in Grafana
- GitHub Actions CI/CD
Hoe dit er in de praktijk uitziet
Branchespecifieke SaaS voor een niche
Een ondernemer in de uitzendbranche wilde zijn interne urenregistratie-tool als SaaS aanbieden aan concullega's. Wij bouwden een multi-tenant platform waarin elk uitzendbureau zijn eigen omgeving kreeg onder een custom subdomein, met eigen logo, huisstijl en rapportage-sjablonen. Provisioning is self-service: na aanmelding en iDEAL-betaling is een nieuw bureau binnen tien minuten actief. Na achttien maanden zitten er ruim zestig tenants op de stack, zonder aparte codebase per klant.
Holding met meerdere werkmaatschappijen
Een holding met zes dochterondernemingen wilde één intern platform voor projectadministratie, maar met strikte scheiding tussen de entiteiten. Financiële data mag niet tussen maatschappijen heen en weer. Wij zetten een shared-schema multi-tenant op, waarbij elke werkmaatschappij een tenant is en de holding-directie via een overkoepelend admin-panel kpi's ziet zonder dossier-details. Eén codebase, zes werkelijkheden.
Agency die portalen beheert voor haar klanten
Een marketingbureau beheerde voor veertig klanten elk een apart WordPress-portaal. Onderhoud en uitrol van nieuwe features werd een nachtmerrie. Wij herbouwden het als één multi-tenant Laravel-applicatie met custom domains per klant. Eén release rolt uit naar alle veertig klanten tegelijk, maar elke klant ziet zijn eigen branding, eigen content en eigen gebruikers, watertight gescheiden.
Veelgestelde vragen
Shared schema of database-per-tenant, wat kiezen jullie?
Hoe voorkomen jullie dat tenant A data van tenant B ziet?
Kunnen klanten een eigen domein krijgen?
Hoe werkt billing per tenant?
Wat gebeurt er als een nieuwe klant aan boord komt?
Wat als één tenant heel hard groeit?
// volgende_stap.execute()
SaaS-product laten bouwen?
Vertel waar je product over gaat en voor wie. Wij mappen de tenant-architectuur, billing-flow en provisioning, en geven een concrete fasering terug.
// case_studies