2024
B2B designer clothing wholesale platform for EU and UK trade buyers — 29-locale marketing site, trade account registration, authenticated B2B shop, cart, and checkout. Next.js 15 frontend paired with Django REST + PostgreSQL API.
Overview
That Designer Wholesale is a production B2B platform for a high-volume designer and branded clothing supplier serving retailers, boutiques, e-commerce stores, and resellers across the EU and UK.
The work spans tdw-nextjs (Next.js 15, React 19, next-intl with 29 locales) and tdwadmin — Django 5 + DRF on PostgreSQL/PostGIS, deployed at api.thatdesignerwholesale.com. Trade buyers register for accounts, browse authenticated wholesale catalogues, and place B2B orders with minimum order value rules per brand.
Public experience
The marketing site drives trade account sign-ups with a hero, featured brand grid (Nike, Adidas, Calvin Klein, Tommy Hilfiger, UGG, and more), company story, values, and stats.
Brand pages — per-brand landing routes with sample pricing, galleries, and CTAs. Who we supply content targets brick-and-mortar retailers, boutiques, e-commerce, outlets, and resellers.
News — blog posts fetched from the API by locale (/news, /news/[slug]). Contact / enquire forms on the homepage and brand pages capture trade leads with company, country, turnover, and optional newsletter opt-in.
B2B shop & checkout
Authenticated users access /shop with brand and collection filters, product detail pages, variant pricing, and an intercepting cart overlay drawer.
Cart persists server-side via Django with a yns_cart cookie tracking line count. Checkout collects billing and shipping addresses, company VAT details, and enforces a €2,000 minimum order value per brand before order submission.
Account area (/account) — dashboard, order history, order detail, and profile management. NOOS and pre-order flows gate catalogue access behind login with redirects to external catalogues where needed.
Backend API
The tdwadmin service exposes REST endpoints under /api:
- Auth —
POST /api/token/(JWT via SimpleJWT, 30-day access), register, user profile CRUD - Products — paginated catalogue, single product by slug, brand/collection filters
- Cart — add/update/remove line items with variants and attributes
- Orders — create orders from cart with billing/shipping and company VAT fields; status workflow (
PENDING,COMPLETED,CANCELLED)
Catalog models — brands (with MOV), collections, products, variants (SKU, price, sale price, stock), attributes, and images (auto-cropped to 1:1 on save). Media stored on AWS S3 (tdw-main bucket). Admin panel manages the full catalogue.
Technical notes
Frontend: TanStack React Query, Framer Motion, Embla carousels, IP-based locale detection (node-ipinfo), PostHog analytics, Sentry, Google Tag Manager conversion tracking, split sitemaps (pages, products, brands, blog), and cookie consent.
Lead capture uses Zeptomail (Nodemailer) plus optional Zoho Campaigns list subscription. No card payments in-repo — B2B orders are enquiry/submit flows suited to wholesale trade terms.