Chapter Threads
Chapter Threads
Marketing site, Stripe storefront, admin CMS, and an interactive pricing studio for a custom-apparel business, built as one app and running in production.
The problem
Chapter Threads is a custom apparel and garment-manufacturing brand. It needed a marketing site, a storefront, order management, and quoting against real manufacturing costs, without paying for a separate SaaS product for each piece. Because the business runs private drops for clients, the storefront also had to support gated collections rather than a fully public catalog.
The build
A unified full-stack application serving the whole business: public marketing pages (home, lookbook, projects, inquire), a shop with cart and Stripe checkout, and an admin panel with a CMS for editing the marketing content. One codebase, one deploy, live at chapter-threads.com.
Highlights:
- Collection-gated storefront: private drops unlock via collection codes, so client-specific product lines stay off the public site.
- Stripe checkout end to end: payment intents, a raw-body webhook pipeline for order confirmation, and order records in MongoDB.
- Admin CMS: editable home-page sections with seeded defaults, so marketing content changes without a deploy (an idempotent seed runs on every deploy).
- Pricing studio: an interactive quote configurator built from real manufacturing cost sheets, with line-by-line garment pricing and PDF export, plus a tech-pack generator that turns a garment spec into a document ready to send to the manufacturer.
- Brand design system: palette, type, mascot and logo suite, and UI kit, shipped as a reusable package so the site, decks, and product all stay on brand.
How it works
React 19 + Vite on the front end with Zustand for state; Express 5 and MongoDB on the
back end with JWT-authenticated admin routes; Cloudinary for image delivery; helmet,
CORS, and rate limiting on the API surface. Stripe webhooks mount before the JSON body
parser so signatures verify against the raw payload. Deployed on Render with
infrastructure defined in render.yaml, and tested with Node’s built-in test runner
plus Artillery load scripts.
Outcomes
The site is live and takes real orders. The project also covered more than code: brand, design system, pricing model, and manufacturing workflow all had to come together in one system. The current unified app replaced two earlier standalone builds, which meant migrating a live business without breaking it.


