Jaloliddin Musayev
Back to projects
In production2025 — 2026Logistics & distribution

Warehouse Management System (WMS)

The full warehouse cycle from receiving to dispatch for a large FMCG distributor — four client apps and live sync with an external ERP.

1 295
commits
820
source files
4
client apps
3
languages

Problem

The warehouse ran on paper sheets and Excel. Stock was never visible in real time, near-expiry goods mixed freely with the rest, and a picking error only surfaced once a customer complained. Orders from the company's ERP were re-keyed into the warehouse by hand — a permanent source of delay and mismatch.

Solution

I pulled the whole chain — receiving to dispatch — into one system. Goods are received with a lot and an expiry date, picking proposes the earliest-expiring lot automatically under FEFO, and the picker scans barcodes in an app on their own phone. Exchange with the company's ERP runs in a separate worker process: orders, products and stock sync on their own, and failures retry instead of vanishing.

Key capabilities

  • FEFO: the earliest-expiring lot is selected automatically, and expired goods are blocked at receiving
  • Wave picking — orders are grouped into waves and the route through the warehouse is shortened
  • Offline queue: the mobile app keeps working when the connection drops, then replays actions in order
  • One-profile-one-device session control, plus an audit log entry for every action
  • Roles — administrator, controller and picker — each with its own interface and permissions
  • Two-way integration with an external ERP: orders, products and stock synced by a background worker
  • Four clients: a React PWA admin, a React Native Android app, a Capacitor PWA and a Tauri desktop build
  • FCM push notifications and a trilingual interface (Uzbek, Russian, English)
  • Load-tested with Locust under the conditions of a real warehouse shift

Architecture

A single FastAPI service backs four clients. Exchange with the external ERP runs in a worker separate from the API, so the warehouse keeps moving even when the integration slows down.

Clients

Scanner, offline queue, push

React PWA adminReact Native (Android)Capacitor PWATauri desktop

API layer

REST, session control

FastAPIJWT auth + RBACAudit logi18n

Domain services

ReceivingFEFO allocationWave pickingStock & inventory

Data & background

Queue, retries, crash recovery

PostgreSQLAlembic migrationsERP sync worker

Stack

Backend

PythonFastAPISQLAlchemyAlembicPostgreSQLPydanticJWT

Web

React 19TypeScriptVite 7Tailwind CSSReact Router 7i18next

Mobile

React NativeVision CameraCapacitorML Kit / ZXingTauriFCM

Infrastructure

nginxsystemdBackground workerLocust

My role

Sole developer: architecture, backend, web admin, mobile apps, ERP integration, server deployment and load testing.

Client names, domains and server addresses are withheld for confidentiality.