NexaWebStudio
RUDiscuss a project

skladER — cross-dock warehouse system

Web CRM for the office and an Android app for warehouse staff: receiving, pallets, shipping and AI invoice recognition

Category
Warehouse · Web + Android
Platforms
Web · Android
Core stack
NestJS 11 · PostgreSQL 17 · TypeORM
AI invoice recognition

The problem

A wholesale distributor tracked receiving and shipping in Excel and on paper. The system became the single source of truth for deliveries, pallets and shipments: goods are received on a phone, sorted by destination and loaded by scanning.

What we built

  1. Mobile receiving: camera barcode scanning, counts in boxes or units, damage, shortage and surplus with photos, discrepancy report as PDF
  2. Invoice recognition from photos (Russian TORG-12/UPD forms): AI drafts the delivery, matches the supplier by tax ID and creates products; the office just reviews
  3. Allocation matrix (item × destination) with conflict highlighting
  4. Pallet building with server-side destination checks, scan-to-load shipping, manifests and packing lists
  5. PDF labels for pallets and products (thermal and A4 sheets), Excel exports
  6. Roles and permissions, audit log, office notifications, the CRM embedded in the app with one-tap sign-in

Engineering

Offline-safe queue: retries never double-count

  • Offline-tolerant operation queue on the phone: each operation carries a UUID, retries are never double-counted, and stock changes are applied as increments inside row-locked transactions
  • Self-learning product matching: confirmed invoice-line mappings are remembered; the LLM model and a monthly spend cap are configurable in the CRM
  • NestJS 11
  • PostgreSQL 17
  • TypeORM
  • Next.js 16
  • shadcn/ui
  • TanStack Query
  • Expo / React Native
  • zod
  • MinIO (S3)
  • pg-boss
Next case An SEO-first OEM parts catalog