Skip to content
cd ../projects

/03

Sad Lifting Club

Sad Lifting Club is a premium fitness apparel brand built around the tagline 'Raise the bar, even when you're low.' I designed and built the full e-commerce experience: a Next.js storefront connected to Shopify's Storefront API, a Supabase-backed customer and order database, and a Constant Contact email marketing integration.

Next.jsShopifySupabaseTypeScriptTailwind CSSLive site
Role
Solo engineer
Timeline
2026
Status
In production
Sad Lifting Club screenshot

Overview

Sad Lifting Club is a premium gym and loungewear brand with a distinct emotional identity. I built the end-to-end e-commerce platform: product browsing, a custom cart experience, Shopify-hosted checkout, post-purchase data sync, and email marketing automation.

Problem

The client needed a storefront that could launch in two phases — first as a waitlist landing page to build an audience before launch, then flip to a full live store without a separate codebase or complex migration.

Approach

I architected a phase-toggle system driven by a single environment variable. Phase 1 renders a waitlist hero with an email capture form; Phase 2 switches to the full product grid and cart. The same codebase handles both, and switching phases is a one-variable Vercel env update.

Solution

The storefront uses Next.js 16 (App Router) with the Shopify Storefront GraphQL API for products and checkout. A custom cart drawer handles the full add/update/remove flow with Shopify's Cart API, storing the cart ID in an httpOnly cookie. Shopify webhooks sync customers and orders to Supabase in real time. Constant Contact handles email marketing for both the waitlist and customer lists. All Shopify credentials stay server-side; the checkout itself hands off to Shopify's hosted checkout URL.

Results

A clean, brand-consistent storefront that launched on schedule. The phase system meant the client could start building an email list months before inventory was ready, then flip to selling with a single config change.

Outcomes

  • Phase-toggle system (env var) switches between waitlist and live storefront with zero redeploy
  • Custom cart drawer backed by Shopify Cart API with httpOnly cookie session
  • Webhook pipeline syncing Shopify orders and customers to Supabase in real time
  • Email validation with MX record and disposable domain checks before waitlist signup

Next project

Inzodesk