Werk / Logistiek, PWA

Bezorgsysteem

De orders van de dag gaan erin als spreadsheet. Eruit komen routes per zone, een telefoonapp voor chauffeurs die zonder bereik werkt en aan het eind van de dag een afrekening per zone.

Mijn deel
Ontwerp, bouw en hosting
Wanneer
April 2026 tot nu
Status
In productie, nu een module van NEXO

Het probleem

De bezorgingen van de dag kwamen als spreadsheet uit de ERP, en daar hield het systeem op. Wie welke zone reed, wat er is afgeleverd, wat er terugkwam en hoe er is betaald, moest achteraf bij elkaar gezocht worden.

Wat ik heb gebouwd

De planner uploadt de export 's ochtends. Het systeem knipt hem in zones en de planner wijst chauffeurs toe. Een chauffeur opent de app op een telefoon en ziet de stops.

Bij elke stop markeert de chauffeur afgeleverd, deels afgeleverd of geweigerd, en hoe er is betaald: contant of met een van de twee lokale betaalapps, met de QR-code op het scherm. De telefoon slaat het op en verstuurt het zodra er weer bereik is. Lima heeft straten waar dat niet is.

Aan het eind van de dag krijgt kantoor een afrekening per zone: goederen eruit, goederen terug, geld binnen. Die exporteert naar pdf en gaat daarna op slot.

Hoe het in elkaar zit

  1. MensenPlanner in de beheerapp, Chauffeurs op de PWA
  2. Op de telefoonservice worker, lokale database, outbox die later synchroniseert
  3. Applicatietwee Next.js-apps, één monorepo
  4. DataPostgres, self-hosted Supabase, rollen in het inlogtoken

Wat eruit kwam

Gemeten betekent geteld in de code of het systeem. Geschat betekent mijn eigen schatting, met de aanname ernaast.
In productie sindsapril 2026gemeten
Commits707gemeten, nov. 2026
Klanten op een bezorgdag90 tot 130gemeten, sep. tot begin okt. 2026
Zones op een bezorgdag5 tot 9gemeten, sep. tot begin okt. 2026
Planning- en afrekenwerk bespaard per weekongeveer 5 tot 9 uurgeschat, 5 tot 9 zones per dag, ongeveer 10 minuten minder per zone, 6 werkdagen

Gebouwd met

  • Next.js
  • React 19
  • TypeScript
  • Postgres
  • Supabase (self-hosted)
  • Dexie
  • Service worker
  • Leaflet
  • SheetJS
  • pnpm and Turborepo

Vertel me wat er op een gewone dinsdag misgaat.

Plan een gesprek van 30 minuten

Dertig minuten, per video of telefoon. Jij beschrijft één proces dat je tijd kost. Ik stel vragen en zeg je eerlijk of ik het zou automatiseren, eerst zou herstellen of met rust zou laten. Geen slides.

Tijd in Lima, UTC-5. Ik reageer binnen één werkdag, in het Nederlands, Engels of Spaans.

Open voor functies op afstand en voor projecten.