Map · you are at Projects

Record 009/0172026

DripOrSkip

An AI outfit checker and digital closet. Upload a look, get a Drip or Skip verdict with fix-it suggestions, and see daily outfits matched to your weather and style.

SpecSheet 009

Role
Sole developer
Year
2026
Language
TypeScript
Platform
Cross-platform
Stack
  • Next.js
  • React Native
  • NestJS
  • TypeScript
  • Supabase
  • pgvector
  • OpenRouter
  • Tailwind CSS
DripOrSkip app screenshot on iOS
DripOrSkip app screenshot on iOS

The problem

Deciding what to wear is a daily decision, and generic style advice ignores what is actually in your closet.

DripOrSkip rates a photo of your outfit, explains the verdict, and suggests fixes using the clothes you own, the weather and your style preferences.

The system

11 components · 13 connections · 2 request flows

A mobile app, a web app and a NestJS API share one Supabase backend. A vision model rates outfits, embeddings keep the digital closet free of duplicates, and weather, background removal, billing and push reminders plug in around them.

System mapHigh-level view

100%

Play a request

  • Client
  • Service
  • Model / AI
  • Data store
  • External service
  • Worker
  • Data / control flow
  • The request
  • Collapsed — open for detail

Select a component to see its role, the technology behind it and what it talks to — or play a request and watch it travel the system.

Start at

Arrow keys move between components, Home and End jump to the first and last. Enter or Space selects one; Escape clears. Plus and minus zoom, 0 fits the map.

Component reference11 components · 2 flows · as text

Components · in request order

Client · layer 01Mobile app
The React Native app: outfit checks, the digital closet and daily suggestions.
TechReact Native, TypeScript
ToAPI server (HTTPS + Supabase JWT)
Client · layer 01Web app
The Next.js app with the same closet and outfit-check flows, plus an admin area and a blog.
TechNext.js 14, Tailwind CSS, Radix UI
ToWeb API routes
Service · layer 02API server
Validates the Supabase JWT, loads the user's preferences and history, and runs outfit analysis, profiles, wardrobe and subscriptions for the apps.
TechNestJS, TypeScript
FromMobile app (HTTPS + Supabase JWT)
ToOutfit analysis (outfit photo + context); Wardrobe embeddings (closet items); Supabase (profiles, checks, closet); Billing (subscription webhook)
Service · layer 02Web API routes
Next.js route handlers for outfit analysis, outfit suggestions, weekly lookbooks, checkout and webhooks.
TechNext.js route handlers
FromWeb app
ToOutfit analysis (outfit photo + context); Supabase; OpenWeather (forecast); Background removal (cut-outs); Billing (checkout + webhook); Push reminders (daily-reminder route)
Model / AI · layer 03Wardrobe embeddings
Embeds closet items so near-duplicates such as Black T-Shirt and Black Tee can be detected semantically.
Techtext-embedding-3-small
FromAPI server (closet items)
ToSupabase (vector search)
Model / AI · layer 03Outfit analysis
A vision-capable model rates a photo as Drip or Skip and returns feedback and fix-it suggestions.
TechGPT-4o mini, OpenRouter
FromAPI server (outfit photo + context); Web API routes (outfit photo + context)
Data store · layer 04Supabase
Postgres, auth and storage for profiles, closet items, outfit checks and wear history. pgvector backs the similarity search.
TechPostgreSQL, pgvector, Supabase Auth
FromAPI server (profiles, checks, closet); Web API routes; Wardrobe embeddings (vector search)
External service · layer 04OpenWeather
Real-time and forecast weather for daily and 7-day outfit suggestions.
TechOpenWeather API
FromWeb API routes (forecast)
External service · layer 04Background removal
Turns uploaded clothing photos into transparent cut-outs for a clean closet.
TechRemove.bg API
FromWeb API routes (cut-outs)
External service · layer 04Billing
Stripe handles web checkout and webhooks; RevenueCat webhooks keep mobile subscriptions in sync with the API.
TechStripe, RevenueCat
FromWeb API routes (checkout + webhook); API server (subscription webhook)
Worker · layer 04Push reminders
A daily scheduled job sends personalised reminders to subscribed devices.
TechWeb Push, Vercel Cron
FromWeb API routes (daily-reminder route)

Request flows

  1. Outfit check (mobile)

    The API loads the user's preferences and history from Supabase, asks the model for a verdict, and stores the result on the outfit check.

    1. Step 1: Mobile app
    2. Step 2: API server
    3. Step 3: Outfit analysis
  2. Add a closet item

    A clothing photo has its background removed before the item is saved to the closet.

    1. Step 1: Web app
    2. Step 2: Web API routes
    3. Step 3: Background removal

Decisions & trade-offs

4 decisions

  1. One backend, two clients

    The mobile app talks to a NestJS API, while the Next.js web app uses its own route handlers. Both sit on the same Supabase project, so a closet and its history are the same everywhere.

  2. Deduplicate the closet with embeddings

    Wardrobe items are embedded and compared with pgvector, so near-duplicates are caught by meaning rather than exact names.

  3. Personalise every verdict

    The prompt is built from the user's style personas, body type, fit and colour preferences and recent history, and the tone of the response is configurable.

  4. Gate usage by plan

    The free tier allows a few outfit checks a day; Pro removes the limit. Stripe handles web checkout and RevenueCat webhooks keep mobile subscriptions in sync.

The write-up

What it does

  • Outfit checks. Upload a photo and get a Drip or Skip verdict with specific suggestions to improve the look.

  • A digital closet. Upload and crop clothing items; backgrounds are removed automatically so the closet stays clean.

  • Daily suggestions. A "your outfit today" card and a 7-day lookbook, matched to the weather and the occasion.

  • Personalisation. An onboarding wizard captures style, body type, fit and colours, and the app tracks streaks, milestones and a Drip ratio.

  • Signature combinations. Save reliable four-item outfits and log wears with one tap.

  • Reminders. A push notification system with scheduled reminders, including nudges to wear forgotten items.

How it works

A photo goes to the API, which loads the user's preferences and history, asks a vision model for a verdict, and stores the result against the outfit check. Closet uploads pass through background removal before they are saved, and embeddings keep the closet free of near-duplicate items.

Under the hood

  • Next.js 14 web app and a React Native mobile app

  • NestJS API with Supabase JWT validation, retries with exponential backoff and request throttling

  • Supabase for Postgres, auth and storage, with pgvector for similarity search

  • GPT-4o mini through OpenRouter for analysis; OpenWeather and Remove.bg for context and cut-outs

  • Stripe on the web and RevenueCat webhooks for mobile subscriptions

  • Web Push and a daily Vercel Cron job for reminders

esc
↑↓ move ↵ open ⌘↵ new tab esc close37 indexed

rk@request · simulated terminal