Skip to content
All projects

Multi-branch jewellery retail ERP

O2D

A multi-branch ERP that merges a second factory ERP into one backend, runs a 13+ stage order pipeline and syncs with a B2B platform.

API endpoints
170API endpoints
data models
29data models
pipeline stages
13+pipeline stages

Overview

Built a full-stack production ERP that serves multiple retail branches through a 13+ stage order-to-dispatch pipeline. A second, independently built factory ERP was merged under the same backend, with its legacy table names preserved through Prisma @map/@@map so no API contract changed, and a third external B2B platform is integrated server-to-server. After launch the system was retrofitted from single-tenant to multi-branch, with documented cross-system data-isolation rules so the merged products safely share one PostgreSQL database. Built by a 2 to 3 person team over roughly 250 commits in 3 months.

What I built

  • 170 API endpoints, 29 Prisma models and 38 migrations on the backend
  • 27 feature modules and 31 routes across roughly 173 frontend files
  • 139-file legacy React app fully migrated to the new typed frontend
  • Multi-branch retrofit after launch: branch-scoped RBAC, a SUPER_ADMIN role and 3 configurable workflow variants
  • Secret-authenticated server-to-server integration with an external B2B platform
  • Immutable audit log powering a state-reconstruction recovery tool
  • SSRF-hardened image proxy with TOCTOU-safe RBAC checks
  • Docker, Nginx and Let's Encrypt on two live domains, with GitHub Actions CI/CD to EC2