Test Lab Setup
How to set up a small-scale test environment to exercise all warehouse flows end to end.
Hardware
- Scanner - Chainway C6000 (or any Android device with Expo Go for dev testing)
- Label printer - Zebra ZD421 or similar (optional -- you can print barcodes on paper)
- Barcode labels - item UPCs, bin barcodes, PO/SO barcodes
Network
- All devices on the same local network (WiFi)
- API server running on a machine with a known IP address
- Mobile app connects to
http://<server-ip>:5000
Getting Started
1. Start Fresh
This resets the database and loads demo data (20 items, 16 bins, 5 POs, 20 SOs).
2. Get the Admin Password
3. Log In to Admin Panel
Open http://<server-ip>:3000 in a browser. Log in with username admin and the password from the logs.
4. Install the Mobile App
Either sideload the APK via adb install or use Expo Go for development:
On first launch, enter the server URL (http://<server-ip>:5000) and log in.
Test Flow Walkthrough
Step 1: Receive a Purchase Order
- In the admin panel, go to Settings and create a PO (or use one of the 5 demo POs)
- On the mobile app, tap RECEIVE
- Scan the PO barcode (or type the PO number)
- The PO loads with expected line items
- Scan each item barcode to receive it -- quantity increments per scan in Turbo mode
- Select a staging bin if prompted
- Submit the receipt
Verify in the admin panel: PO status updates to PARTIAL or RECEIVED.
Step 2: Put Away Items
- On mobile, tap PUT-AWAY
- The pending items list shows everything in staging bins
- Tap an item or scan its barcode
- The app suggests a preferred bin (or default bin)
- Scan the destination bin barcode to confirm
- Enter quantity and confirm
Verify: item moves from staging to the storage bin in the Inventory page.
Step 3: Create a Sales Order
- In the admin panel, go to Settings and create an SO with line items
- Or use one of the 20 demo SOs
Step 4: Pick Walk
- On mobile, tap PICK
- Scan SO barcodes to add orders to the wave (the app validates each one)
- Tap "Create Batch" to start the pick walk
- The app shows the first pick task with bin location, item, and quantity
- Walk to the bin, scan the item barcode to confirm
- Continue until all tasks are complete
- Submit the batch
Verify: SO status changes to PICKED.
Step 5: Pack Verification
- On mobile, tap PACK
- Scan the SO barcode to load the order
- Scan each item barcode to verify it matches the pick list
- The progress bar shows verified vs total items
- When all items are verified, tap Complete
Verify: SO status changes to PACKED.
Step 6: Ship
- On mobile, tap SHIP
- Scan the SO barcode
- Select a carrier and enter a tracking number
- Tap Ship
Verify: SO status changes to SHIPPED. Fulfillment records appear in the admin panel.
Step 7: Cycle Count
- In the admin panel, go to Cycle Counts and create a count for one or more bins
- On mobile, tap COUNT
- Scan the bin barcode to load the count
- Enter the physical quantity for each item
- Submit the count
- If variances exist, approve or reject adjustments in the admin panel under Cycle Count Approvals
Step 8: Transfer
- On mobile, tap TRANSFER
- Scan the item barcode
- Scan the source bin (FROM)
- Scan the destination bin (TO)
- Enter quantity and confirm
Demo Seed Data
The default seed (db/seed-apartment-lab.sql) includes:
- 1 warehouse (APT-LAB) with 6 zones and 16 bins
- 20 items (fly fishing catalog, TST-001 through TST-020)
- 5 purchase orders with varying line counts
- 20 sales orders covering single-item, multi-item, contention, and edge cases
- Inventory pre-loaded in storage bins
Set SKIP_SEED=true to start with an empty warehouse and only the admin user.
Resetting
To wipe everything and start over:
The -v flag removes the PostgreSQL data volume. A fresh seed runs automatically on next startup.