Factory Hub
Three integrated systems — a reseller portal, a Shopify bridge app, and a factory control tower — that turn a Shopify order into a tracked production job, and settle payment on delivery.
Resellers and dropshippers have a broken middle. An order lands on their store, and from that moment the details, customer information, shipping address and personalisation notes are passed to fulfilment centres manually — over phone calls and constantly-rewritten spreadsheets. No reliable way to track production, QC, packing, dispatch or payment. Nobody had closed this gap for resellers, because resellers are capital-light by definition: they resell other people's products precisely because they can't fund a complex integrated system.
Three systems, one flow. A Reseller Portal (Next.js on Vercel) where resellers connect their Shopify store and shipping partner, push orders to fulfilment centres, and track orders, revenue and wallet funds. A Shopify App (Express on Railway) that bridges the store to the portal, personalisation fields included, so orders arrive with everything the manufacturer needs. And Factory OS, the manufacturer's control tower, where fulfilment centres manage incoming orders from multiple resellers, update production status, and handle shipping — with floor workers updating each stage from a dedicated mobile app.
- Reseller Portal (Next.js)
- Shopify App bridge (Express)
- Factory OS control tower
- Floor-worker mobile app
- Shopify order webhooks
- Shiprocket shipping API
- Pre-paid wallet & settlement
- Personalisation field sets
- Fallback re-sync & validation
- Supabase data layer
One order's journey through three systems.
The reseller connects their Shopify store in the Portal and imports dropship products, along with the manufacturer's personalisation field sets.
A customer orders on the reseller's store. Shopify fires a webhook to the Shopify App with line items, personalisation, customer info and shipping address.
That data syncs into the Reseller Portal automatically. Shipping runs over the Shiprocket API; payments run through the wallet.
The reseller pushes the order to the manufacturer. The reseller's wallet is debited at that moment, and the order plus shipping details hand over to the factory.
Four tracked stages — accept, under production, QC & packed, dispatched. Floor workers update each one in real time from an in-hand mobile app.
Live status syncs straight back into the reseller's Portal, so they always see the true state of every order without asking anyone.
On successful delivery, funds settle from the reseller's debited wallet into the manufacturer's account.
The choices we made, and why.
- Next.js on Vercel
- For the Portal — a modern framework with one-click deployment straight from Git. Fast to ship, cheap to iterate.
- Express on Railway
- The Shopify App runs as its own service, separate from the Portal, because Shopify needs a live server to talk to for app events.
- OAuth
- Lets the app act on a store's behalf without the store ever sharing a password.
- Webhooks for orders, APIs for the rest
- Webhooks push order data the instant an order is placed; APIs let the system talk to Shiprocket and the wallet on demand.
- Supabase
- Free to start, simple to manage, and it scales when the volume arrives.
- Fallback sync
- If a webhook fails to arrive, the system re-syncs on an interval, with a manual sync option and validation checks. Order data doesn't silently vanish.
What it doesn't do yet.
- Shopify only for now — other store platforms aren't integrated yet.
- Shiprocket is the one shipping API currently supported.
- No SMS or WhatsApp status updates yet — planned.
- Resellers without an online store place and edit orders manually in the Portal — a deliberate choice, so the platform works before a store exists.
The backend scales horizontally, and the MVP infrastructure is deliberately lean — free and low-cost tiers while the model proves itself. Serious volume isn't just a plan upgrade: it means webhook rate-limit handling, queueing, database connection management and Shopify API throttling. The architecture is ready for that path; the MVP doesn't need it yet.