ScanPick Documentation
Warehouse wave-picking system — .NET 10 API, React 19 dashboard, Expo/RN mobile scanner.
ScanPick is a warehouse wave-picking system designed for small-to-medium warehouses that want to digitize their picking operations without a multi-year ERP migration.
What is Wave Picking?
Section titled “What is Wave Picking?”Wave picking groups multiple customer orders into a single wave that a worker picks in one run. Instead of walking the warehouse for each individual order, the worker picks all items for all orders in the wave at once, then items are sorted and packed by order at a downstream station.
Key Features
Section titled “Key Features”- Wave management — Create, assign, and track picking waves through their lifecycle
- Consolidated pick tasks — Items are grouped by product across all orders in a wave
- Optimized pick paths — Alphanumeric aisle/rack/shelf sort minimizes walking distance
- Real-time updates — SignalR pushes progress from mobile scanner to the web dashboard instantly
- Offline resilience — Scans queue locally when connectivity drops, drain automatically on reconnect
- PIN-based auth — Simple worker authentication for warehouse-floor ergonomics
Architecture at a Glance
Section titled “Architecture at a Glance”┌─────────────────┐ ┌──────────────────┐│ Mobile (Expo) │ │ Web Dashboard ││ RN 0.83 │ │ React 19 + Vite ││ Scan & pick │ │ Wave management │└────────┬────────┘ └────────┬─────────┘ │ │ └──────────┬────────────┘ │ HTTP REST + SignalR ▼┌──────────────────────────────────────┐│ ScanPick.Api (.NET 10, Minimal API)││ ┌───────────┐ ┌──────────┐ ││ │ Endpoints │ │ SignalR │ ││ │ (/api/*) │ │ (/pickhub)│ ││ └─────┬─────┘ └────┬─────┘ ││ │ │ ││ ┌─────┴─────────────┴──────┐ ││ │ DI Services │ ││ └───────────┬──────────────┘ │└──────────────┼───────────────────────┘ │ EF Core ▼┌────────────────────────┐│ PostgreSQL 16 │└────────────────────────┘Tech Stack
Section titled “Tech Stack”| Layer | Technology |
|---|---|
| Backend | .NET 10, EF Core 10, Npgsql 10, SignalR |
| Web Dashboard | React 19, Vite, Tailwind CSS v4, TypeScript |
| Mobile Scanner | Expo SDK 55 (React Native 0.83), TypeScript |
| Database | PostgreSQL 16 |
| Authentication | PIN-based JWT (24-48h, no refresh tokens v1) |
| Testing | xUnit, WebApplicationFactory |
Deployment Options
Section titled “Deployment Options”ScanPick supports two deployment models:
- Single binary — Self-contained executable with embedded web dashboard (Linux/macOS/Windows)
- Docker Compose — Full stack with PostgreSQL, API, and nginx reverse proxy
No cloud dependency. No phone-home telemetry. Your data stays on your network.