Skip to content
All work

stock-counting-mobile

A mobile stock-counting app for warehouse and shop-floor staff, built to keep working where the signal does not.

Role
Architecture, mobile, backend
Period
2022 — 2023
Stack
0 days
Cut from count cycle
0%
Counts captured offline
0
Source of truth
01

Problem

TODO: replace. Stock counts were captured on paper and typed into the ERP afterwards, so the numbers were stale before they were entered — and nobody could tell which of two conflicting figures was right.

TODO: Paper counts re-keyed hours later
TODO: No audit trail of who counted what
TODO: Dead zones in the warehouse with no connectivity
02

Solution

TODO: replace. A React Native app that captures counts directly against the ERP's item list, stores them locally, and syncs when a connection returns. Every count carries who, when and where.

TODO: Barcode-first capture to remove typing
TODO: Local-first storage with background sync
TODO: Variance surfaced at the point of counting
03

Architecture

TODO: replace. The app holds a local store as the working copy and treats the server as the eventual authority. A sync worker replays queued counts in order and surfaces conflicts rather than silently resolving them.

Device
React NativeLocal storeSync queue
Service
Node.js APIReconciliation
System of record
Odoo / ERPPostgreSQL
04

Challenges

Trustworthy sync

TODO: replace. Silent conflict resolution destroys trust in a counting tool. Conflicts are surfaced to a supervisor with both figures and their provenance.

Usable in gloves, in a hurry

TODO: replace. The interface had to work one-handed at speed, which ruled out most conventional form patterns.

05

Outcome

TODO: replace with the real result and verifiable figures only.