Staff tracked transplanting with clipboards and printed Excel sheets.
Miscounts went unnoticed. Oversupply wasted thousands of plants.
What if every tray was automatically scanned and counted?
Barcodes and lasers feed real-time data to iPads at each line.
Four production lines. One source of truth. Zero guesswork.
Line 1
NOW PRODUCING: Alyssum White
scroll to explore
▿
Architecture
- Headless Raspberry Pis read USB barcode scanners and GPIO laser counters
- Node.js + Express REST API aggregates scan events from 4 production lines
- Server-Sent Events push real-time state to React iPad dashboards
- File-backed persistence with in-memory index for sub-ms query times
Before
Tray arrives
·
Tally on clipboard
·
End of shift
·
Transcribe to Excel
·
Manager reviews
·
Errors found next week
After
Tray scanned
→
Validated + recorded + iPad updated
<1s
Real-time operations
- Sub-second SSE pushes every scan and count to iPads instantly
- UI deliberately mirrors the paper spreadsheet for frictionless adoption
- One-tap ghost, adjust, and reassign — full audit trail included
- Management monitors all lines live; weekly XLSX auto-generated from in-memory index
Plugs in
Seedlings out
Oversupply
Built for the floor
- Concurrent events serialised through per-line mutex into append-only, audit-ready files
- Oversupply and unscheduled-product warnings surface issues within minutes
- Self-healing index: periodic verification rebuilds from authoritative source and auto-corrects drift
- Production never stops: bad scans, sensor faults, and network drops handled gracefully