Mayflower

Overview
Work-order and capacity management for a designer-textile tailoring studio — job cards, garment measurements, and scheduling that respects what the shop can actually sew in a day.
Mayflower is a boutique tailoring studio that ran on paper — job cards in a drawer, measurements in notebooks, delivery dates promised on gut feel. I designed and built them a mobile-first PWA that now runs the whole shop: every order, every measurement, every deadline.
A job card holds the customer, garment items with photos, and per-garment measurement schemas — blouse, churidar, skirt — down to paired left/right fields. Orders move through the pipeline on a drag-to-reschedule weekly kanban and a month calendar that colour-codes each day's load, with WhatsApp deep-links to reach customers in one tap.
The scheduling is the interesting part: a two-track capacity engine models the studio's real constraints — stitching in pieces per day, handwork in hours per day — and projects the load live as you pick a delivery date, so the shop stops promising dates it can't hit.
Under the hood: Supabase with forced row-level security and owner/staff roles, customer photos on Cloudflare R2 behind a session-gated signing API, atomic multi-step saves through a transactional RPC, and windowed queries with server-side search so it stays fast as years of orders accumulate.
Key contributions
- 01Designed the product with the shop owner and shipped it end-to-end as a solo build
- 02Job cards with per-garment measurement schemas (paired L/R fields), photo attachments, and WhatsApp deep-links
- 03Two-track capacity engine — stitching pieces/day + handwork hours/day — projected live in the scheduling day-picker
- 04Weekly kanban with drag-to-reschedule and per-day load bars; month calendar with load heat-mapping
- 05Supabase RLS with owner/staff roles; images on Cloudflare R2 behind a session-gated presigned-URL API
- 06Atomic job-card saves via a transactional Postgres RPC; infinite scroll with server-side search



