Voxen logo
← Back to Home
Case Study · Wholesale Fashion

One platform for the showroom, the warehouse and the storefront.

Replacing spreadsheets with variant-aware inventory, barcode workflows and bi-directional Shopify sync — built on Next.js + MongoDB Atlas.

Industry
Wholesale Fashion & Ecommerce
Outcome
Checkout from 45s → under 5s
Stack
Next.js · MongoDB Atlas · Shopify API
Engagement
End-to-end
01 — Client Overview

The client.

The client operates a wholesale clothing business across a physical showroom and a Shopify storefront. Before our work, every inventory decision lived in spreadsheets — sales, barcodes, stock and reporting were disconnected.

02 — Business Challenges
  • ✕Spreadsheet-based inventory management
  • ✕No barcode workflow
  • ✕Slow showroom checkout
  • ✕Recurring inventory mismatches
  • ✕No centralized reporting
  • ✕No unified dashboard
  • ✕No real-time synchronisation
03 — Project Goals
  • ✓Build a single source of truth for inventory
  • ✓Make showroom checkout instant
  • ✓Sync stock, sales and products with Shopify both ways
  • ✓Give the owner real-time business insight
04 — Solution Overview

How we built it.

A full-stack web application built with Next.js, MongoDB Atlas, the Shopify Admin API, a barcode system (bwip-js + BarcodeDetector API) and an analytics dashboard. Products are variant-first; every variant gets an auto-generated SKU and barcode; sales reduce stock everywhere in real time.

05 — System Architecture

End-to-end flow.

Showroom (Scanner / Mobile Camera)
↓
Next.js App + API Routes
↓
MongoDB Atlas — Single Source of Truth
↓
Shopify Admin API (Two-Way)
↓
Online Storefront
Sales & Sync Loop
Scan Barcode
↓
Variant Lookup
↓
Negotiated Price (optional)
↓
Stock −1 in DB
↓
Shopify Inventory −1
↓
Sale Recorded → Dashboard
06 — Technical Implementation

Inside the platform.

Product Management

Variant-first model. Each variant stores size, cost price, selling price, stock — profit margin is computed automatically.

  • ◆Sizes: S / M / L
  • ◆Auto profit margin
  • ◆Variant-aware stock
Barcode System

Every variant gets a unique SKU and a CODE-128 barcode generated via bwip-js, ready to print directly from the dashboard.

  • ◆Auto SKU (e.g. SP-4500-S)
  • ◆CODE-128 generation
  • ◆Printable sheets
Scanning — Desktop & Mobile

USB scanner support on desktop, BarcodeDetector camera scanning on mobile — both open the same popup sales flow with negotiated pricing.

  • ◆Instant variant lookup
  • ◆Negotiation mode
  • ◆Real-time stock −1
Shopify Sync

Products & variants push to Shopify as drafts; order webhooks pull sales back. Stock stays consistent in both directions.

  • ◆System → Shopify: products, variants, inventory
  • ◆Shopify → System: orders, stock, sales
Dashboard Analytics

Revenue, profit, units sold and remaining inventory — plus daily revenue and profit trends.

07 — Core Features

What it does.

●Variant-level product management (size / price / stock)
●Auto-generated SKU (e.g. SP-4500-S)
●CODE-128 barcodes via bwip-js — printable
●USB-scanner desktop checkout
●Mobile camera scanning (BarcodeDetector API)
●Negotiated pricing flow
●Bi-directional Shopify sync (products, variants, stock)
●Order webhooks → automatic stock deduction
●Returns with inventory restoration (system + Shopify)
●Revenue, profit, units & inventory dashboard
●JWT auth + protected routes
08 — Technology Stack

Under the hood.

Frontend
Next.js
React
Tailwind CSS
Backend
Node.js
Next.js API Routes
Database
MongoDB Atlas
Integrations
Shopify Admin API
Shopify Webhooks
Barcode
bwip-js
BarcodeDetector API
Hosting
Vercel
09 — Business Impact

Measurable results.

−90%
Manual inventory work
45s → <5s
Checkout time
0
Inventory mismatches
Real-time
Stock visibility
10 — Scalability

Variant-first schema and stateless API routes mean new locations, users and Shopify stores can be onboarded without re-architecting.

11 — Future Roadmap
01
CSV bulk imports
02
Role-based permissions
03
Advanced analytics (cohorts, sell-through)
04
One-click product publishing
Ready to start

Got a project like this? Let's talk.

Start a Project →