Naar hoofdinhoud
Eigen projecten, van prototype tot productie

Wat ik gebouwd heb

Eigen softwareprojecten waarin ik alle rollen zelf vervulde: analyse, architectuur, realisatie, uitrol en beheer. Elke beschrijving is gebaseerd op de broncode en technische documentatie van het project, met de actuele status erbij. Over werk voor opdrachtgevers dat onder geheimhouding valt, vertel ik graag meer in een gesprek.

13 projecten getoond

Pijler: Gegevens & Kwaliteit

SEO-GEO Optimizer: vindbaarheid voor zoekmachines én AI

Scan van de demowebsite Well Connected in de SEO-GEO Optimizer
Weergave van een echte scan van de demowebsite Well Connected

1. Situatie & Uitdaging

Traditionele SEO-controles beoordelen pagina's vaak met vaste vuistregels. Daardoor ontstaan onterechte waarschuwingen en blijft buiten beeld of generatieve zoekmachines de inhoud goed kunnen begrijpen en citeren.

2. Wat er gebouwd is

Een analyseplatform dat de hele website leest (standaard tot 500 pagina's, op afspraak tot 5.000) en de opbouw van de pagina's, interne links, structured data en AI-leesbaarheid in samenhang beoordeelt. Pagina's worden eerst naar hun functie geclassificeerd, zodat aanbevelingen passen bij het type pagina. Bij elke bevinding staat wat er is gezien en wat u eraan kunt doen. Ik zet het platform in als dienst, binnen SEO en GEO: u krijgt het rapport en het advies, bij u hoeft niets geïnstalleerd te worden.

4. Resultaat & Waarde

U ontvangt een uitgebreid technisch, maar goed leesbaar SEO/GEO-rapport met verbeterpunten voor gewone zoekresultaten en voor AI-antwoorden. De bevindingen zijn geprioriteerd en houden rekening met het doel van iedere pagina. Na de verbeteringen meet ik opnieuw en ziet u per punt wat beter is geworden.

3. Toegepaste Techniek

  • Next.js en TypeScript met Playwright en Cheerio
  • Graafanalyse voor interne PageRank en verdeling van linkwaarde
  • Validatie van JSON-LD, semantische entiteiten en llms.txt
  • Controle of twaalf AI-crawlers (de leesprogramma's van onder meer ChatGPT en Perplexity) uw site mogen lezen en of teksten los te citeren zijn
  • Vaste, controleerbare regels voor de scores: dezelfde site geeft dezelfde uitkomst
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: Gegevens & Kwaliteit

Website Auditor: uitgebreide websitecontrole met vergelijkingsrapport

Scan van de demowebsite Well Connected in de Website Auditor
Weergave van een echte scan van de demowebsite Well Connected

1. Situatie & Uitdaging

De technische kwaliteit van een website zit verspreid over prestaties, toegankelijkheid, beveiliging en vindbaarheid. Een losse controle per onderwerp maakt het lastig om een eerste meting met een latere meting te vergelijken.

2. Wat er gebouwd is

Een eigen audittool die meer dan honderd controles uitvoert, elke scan bewaart en een eerste meting en een latere controlemeting in één rapport naast elkaar zet. De bevindingen worden vertaald naar heldere uitleg en concrete prioriteiten voor de opdrachtgever. Ik voer de audit uit als dienst: u krijgt het rapport, bij u hoeft niets geïnstalleerd te worden.

4. Resultaat & Waarde

U ontvangt een uitgebreid technisch, maar goed leesbaar vergelijkingsrapport. Het toont de ontwikkeling van de score, de meetwaarden en welke bevindingen zijn opgelost, verbeterd, verslechterd of nieuw zijn, met duidelijke prioriteiten voor de volgende stappen.

3. Toegepaste Techniek

  • Vaste scoreregels: dezelfde website geeft steeds dezelfde uitkomst
  • Toegankelijkheidscontroles volgens WCAG 2.2 niveau AA
  • Analyse van AI-leesbaarheid, structured data en llms.txt
  • Geautomatiseerde rapportgenerator met prioriteitenmatrix
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: AI & Processen

PAL: lokale assistent met een betrouwbare uitvoeringslaag

Demo-weergave van PAL
Demo-weergave met fictieve gegevens

1. Situatie & Uitdaging

Een AI-assistent die alleen antwoorden geeft, helpt niet bij werk dat meerdere stappen, systemen en goedkeuringen omvat. Zodra een externe dienst hapert, moet duidelijk blijven wat al is uitgevoerd en wat veilig opnieuw kan.

2. Wat er gebouwd is

Een lokaal assistentenplatform met een web- en mobiele interface, langetermijngeheugen en een uitvoeringsmotor voor terugkerende en proactieve taken. Externe gereedschappen worden via een gestandaardiseerd koppelvlak beschikbaar gemaakt.

4. Resultaat & Waarde

Een 24/7-assistent die taken controleerbaar kan plannen en uitvoeren, na een storing verdergaat vanaf een bekend punt en risicovolle acties eerst ter goedkeuring voorlegt.

3. Toegepaste Techniek

  • Fastify- en TypeScript-backend met React PWA en mobiele client
  • Model Context Protocol voor dynamische gereedschappen en integraties
  • SQLite en Qdrant voor taakstatus en semantisch langetermijngeheugen
  • Leases, checkpoints en transactional outbox voor veilig hervatten
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: Systemen & Integratie

WebsiteCrawler: crawlstraat voor .nl-domeinen

Demo-weergave van WebsiteCrawler
Demo-weergave met fictieve gegevens

1. Situatie & Uitdaging

Om websites te vinden en te beoordelen, moet een grote set .nl-domeinen worden verwerkt; met de hand is dat niet te doen. De verwerking moet doorgaan als individuele domeinen een trage DNS-respons, TLS-fout of foutpagina geven.

2. Wat er gebouwd is

Een eigen crawlstraat die domeinen inneemt, vooraf toetst, als crawltaak inplant en de resultaten beschikbaar maakt in een dashboard en via een API.

4. Resultaat & Waarde

Een bewaakbare verwerkingsketen waarin de wachtrij, actieve taken en fouten apart zichtbaar zijn; een mislukte website stopt de rest van de verwerking niet.

3. Toegepaste Techniek

  • Drie Node.js-services met PostgreSQL als gedeelde gegevenslaag
  • Frontier die alleen geschikte domeinen als crawltaak inplant
  • DNS- en HTTP-prefiltering buiten de databasetransactie
  • Retry- en backoffbeleid per crawltaak
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: Systemen & Integratie

NexusCommander: één bestandsbeheerder voor desktop en web

Schermafdruk van NexusCommander
Schermafdruk van de app, met voorbeeldbestanden · Bekijk op GitHub

1. Situatie & Uitdaging

Klassieke dual-pane bestandsbeheerders zijn vaak verouderd of alleen voor één platform beschikbaar. Moderne desktopalternatieven gebruiken geregeld een zware runtime en delen platformlogica direct met de interface.

2. Wat er gebouwd is

Een cross-platform bestandsbeheerder met gedeelde Svelte-interface en afzonderlijke platformlagen voor een native desktopapp en een webapplicatie. Beide varianten spreken hetzelfde expliciete functiecontract.

4. Resultaat & Waarde

Een responsieve bestandsbeheerder met dezelfde bediening op desktop en web, terwijl bestandssysteemrechten en platformspecifieke functies strikt gescheiden blijven.

3. Toegepaste Techniek

  • Monorepo met Svelte, SvelteKit en gedeelde UI-componenten
  • Native desktopbackend in Rust met Tauri 2
  • NexusIpc-contract met runtime capability detection
  • CodeMirror-editor, directorycaching en meertalige interface
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: Systemen & Integratie

NexusPaint: snelle beeldbewerking met lagen

Schermafdruk van NexusPaint
Schermafdruk van de app, met voorbeeldbestanden · Bekijk op GitHub

1. Situatie & Uitdaging

Voor snelle grafische bewerkingen op Linux is de keuze vaak een zeer uitgebreid pakket of een eenvoudige editor zonder lagen, selecties en moderne afbeeldingsformaten.

2. Wat er gebouwd is

Een native rastereditor met tekengereedschappen, lagen, blendmodi, selecties en een parallelle pixelengine. Grote bewerkingen worden buiten de hoofdthread verwerkt zodat de interface responsief blijft.

4. Resultaat & Waarde

Een lichtgewicht, installeerbare Linux-editor die dagelijkse beeldbewerking combineert met professionele laag- en selectiemogelijkheden.

3. Toegepaste Techniek

  • TypeScript, Canvas API en tiled rendering via Web Workers
  • Tauri 2 en Rust voor native desktopintegratie
  • Delta-gecomprimeerde geschiedenis met periodieke keyframes
  • Ondersteuning voor moderne beeldformaten en Linux-randapparatuur
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: Systemen & Integratie

Firecrawl-platform als gedeelde crawlvoorziening

Demo-weergave van Firecrawl-platform als gedeelde crawlvoorziening
Demo-weergave met fictieve gegevens

1. Situatie & Uitdaging

De Website Auditor en toekomstige applicaties moeten allemaal websites crawlen en documenten verwerken. Het is inefficiënt om die voorziening per applicatie opnieuw in te richten, met eigen toegang en eigen beheer.

2. Wat er gebouwd is

Een zelfgehost Firecrawl-platform met een aparte gateway. De gateway bewaakt het verbruik per applicatie, voorkomt dat een taak dubbel wordt uitgevoerd en houdt de status van taken bij. Zo gebruiken alle applicaties één beheerd koppelvlak.

4. Resultaat & Waarde

Een gedeelde voorziening met reproduceerbare uitrol en een expliciet beveiligd uitgaand netwerkpad voor crawlverkeer.

3. Toegepaste Techniek

  • Gepinde upstream-release en geverifieerde image-digests
  • Persistente gatewayopslag voor quota, idempotency en jobs
  • Egress-allowlist op PVE- en Dockerlaag
  • Readiness-controle, back-up en herstel, en uptimebewaking
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: AI & Processen

AI-chatwidget: installeerbare module die bezoekersvragen beantwoordt zonder trackingcookies

Schermafdruk van AI-chatwidget
Schermafdruk van de chatwidget op de demowebsite Well Connected

1. Situatie & Uitdaging

Websitebezoekers moesten antwoord op hun vragen kunnen krijgen zonder trackingcookies of browseropslag. De sitekennis moest per website te wisselen zijn, zonder de widgetcode te kopiëren.

2. Wat er gebouwd is

Een herbruikbare softwaremodule die op de website van de klant wordt geïnstalleerd, met een los kennisbestand per website en een Node/TypeScript-backend die het AI-model aanroept.

4. Resultaat & Waarde

Een module die in productie is en te zien is op de Well Connected-website. Voor elke website wordt dezelfde widget geïnstalleerd; alleen het kennisbestand is per website anders.

3. Toegepaste Techniek

  • Vanilla JavaScript-widget in Shadow DOM
  • Geen cookies en geen browseropslag
  • OpenRouter met Claude Haiku als primair model en Gemini als reserve
  • Validatie, rate limiting en een dagbudget in de backend
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: AI & Processen

AIEnergyMonitor: energiegegevens veilig uitlezen en duiden

Demo-weergave van AIEnergyMonitor
Demo-weergave met fictieve gegevens

1. Situatie & Uitdaging

Energiegegevens uit Home Assistant, actuele tarieven en apparaatstatussen zijn afzonderlijk beschikbaar, maar geven zonder samenhang weinig houvast voor een veilige volgende stap.

2. Wat er gebouwd is

Een eigen monitor die gegevens uit Home Assistant opslaat, datakwaliteit beoordeelt, prijs- en kostensituaties toont en adviezen of schakelvoorstellen kan voorbereiden.

4. Resultaat & Waarde

In de standaardmodus stuurt de monitor niets aan en geeft hij alleen advies. Metingen, adviezen en voorgestelde acties zijn zo eerst te controleren, en een apparaat schakelt alleen na expliciete goedkeuring.

3. Toegepaste Techniek

  • Python-service met lokale SQLite-opslag en FastAPI-dashboard
  • Home Assistant REST-inleeslaag en contractbewuste prijsprovider
  • Controle van de datakwaliteit: actualiteit, plausibiliteit en bruikbaarheid voor training
  • Shadowmodus (alleen meekijken en adviseren), allowlist voor apparaten en expliciete goedkeuring voor sturing
STATUS: IN ONTWIKKELING EIGEN PROJECT
Pijler: AI & Processen

Home Assistant AI: beeld- en sensoranalyse zonder cloud

Demo-weergave van Home Assistant AI
Demo-weergave met fictieve gegevens

1. Situatie & Uitdaging

Camera- en sensorgegevens zijn bruikbaar voor meldingen en briefings, maar bevatten informatie die niet onnodig naar een commerciële clouddienst hoort te gaan. De oplossing moet bovendien blijven werken wanneer de internetverbinding wegvalt.

2. Wat er gebouwd is

Een eigen Home Assistant-integratie die camerabeelden en sensorgegevens naar een lokale AI-server stuurt. Dezelfde voorziening maakt contextuele ochtendbriefings en kan situaties in de fysieke omgeving beschrijven.

4. Resultaat & Waarde

Privacygevoelige analyses blijven lokaal, kennen geen terugkerende API-kosten en zijn ook zonder externe AI-dienst beschikbaar.

3. Toegepaste Techniek

  • Custom Home Assistant-component in Python
  • Lokale modelinference via Ollama op een afzonderlijke Debian-server
  • Samenvoeging van camera-, agenda- en sensorgegevens
  • Verwerking binnen het eigen netwerk, zonder verplichte cloudroute
STATUS: IN ONTWIKKELING EIGEN PROJECT
Pijler: Gegevens & Kwaliteit

RapportSprint: offline omzetreconciliatie

Demo-weergave van RapportSprint
Demo-weergave met fictieve gegevens

1. Situatie & Uitdaging

Omzet uit een webshop, verkoopplatform en directe facturen komt in verschillende CSV-formaten binnen. Handmatig samenvoegen in spreadsheets kost tijd, leidt tot fouten en maakt privacygevoelige financiële gegevens afhankelijk van clouddiensten.

2. Wat er gebouwd is

Een volledig offline reconciliatie-engine die exports normaliseert, transacties ontdubbelt, retouren verwerkt en een interactief controlerapport voor ondernemer en boekhouder oplevert.

4. Resultaat & Waarde

Meerdere verkoopkanalen worden in seconden samengebracht tot een herleidbaar overzicht, zonder financiële bronbestanden naar een externe dienst te versturen.

3. Toegepaste Techniek

  • Dependency-vrije Python 3-implementatie met standaardbibliotheek
  • Berekeningen in exacte eurocenten, zonder afrondingsfouten
  • Flexibele kolomherkenning en namespaces voor ontdubbeling
  • Lokale HTML-rapportage en controleerbare CSV-uitvoer
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: Systemen & Integratie

NexusTVGuide: reclamevrije gids voor Android TV

Schermafdruk van NexusTVGuide
Beeld van de app op een Android TV · Bekijk op GitHub

1. Situatie & Uitdaging

Tv-gidsen voor Android TV zijn vaak advertentiegedreven, slecht te bedienen met een afstandsbediening of gebonden aan één televisieprovider. De programmagegevens van externe bronnen wisselen bovendien van vorm en beschikbaarheid.

2. Wat er gebouwd is

Een native Android TV-app met een eigen normalisatie- en cachingbackend. De backend vertaalt externe programmagegevens naar één stabiel REST-contract en een XMLTV-feed voor andere mediaclients.

4. Resultaat & Waarde

Eén rustige tv-ervaring voor de woonkamer en één centrale gegevensbron voor Android TV, Kodi, Jellyfin en andere XMLTV-clients.

3. Toegepaste Techniek

  • Kotlin, AndroidX Leanback en coroutines voor D-padbediening
  • Fastify-backend met TypeScript en Zod-contractvalidatie
  • Normalisatie naar REST en gestandaardiseerde XMLTV
  • Deep links naar officiële streams van NLZiet
STATUS: IN PRODUCTIE EIGEN PROJECT
Pijler: Processen & Beheer

Private cloud: 18 geïsoleerde diensten met herstelplan

Demo-weergave van Private cloud
Demo-weergave met fictieve gegevens

1. Situatie & Uitdaging

Zelf gehoste bedrijfsdiensten geven controle over data en kosten, maar worden zonder vaste beheerprocessen kwetsbaar voor configuratieverschillen, gemiste updates, stroomuitval en back-ups waarvan het terugzetten nooit is getest.

2. Wat er gebouwd is

Een gedocumenteerd beheer- en automatiseringsplatform voor een Proxmox-cluster met geïsoleerde Linux-containers, centrale netwerkvoorzieningen, monitoring, updatebewaking en gelaagde back-ups.

4. Resultaat & Waarde

Een eigen applicatieplatform waarop software controleerbaar kan draaien, met zicht op beschikbaarheid, wijzigingen en herstelbaarheid in plaats van alleen op de normale werking.

3. Toegepaste Techniek

  • Proxmox VE, Debian, LXC, systemd en gescheiden netwerkdiensten
  • Split-horizon DNS, reverse proxy en versleutelde toegang op afstand
  • 3-2-1-back-ups met PBS, deduplicatie en versleutelde offsite kopieën
  • Monitoring, UPS-gestuurde shutdown en geteste herstelrunbooks
STATUS: IN PRODUCTIE EIGEN PROJECT
Klantcases en demonstrator

Websites

Websites gebouwd met dezelfde technische zorgvuldigheid: snel, zonder trackingcookies en met aandacht voor toegankelijkheid.

Schermafdruk van de website WordsPerfect.nl

WordsPerfect.nl

Privacyvriendelijke website voor een tekstbureau: zonder trackingcookies, met een heldere semantische opbouw en korte laadtijden.

KlantcaseBEZOEK SITE
Schermafdruk van de website van Garage John Hooijmans

Garage John Hooijmans

Toegankelijke website voor een lokaal garagebedrijf, met de nadruk op eenvoud, duidelijke contactmogelijkheden en een goede werking op smartphones.

KlantcaseBEZOEK SITE
Schermafdruk van de Well Connected-demowebsite, gebouwd in WordPress

Well Connected

WordPress-demowebsite zonder pagebuilder. De vormgeving is vastgelegd in één centrale set design tokens die automatisch in het thema wordt overgenomen; interactieve blokken gebruiken de officiële Interactivity API van WordPress. Op deze site draait ook de demo van de AI-chatwidget.

Eigen demonstratorFSE · DESIGN TOKENS
Ontwikkeling & experimenten

Eigen tools en prototypes

Kleinere tools en prototypes, gebouwd om zoekalgoritmen en grootschalige dataverwerking in de praktijk uit te proberen.

Schermafdruk van Descrabblr.nl

Descrabblr.nl

Tool die bij een reeks letters alle mogelijke woorden zoekt en ze sorteert op puntwaarde, met een geoptimaliseerd zoekalgoritme.

BEZOEK TOOL
Schermafdruk van Kruiswoordkraker.nl

Kruiswoordkraker.nl

Zoektool voor kruiswoordpuzzels: u vult de bekende letters in, laat de onbekende open en de tool zoekt passende woorden in Nederlandse woordenlijsten.

BEZOEK TOOL
Schermafdruk van de NL Websitecrawler

NL Websitecrawler

Schaalbare crawler die grote aantallen .nl-domeinen analyseert op technische opbouw, SSL-configuratie en toegankelijkheid. De verwerkingsketen erachter staat hierboven beschreven als WebsiteCrawler.

INTERN MEETSYSTEEM