In ontwikkeling, nog niet live

Werkbonnen van planning tot factuur, zonder dat iemand elkaars werk overschrijft

Fyldd is een werkbonnenplatform dat ik voor een klant bouw, voor installatie- en servicebedrijven: een app voor de monteur, een backoffice voor planning en kantoor, en een portaal voor de boekhouder.

Rol
Alles, alleen gebouwd
Periode
Juni 2026 tot nu
Stack
TypeScript, Expo, Next.js, Fastify, PostgreSQL
Status
In ontwikkeling
Backoffice · werkbon WB-1042 (eerdere huisstijl)
Werkbon in de backoffice met statusstappen van concept tot factuur
Werkbon in de app met workflow, uren, materieel, foto's, handtekening en formulieren
Stappenplan met vergrendelde vervolgstappen
De backoffice staat er nog in de eerdere huisstijl. Alle schermen tonen demo-data.

Het probleem

Installatiebedrijven sturen hun monteurs vaak nog aan met papieren werkbonnen, WhatsApp en verouderde software. Werken twee collega's tegelijk aan dezelfde gegevens, dan raakt er stil werk kwijt.

Wat ik bouwde

Eén systeem met PostgreSQL als enige bron van waarheid. Een wijziging staat binnen een seconde bij alle collega's, en wie een verouderde versie opslaat krijgt een melding in plaats van stil verloren werk.

De werkbon loopt van concept via planning en uitvoering (uren, materialen, foto's met locatie, de handtekening van de klant) tot de factuur. De boekhouder krijgt met toestemming van de klant toegang tot de cijfers en exporteert ze als CSV, PDF of UBL.

Wat er technisch toe doet

  1. Row-Level Security als tweede slot

    Elke request draait in een transactie die het bedrijf vastzet; policies in PostgreSQL filteren 49 tabellen daarop, en de API verbindt als een rol zonder superuser-rechten. Bedrijven kunnen elkaars gegevens nooit zien, ook niet bij een fout in een query.

  2. Live zonder verversen

    De server stuurt via Server-Sent Events alleen een signaal dat iets veranderde, en pas na de commit. De app haalt de nieuwe data zelf op via de gewone, beveiligde API.

  3. Nooit stil verloren werk

    Elke rij heeft een versienummer. Wie een verouderde versie opslaat krijgt een conflict met de actuele versie terug: "Gewijzigd door iemand anders. Laad opnieuw."

  4. Workflows en formulierbouwer

    Een bedrijf stelt per soort werk een stappenplan samen; verplichte stappen vergrendelen de volgende. App en server delen één regel voor "mag deze werkbon afgerond worden", zodat ze het nooit oneens zijn.

  5. Boekhouderportaal met toestemming

    Een boekhoudkantoor vraagt toegang, de klant verleent of trekt die in. Afgesloten periodes blokkeren wijzigingen aan facturen; exports in CSV, PDF en UBL 2.1.

  6. Abonnementen per gebruiker

    Betalingen via Mollie: een basisprijs plus een toeslag per extra medewerker. Een extra plek midden in een periode wordt naar rato bijgefactureerd.

  7. Routes en documenten

    Per monteur een dagroute optimaliseren, met een eenvoudige terugval als de routeserver niet bereikbaar is. Werkbon-, offerte- en factuur-PDF's worden op de server gerenderd.

Meetstaat

Geteld in de repository, niet geschat.

commits sinds 6 juni 2026
502
databasetabellen
82
tabellen onder Row-Level Security
49
schermen in de mobiele app
57
testbestanden
123
talen in de app
11
Hoe gemeten
git rev-list --count HEAD
grep -rhc "= pgTable(" werkapp-server/src/db/schema | paste -sd+ | bc
grep -c "werkapp_apply_tenant_rls('" werkapp-server/src/db/rls.sql
find werkapp-app/src/app -name '*.tsx' ! -name '_layout.tsx' | wc -l
git ls-files | grep -cE '\.(test|spec)\.(ts|tsx)$'
ls werkapp-app/src/i18n/locales | wc -l

Gemeten op 27-10-2026 in de eigen repository.

Iets vergelijkbaars nodig, of een team dat zo'n systeem bouwt?

info@bitvire.com