Enterprise Resource Planning

Van de eerste kennismaking tot de btw-aangifte staat alles op één plek: sales, offertes, projecten, facturen, bank en boekhouding. We hebben het zelf gebouwd en werken er elke dag mee.

Iemand aan een bureau, met Enterprise Resource Planning op het scherm

In het kort

  • 13

    onderdelen in één systeem, van contacten tot rapporten

  • 4

    rapporten: resultatenrekening, balans, btw-overzicht en gebeurtenissen

  • 2FA

    inloggen met een code uit een authenticator-app

  • Dagelijks

    in gebruik voor ons eigen bedrijf in Nijmegen

Voor: SystemLabs zelfType: maatwerk webapplicatieJaar: 2026Status: dagelijks in gebruikDraait op: systemlabs.nl/erp, achter een inlogLeestijd: circa 3 minuten

Waarom we ons eigen systeem bouwden

Elke opdracht loopt bij ons dezelfde route: kennismaken, een voorstel, bouwen en overdragen, en daarna factureren en de cijfers bijhouden. Die hele route wilden we op één plek hebben, ingericht zoals wij werken. Dus hebben we hem zelf gebouwd.

Wat we wilden voorkomen

  • Een lead, een offerte en een factuur die los van elkaar bestaan, zodat je zelf moet onthouden wat bij wat hoort.
  • Bonnetjes en inkoopfacturen die in een map of mailbox blijven liggen tot het kwartaal om is.
  • Pas bij de btw-aangifte zien hoe het er eigenlijk voor staat.

Hoe het nu werkt

  • Een lead schuift door de pipeline, wordt een offerte en daarna een factuur, met het offertenummer als kenmerk.
  • Een bon of inkoopfactuur upload je als pdf of foto. De gegevens op een foto leest het systeem zelf uit.
  • Omzet, winst, btw en wat er nog openstaat zie je op elk moment, niet pas aan het eind van het kwartaal.
Losse stukken, zoals een offerte, een foto van een bon, banktransacties en een contact, die samenkomen in één dashboard

Eén login, en de hele zaak ligt open

We loggen in met een code uit onze authenticator-app. Daarna opent het Overzicht: omzet exclusief btw, winst, openstaande facturen en lopende projecten, met daaronder de taken van vandaag en de klanten die we moeten opvolgen. De rest zit in de zijbalk: Contacten, Intake, Sales, Offertes, Producten, Projecten, Facturen, Inkomend, Bank, Boekhouding, Documenten en Rapporten.

Van eerste gesprek tot betaalde factuur

  • Salesbord met vier kolommen: Kennismaken, Voorstel, Akkoord en Geen opdracht

    Sales: van kennismaking tot akkoord

    Elke lead is een kaart op een bord met vier kolommen: Kennismaken, Voorstel, Akkoord en Geen opdracht. Per lead leggen we het onderwerp vast, de klant, het soort werk, een indicatie exclusief btw, een notitie en de datum waarop we opvolgen. Die opvolging verschijnt vanzelf op het Overzicht.

    • Kennismaken
    • Voorstel
    • Akkoord
    • Geen opdracht
    • Opvolgen
  • Een offerte die met één stap een factuur wordt, met het offertenummer als kenmerk

    Offertes en facturen die bij elkaar horen

    Een offerte stellen we op met regels uit Producten en versturen we als pdf. Is de klant akkoord, dan maken we er rechtstreeks een factuur van. De offerte krijgt de status Gefactureerd en op de factuur staat het offertenummer als kenmerk. Zo zie je altijd waar een bedrag vandaan komt.

    • Offerte
    • Gefactureerd
    • Kenmerk
    • PDF
  • Projectoverzicht met de fases Afgebakend, Bouwen, Overdragen en Overgedragen, en daaronder taken, notities en bestanden

    Projecten in vier fases

    Elke opdracht doorloopt vier fases: Afgebakend, Bouwen, Overdragen en Overgedragen. Per project staan de klant, de deadline, taken met een datum, notities en bestanden bij elkaar. Lopende projecten tellen mee op het Overzicht, zodat we zien wat er nog onderhanden is.

    • Afgebakend
    • Bouwen
    • Overdragen
    • Overgedragen
    • Taken
    • Notities
    • Bestanden
  • Factuurlijst met statussen van Concept tot Betaald

    Facturen, tot ze betaald zijn

    Een factuur gaat van Concept naar Verstuurd, zo nodig naar Herinnerd, en uiteindelijk naar Betaald. Alles wat verstuurd of herinnerd is, telt mee bij Openstaande facturen op het Overzicht. Een creditnota maken we in hetzelfde scherm, en elke factuur kun je als pdf downloaden.

    • Concept
    • Verstuurd
    • Herinnerd
    • Betaald
    • Creditnota
    • PDF
  • Een banktransactie die gekoppeld wordt aan de bijbehorende factuur

    Bank gekoppeld aan facturen

    Elke banktransactie staat met datum, naam, omschrijving en bedrag in Bank. Een bijschrijving koppelen we aan de factuur die ermee betaald is. Die factuur staat dan op Betaald, en het banksaldo in de rapporten klopt. Een verkeerde koppeling maak je ongedaan met Ontkoppelen.

    • Transacties
    • Koppelen aan factuur
    • Ontkoppelen
    • Banksaldo

Alle onderdelen

Hierboven zag je de route van een opdracht. Dit zijn alle onderdelen van het ERP, gegroepeerd zoals we ze zelf gebruiken. Elke lijst kun je exporteren.

  • Dashboard met vier kerncijfers, taken van vandaag en opvolgingen

    Overzicht

    Omzet exclusief btw, winst, openstaande facturen en lopende projecten, met daaronder de taken van vandaag en de opvolgingen die wachten. Per periode te bekijken.

  • Rapportenoverzicht met grafieken voor winst, werkkapitaal, btw en banksaldo

    Rapporten

    Winst, werkkapitaal, btw, banksaldo, wat klanten nog moeten betalen en wat wij nog aan leveranciers verschuldigd zijn, per maand of kwartaal. Met de resultatenrekening, de balans en het btw-overzicht als losse rapporten.

  • Logboek met gebeurtenissen, elk met type, datum en tijd

    Gebeurtenissen

    Een logboek van alles wat er gebeurt: een offerte die is aangemaakt of verstuurd, een factuur die uit een offerte is gemaakt, een statuswijziging, een betaling. Met type, datum en tijd, en een link naar het item zelf.

Techniek

Het ERP draait in dezelfde Next.js-applicatie als deze website, onder /erp. Zo onderhouden we één codebase, en gebruiken we zelf elke dag de techniek die we ook voor klanten inzetten.

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS
  • Supabase
  • pdf-lib
  • Tesseract.js
  • Nodemailer
  • Frontend

    Next.js 16 met React 19 en TypeScript. Alle schermen zijn opgebouwd uit eigen componenten, zonder externe UI-bibliotheek, en opgemaakt met Tailwind CSS.

  • Backend en data

    Supabase slaat de gegevens en bestanden op en wordt aangesproken via server-routes van Next.js. Offertes en facturen gaan per mail de deur uit via SMTP, met Nodemailer.

  • Functionaliteit

    pdf-lib maakt de pdf's van offertes en facturen. Tesseract.js leest de gegevens van een foto van een bon of factuur uit, in het Nederlands en Engels, direct in de browser. Elke lijst is als CSV te exporteren, ook het grootboek.

  • Beveiliging en toegang

    Inloggen gaat met een tijdgebonden code uit een authenticator-app (TOTP), die we zelf hebben geïmplementeerd. De koppeling stel je eenmalig in met een QR-code. De sessie loopt via een ondertekende cookie, en het ERP is uitgesloten van zoekmachines.

1 codebase met de website · 13 onderdelen · 2FA · export naar CSV en pdf

Architectuur in het kort
  • Het ERP staat onder /erp in dezelfde Next.js-app als de website, met een eigen layout en zonder indexering.
  • Eén datamodel voor contacten, leads, offertes, projecten, facturen, inkomende stukken en banktransacties, zodat alles naar elkaar kan verwijzen.
  • Rapporten en btw worden berekend uit dezelfde gegevens als de facturen en kosten. Niets wordt dubbel ingevoerd.
  • Unit tests (Vitest) voor de gevoelige onderdelen: de factuur-pdf, het uitlezen van bonnen en de 2FA-codes.

Zo'n systeem, maar dan voor jouw bedrijf?

Dit ERP is gebouwd rond hoe wij werken. Zo'n systeem kunnen we ook voor jou bouwen, op maat: met de onderdelen die jij nodig hebt en niets wat je niet gebruikt. In een eerste gesprek kijken we samen wat dat is. Daarna krijg je een offerte op maat.