Naar de inhoud
Rascals
Werk
Eigen product 2026 — nu

Stuart

Een modulair platform dat om het even wat beheert.

Eén kern, een handvol vervangbare packages, en een applicatie die nooit geforkt hoeft te worden om bij de volgende klant te passen.

Composer-packages
5 Composer-packages
backoffice-modules
13 backoffice-modules
aanpassingen aan de kern per module
0 aanpassingen aan de kern per module
Rol
Product, architectuur, bouw
Periode
2026 — nu
Stack
Laravel 12 Livewire 3 Tailwind CSS MySQL Laravel Cashier Docker

Het probleem

Elk bedrijf vraagt dezelfde tachtig procent — accounts, rollen, uitnodigingen, rechten, een kalender, een dashboard — en daarna twintig procent die telkens anders is. Die twintig als een branch van de tachtig bouwen betekent één fork per klant onderhouden, en bij de derde durft niemand nog iets te upgraden. Stuart bestaat om van die twintig een package te maken in plaats van een branch.

Hoe het werkt

De kern declareert interfaces, de modules implementeren ze, en de applicatie beslist welke implementatie eraan hangt. Recepten benoemen een ingrediënt via het voorraadcontract en niet via de voorraadtabel, dus het hele stockpakket vervangen laat recepten overeind. Het wordt bewust gedemonstreerd op iets onglamoureus en genadeloos — een huishouden runnen, waar de voorraad echt is, de deadline het avondeten is, en niemand een workaround accepteert.

Wat erin zit

01

Voorraad als dubbele boekhouding

Elke beweging is in balans en heeft twee kanten, dus er wordt nooit iets gecreëerd of vernietigd — alleen verplaatst. Loten, locaties, FIFO- en FEFO-picking, reservaties, en een voorraadstand die altijd uit te leggen valt in plaats van enkel te tonen.

02

Recepten die weten wat ze kosten

Ingrediënten, stappen, gereedschap en timings, gepland tegen wat er effectief in de kast staat. Het package hangt af van de kern en nooit van voorraad — precies dat maakt allebei vervangbaar.

03

Aankopen, leveranciers en boodschappen

Een kasticket wordt voorraad, een boodschappenlijst wordt een aankoop, en de planner maakt van volgende week allebei. Elke stap belandt in het grootboek en niet ernaast.

04

Facturatie als deel van het platform

Abonnementen via Laravel Cashier, facturen opgemaakt via de API van Clark — het product factureert zijn klanten dus met dezelfde compliancemachine die het verkoopt.

05

Op uitnodiging, met opzet

Publieke registratie staat uit, e-mail wordt geverifieerd vóór ze vertrouwd wordt om mee in te loggen of te verzenden, en rollen en rechten zijn groepsgewijs. Een tenant is een gezin of een bedrijf, geen mailinglijst.

06

Draait waar je het zet

Docker om te ontwikkelen, een gescript release naar een droplet voor productie — lokaal bouwen, versturen, migreren, symlink omzetten. Terugrollen is de symlink terugzetten.

Een keuze die uitleg verdient

De receptentabel draagt geen foreign key naar items. Dat kan ook niet: de tabel waar een item in leeft hoort bij het package dat het voorraadcontract invult, en het receptenpackage heeft geen recht om die naam te kennen. Die constraint opgeven is precies wat het mogelijk maakt een module te vervangen zonder migratie — een bewuste ruil, en de reden dat dit een platform is en geen vier applicaties die op elkaar rijmen.

Staat er zoiets op je lijst?

De projecten verschillen, de manier van werken niet. Vertel wat je probeert op te lossen.

Neemt nieuw werk aan