Live Data Flow — Goodless Platform
Klik op een component om te zien wat er door de keten stroomt. De ticker toont gesimuleerde live events.
Dataflow
Validatie checklist
GraphQL queries
1 — Hardware (op locatie)
🖥️
POS Terminal
Adyen · Starnet · Recreatex · Weezepay · Sjef
verkooptransacties
📡
SmartMat
RFID · WiFi · 4G · Heartbeat elke 60s
checkouts + heartbeat
🗑️
SmartBin
Checkin-punt · Fill level · Temperatuur
checkins + heartbeat
↓
Webhook / Polling / RFID signaal
2 — Backend (Firebase Cloud Functions — europe-west1)
⚙️
6-stappen algoritme
Sync → Checkout → Checkin → Recon-line → Recon-txn → Refunds
elke minuut + webhooks
💓
Heartbeat handler
Detecteert offline apparaten · 60s timeout
per heartbeat
↓
Knex SQL (schrijven naar tabellen)
3 — Database (PostgreSQL — Cloud SQL)
🗄️
alg_pos_transactions
Ruwe transacties van elke POS
raw data
🗄️
alg_package_checkouts
Pakket uitgegeven via SmartMat
checkout
🗄️
alg_package_checkins
Pakket teruggegeven via SmartBin
checkin
🗄️
alg_reconciliations
Matching + refund status
recon
↓
GraphQL query (NestJS leest via Knex)
4 — Middleware (NestJS + GraphQL — Cloud Run)
🔌
GraphQL API
HTTP queries · WebSocket subscriptions · Auth JWT
:8080/graphql
⚡
WebSocket
Realtime subscriptions voor heartbeat + live KPIs
ws://
↓
Apollo Client (HTTP + WebSocket)
5 — Dashboard (React — Firebase Hosting)
🏠
Home / Events
Actieve events · Waarschuwingen
query
📊
Monitoring
Transacties · Checkouts · Checkins · Rates
query + subscription
🔴
Offline alerts
Live heartbeat status per apparaat
subscription (WS)
👆 Klik op een component voor details
Selecteer een blok hierboven om de technische details, datastructuur en koppelpunten te zien.
Live event stroom — gesimuleerd
Dit zijn de concrete controles die je uitvoert om zeker te zijn dat de juiste data doorkomt bij het live gaan.
🔌
Stap 1 — GraphQL endpoint bereikbaarGa naar https://api.goodless.be/graphql in de browser. Als je de GraphQL Playground ziet, werkt de middleware.
📋
Stap 2 — Events ladenStuur een test-query voor alle actieve events. Als je echte eventnamen terugkrijgt, werkt de database-verbinding.
💳
Stap 3 — Transacties ladenQuery transacties voor een specifiek event. Vergelijk het aantal met wat in het POS-systeem (Adyen/Recreatex) staat. Moeten overeenkomen.
📡
Stap 4 — Heartbeat subscriptieOpen WebSocket verbinding en wacht 60 seconden. Je moet heartbeat-pakketten binnenkrijgen van de matten die online zijn.
🔁
Stap 5 — Recon validerenKies één transactie, controleer of de checkout en checkin-status kloppen. Vergelijk met het algoritme-logboek in Cloud Functions.
📊
Stap 6 — KPI vergelijkingTel handmatig checkouts en checkins voor een zone. Vergelijk met wat het dashboard toont. Marge van ±0 is het doel.
🔴
Stap 7 — Offline simulerenZet één mat uit. Na 60 seconden moet de dashboard-waarschuwing verschijnen. Zo weet je dat de heartbeat-detectie werkt.
🔐
Stap 8 — Auth per rol testenLog in als master, client en visitor. Controleer per rol dat je alleen de juiste data ziet en niets van andere klanten.
Dit zijn de concrete GraphQL-queries die het dashboard stelt aan de backend. Elke pagina heeft zijn eigen query.
Events laden
Transacties
KPI / Home
Heartbeat (WS)