Context

BR Logística is a WMS in production for a warehouse (institutional goods). Inventory is not edited by hand: stock moves through documents, by lot and expiry, so the first product out is the one that expires first.

Frontend

A React + TypeScript SPA on Cloudflare with TanStack Query. An internal operations panel, not an e-commerce site:

  • Inventory: read-only stock. Global view and by lot, with SKU, expiry and quantity in cases + units.
  • Picking: inventory exits as DRAFT → CONFIRMED documents (they can also be voided).
  • Receiving, returns and adjustments: the rest of the movements use the same document model.
  • Product, supplier and customer masters, plus reports and sales by SKU.
  • Role-restricted access.

Backend

Java + Spring Boot API on Railway with PostgreSQL. The hard rule is FEFO: confirming a pick allocates lots by expiry date. Stock only changes through confirmed documents, not via a direct CRUD on on-hand quantities.

Outcome

The warehouse sees real lot-level stock and ships with traceable documents. FEFO and the DRAFT → CONFIRMED flow keep inventory and picking in sync.