nidus
Next.js · Vercel
Webdashboard: overzicht en bediening van het hele platform in de browser.
Het zenuwcentrum van het LOWI-platform
Deze pagina wordt een diepere blik op Nidus: architectuur, beslissingen en code. Inhoud volgt binnenkort.
Next.js · Vercel
Webdashboard: overzicht en bediening van het hele platform in de browser.
Expo / React Native · iOS
Mobiele app voor onderweg, praat uitsluitend met nidus-api.
Fastify 5 / TypeScript · Railway · Frankfurt
Centrale businesslogica; het enige component met schrijftoegang tot Supabase.
PostgreSQL · Frankfurt
Centrale opslag met row-level security en auth.
FastAPI / Python · Railway
ML-inferentie als aparte service naast de opslag.
Community Edition · Cloud
Batch ML-training en datapipelines.
Raspberry Pi · Thuisnetwerk
PM2 cron jobs voor energie, locatie en sync.
LLM · Anthropic API
Redenering en generatie voor Jarvis.
Voor VLamax bestaat geen gepubliceerde formule op basis van enkel vermogen of snelheid — bevestigd door twee onafhankelijke literatuuronderzoeken. In plaats van te blijven zoeken naar een preciezere aanpak, koos ik voor een pragmatische proxy (piekvermogen over 3 seconden × een constante, foutmarge ~21%) en markeerde die expliciet als 'indicatief' in de interface. Soms is de juiste technische beslissing niet het probleem oplossen, maar toegeven dat het met de beschikbare data niet preciezer kan — en dat eerlijk communiceren naar de gebruiker.
De eerste versie van het VO2max-model rekende een constante terug uit vijf testresultaten, met een foutmarge van meer dan 20%. Door over te stappen op een gepubliceerde, snelheidsgebaseerde formule (Ji et al., 2021) en enkel de individuele constante te kalibreren, daalde die foutmarge naar 4,71%. Les: een gevalideerde formulevorm met één gekalibreerde parameter is betrouwbaarder dan een volledig zelf teruggerekend model.
Trainingsblokken moesten sleepbaar zijn op seconde-niveau, met vermogen- en hartslagcurves eronder. De bestaande grafiekbibliotheek (Recharts) wordt elders in de app gebruikt, maar is niet gebouwd voor precieze pointer-interactie. In plaats van die bibliotheek te forceren, koos ik voor een gerichte custom SVG-component met eigen pointer-events — minder herbruikbaar, maar robuust voor exact dit probleem.
Wanneer iemand een trainingsblokgrens verschuift, moeten vermogen- en hartslaggemiddeldes lokaal herberekend worden zonder het ML-model opnieuw aan te roepen — dat vereist dat de volledige curve beschikbaar blijft. In plaats van een aparte tabel met duizenden rijen per sessie, koos ik voor een JSONB-kolom op de sessietabel zelf: de data hoort logisch bij die ene sessie en wordt nooit los bevraagd.
Voor de AI-assistent op deze portfolio moest ik kiezen: gespreksgeschiedenis serverside opslaan zoals de assistent in Nidus zelf doet, of clientside bijhouden en meesturen bij elke vraag. Voor een kort, anoniem portfoliobezoek weegt het voordeel van serverside opslag niet op tegen de kost: een nieuwe databasetabel, een retentiebeleid, en extra privacy-oppervlak voor onbekende bezoekers. Dezelfde technologie, een bewust andere architectuurkeuze voor een andere context.
Dit is een nagebouwde reconstructie van de echte interface met verzonnen data — geen live screenshot, om privacyredenen (het draait écht op gezinsdata).
Vrijdag 10 juli
MIDDAG INZICHT
Je week verliep rustig — geen opvallende pieken in energie of budget. Het weekend belooft mooi weer, ideaal om de tuinreminders af te werken.
WEEKRAPPORT
+18% t.o.v. gemiddelde €120
Colruyt
+9% t.o.v. gemiddelde €35
Piek op woensdag
19°C
Half bewolkt
14°–21°
Morgen: 20°C, zon
Vandaag
78
Goed herstel
0,38 kW
live
Binnenkort beschikbaar.