AI outfit and makeup recommendations matched to your skin tone, undertone and body shape.
DripbyAI is an open-source AI personal stylist. Upload a photo (or pick your features manually) and it works out your skin tone, undertone and body shape, then recommends outfits, colors and makeup that suit you, filtered by occasion, budget and gender.
It answers the everyday styling questions people actually search for: what colors suit my skin tone, what to wear for my body shape, warm vs cool undertone. Under the hood it uses color analysis theory, a fashion guidelines rulebook and vision-language models via OpenRouter.
- Developers looking for a real-world React + TypeScript + Supabase reference app with auth, RLS, storage and full-text search.
- Builders of fashion-tech, e-commerce or recommendation systems who want a working starting point.
- Anyone curious about AI color analysis and body-shape styling.
- Skin Tones: Fair, Wheatish, Brown, and Intense Dark.
- Undertones: Warm, Cool, and Neutral color harmony matching following professional color wheel theory.
- Visual guides and diagnostic tests (Vein test, Jewelry test) to determine tone.
- Men's Body Shapes: Rectangle, Triangle, Inverted Triangle, Oval, and Trapezoid.
- Women's Body Shapes: Hourglass, Pear/Triangle, Apple/Inverted Triangle, Rectangle, Spoon, Diamond, and Oval.
- Intelligent filtering to recommend cuts and silhouettes that flatter each unique body frame based on our integrated Fashion Guidelines.
- Natural Language Querying: Search expressions like "I want to buy a green dress" or "formal navy suit".
- Synonym Expansion: Built-in dictionary expands fashion terminology (e.g.,
shirtβtop,t-shirt,blouse). - Granular Filters: Occasion (
office,party,casual,wedding), price range sliders, gender, and sorting by price or popularity.
- Unique 12-character cryptographic profile ID for each style persona.
- Multiple profile support per account (dress yourself, a friend, or a partner).
- Dual profile creation methods:
- Manual Profile Entry: Fine-grained selection of features.
- AI Photo Analysis: Upload face close-up and full-body images for automated attribute extraction.
- Save favorite items to a persistent profile-linked wishlist.
- Direct affiliate product purchase links.
- Product Catalog Management: Add, edit, activate/deactivate, and delete items.
- User Management & Analytics: Track user activity and total catalog valuation.
- Audit Logging: Immutable audit trail for all admin actions.
| Layer | Technologies |
|---|---|
| Frontend Framework | React 18 + TypeScript |
| Build & Bundler | Vite 5 with Terser optimization |
| Styling & UI | Tailwind CSS 3, Lucide Icons, Framer Motion |
| Notifications | React Hot Toast |
| Routing | React Router DOM v6 |
| Backend as a Service | Supabase |
| Database | PostgreSQL with Row Level Security (RLS) & Trigram Search (pg_trgm) |
| Authentication | Supabase Auth (Email & Password, Session management) |
| Object Storage | Supabase Storage (profile-images bucket) |
Follow these steps to connect your own free Supabase database and run the project locally.
- Node.js
>= 18.0.0(Tested on Node 18, 20, 22, 26) - npm
>= 9.0.0 - A free account at Supabase.com
# Clone repository
git clone https://github.com/projectsbynik/dripbyai.git
cd dripbyai
# Install packages
npm install- Create a new project at database.new.
- In the Supabase dashboard, navigate to the SQL Editor (left sidebar).
- Open
supabase/schema.sql, copy its entire contents, paste it into the SQL Editor, and click Run.- This creates all tables (
profiles,products,wishlists,admin_audit_logs,search_synonyms), indexes, search RPC functions, and theprofile-imagesstorage bucket with proper RLS policies.
- This creates all tables (
- (Optional but Recommended) Open
supabase/seed.sql, copy and run it in the SQL Editor.- This instantly seeds your database with fashion search synonyms and 10+ curated sample clothing items with realistic images, prices, and body shape tags.
Create your local .env file from the provided template:
cp .env.example .envOpen .env and fill in your Supabase credentials:
VITE_SUPABASE_URL=https://your-project-id.supabase.co
VITE_SUPABASE_ANON_KEY=your-supabase-anon-keyWhere to find them: In your Supabase Dashboard, go to Project Settings (gear icon) β API β Copy Project URL and
anonpublickey.
npm run devOpen http://localhost:5173 in your browser!
To access the /admin console:
- Sign up for an account in your running application at http://localhost:5173/auth.
- Head to the Supabase SQL Editor and run:
UPDATE auth.users SET is_admin = true WHERE email = 'your-email@example.com';
- Refresh your app, and an Admin link will appear in your top navigation header!
For educational experimentation, research, or real-time AI styling, you can connect an OpenRouter API key to power photo-based skin tone, undertone, and body shape extraction. You can do this in two flexible ways:
- Log in with your Admin account and go to the Admin Console (http://localhost:5173/admin).
- Scroll to the AI Styling Engine (OpenRouter API) section.
- Paste your OpenRouter API Key (obtain from openrouter.ai/keys) and specify any vision-capable model:
meta-llama/llama-3.2-11b-vision-instruct:free(Free)google/gemini-2.0-flash-exp:free(Free & fast)anthropic/claude-3.5-sonnet(High fidelity)
- Click Save AI Configuration. It is saved instantly to your browser session on the fly without needing a server restart!
You can configure global OpenRouter credentials in your .env file:
VITE_OPENROUTER_API_KEY=sk-or-v1-your-key-here
VITE_OPENROUTER_MODEL=meta-llama/llama-3.2-11b-vision-instruct:freeThe codebase in src/lib/ai.ts parses uploaded user images, queries the model with structured fashion theory criteria from Fashion Guideline.md, and extracts skin tones, undertones, and flattering silhouette cuts.
π‘ Zero Configuration Required: If no OpenRouter key is provided, DripbyAI automatically uses its built-in realistic simulation engine, allowing anyone to test and explore the full platform completely free out-of-the-box!
dripbyai/
βββ public/ # Static assets & favicon
βββ src/
β βββ components/
β β βββ layout/ # Header, Footer, Layout, PageTransition
β β βββ sections/ # Landing page sections (Hero, Features, HowItWorks)
β β βββ ui/ # Reusable UI primitives (Button, Card, Input, Alert, Badge)
β β βββ AuthForm.tsx # Sign-in & Sign-up component
β βββ context/
β β βββ AuthContext.tsx # Supabase authentication provider
β βββ lib/
β β βββ ai.ts # AI analysis triggers & simulation
β β βββ database.types.ts # Generated Supabase database TypeScript definitions
β β βββ supabase.ts # Supabase client singleton
β β βββ types.ts # Domain application interfaces
β β βββ utils.ts # Styling helpers, ID generator, constants
β βββ pages/
β β βββ admin/ # Admin pages (ManageProducts, AddEditProduct, ManageUsers, AuditLogs)
β β βββ AccountSettings.tsx # User account & password reset
β β βββ AdminConsole.tsx # Admin dashboard & metrics
β β βββ Auth.tsx # Authentication page
β β βββ CreateProfile.tsx # Manual & AI profile wizard
β β βββ Dashboard.tsx # Profile switcher & overview
β β βββ Landing.tsx # Public marketing landing page
β β βββ ProductDetail.tsx # Individual product view
β β βββ ProfileOptions.tsx # Profile action selector
β β βββ Search.tsx # Smart product search & filter engine
β βββ App.tsx # Main routes & lazy-loaded view definitions
β βββ main.tsx # React DOM entrypoint
βββ supabase/
β βββ migrations/ # Historical chronological migration scripts
β βββ schema.sql # Single all-in-one reproducible database schema
β βββ seed.sql # Sample products & search synonyms dataset
βββ .env.example # Environment variables template
βββ Fashion Guideline.md # Comprehensive styling & color theory reference
βββ package.json
βββ tailwind.config.js
βββ tsconfig.json
βββ vite.config.ts
| Script | Command | Purpose |
|---|---|---|
| Start Dev Server | npm run dev |
Runs local dev server with HMR on port 5173 |
| Typecheck | npm run typecheck |
Validates TypeScript with tsc --noEmit |
| Build | npm run build |
Compiles and minifies bundle into dist/ |
| Preview | npm run preview |
Locally serves the built production bundle |
| Format | npm run format |
Runs Prettier on all source files |
- Multimodal AI Integration: Photo-based skin tone, undertone and body shape extraction via any OpenRouter vision model (simulation fallback when no key is set).
- AI Stylist Chat: Interactive conversational styling assistant for outfit curation.
- Expanded Region Support: Currency localization and regional brand feeds.
- Virtual Wardrobe Try-On: Generative AI preview of garments onto user profile photos.
Contributions make the open-source community an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.