Skip to main content
Neptune Labs
← Work

Clothing and apparel retail

A clothing retailer needed to sell online without handing a permanent cut of every order to a hosted platform, and needed to price for shoppers paying in more than one currency.

Type
Client project
Region
Canada
Scope
Full stack, storefront and admin

Built with

  • Next.js
  • TypeScript
  • PostgreSQL
  • Stripe

What we built

  • Storefront catalogue with size and colour variants, each tracked as its own stock item
  • Cart and Stripe checkout
  • Multi-currency pricing, so a shopper sees and pays in their own currency
  • Admin area for order management, covering the lifecycle from placed through fulfilled
  • Inventory tracking tied to variants rather than to the parent product

Decisions worth explaining

Currency is a data problem before it is a display problem

Showing a converted price is the easy half. The hard half is that the charge, the refund, and the order record all have to agree on which currency the sale actually happened in, long after the exchange rate has moved. Storing one price and formatting it differently per visitor produces a store that reconciles incorrectly the first time someone returns an item.

The variant is the product

For apparel, a medium in black and a large in black are different things: they sell out independently and they are picked and shipped independently. Modelling stock against the parent product rather than the variant is the mistake that produces oversold orders, and it is painful to unpick once there is order history sitting on top of it.