Het portaal waarop een autobedrijf zijn dag draait
Offertes, werkbonnen, facturen, klanten en voertuigen, planning, een gedeelde inbox, boekhouding en bankkoppelingen in één systeem. Gebruikt aan de balie, in de werkplaats en door de eigenaar.
Het probleem
Het bedrijf werkte met losse spreadsheets en losse back-office-tools. Offertes, werkorders, betalingen en klantcontact zaten niet aan elkaar vast.
Wat ik bouwde
Eén systeem, van offerte met voertuig, via goedkeuring en werkbon, tot factuur en de bijbehorende bankboeking. Monteurs klokken in met een NFC-tag aan de muur en werken vanaf een tablet: foto's uploaden, taken afronden.
Mail en WhatsApp komen binnen in één inbox, en de boekhouding wordt automatisch gematcht met de bankrekeningen en doorgeboekt.
Wat er technisch toe doet
Uitrollen zonder dat iemand het merkt
Een nieuwe versie start op eigen hardware naast de oude en neemt het pas over als de health-check precies die versie meldt. Terugdraaien slaat de schemastap over, en het deployscript heeft een eigen testsuite.
Achtergrondtaken die nooit dubbel draaien
Tijdens een uitrol draaien twee versies naast elkaar. Elke taak waarbij een dubbele run schade doet, zoals de banksync en de boekingen, neemt daarom eerst een lock in de database: 21 taken in totaal.
Inklokken met ondertekende NFC-tags
Monteurs tikken een NFC-tag aan de muur. De server controleert de cryptografische handtekening die de chip bij elke tik maakt, zodat een geldige tik alleen van de echte tag kan komen.
Een gedeelde inbox die bijblijft
Een losse worker houdt de mailverbindingen live open en levert aan dezelfde synchronisatie als de geplande run en de handmatige knop, zodat die nooit uit elkaar lopen. Mailwachtwoorden staan versleuteld in de database.
De AI stelt voor, de server stelt vast
In de inbox zet een AI-assistent concepten en offertevoorstellen klaar. Het model leest en kiest; elke prijs en elk kenteken controleert de server opnieuw tegen de bron.
Bank en boekhouding zonder dubbele boekingen
Transacties uit vier betaalbronnen worden gelijkgetrokken en aan facturen gekoppeld. Boekingen gaan via een geplande run met een controle vooraf en een vingerafdruk per bron, zodat niets twee keer wordt geboekt.
Een AI-assistent die namens de gebruiker werkt
Via een eigen koppeling met OAuth werkt een AI-assistent in het portaal met de rechten van de gebruiker, begrensd per rol en scope. Elke wijziging wordt met de stand ervoor en erna vastgelegd en is in één stap terug te draaien.
Meetstaat
Geteld in de repository, alleen bestanden in git.
- eerste commit
- 17-08-2024
- pagina's
- 64
- datamodellen in het schema
- 158
- testbestanden
- 1.377
- achtergrondtaken met een databaselock
- 21
Hoe gemeten
git log --reverse --format='%ad' --date=short | head -1 git ls-files 'app/**/page.tsx' | wc -l grep -c '^model ' prisma/schema.prisma git ls-files | grep -E '\.(test|spec)\.(ts|tsx)$' | wc -l telling van JOB_LOCKS in app/lib/jobLock.ts
Gemeten op 27-10-2026.
Iets vergelijkbaars nodig, of een team dat zo'n systeem bouwt?
info@bitvire.com