Skip to content

lordbuffcloud/ck42x-wardrober

Repository files navigation

Wardrober

Wardrober is a self-hosted virtual wardrobe app for cataloging clothing from photos, tracking where items live, and generating outfit combinations using color theory, layer rules, and weather/style preferences.

This is the public CK42X release of the app currently used in the lab. It intentionally ships with no wardrobe photos, no local database, and no private deployment links.

Features

  • Mobile-friendly clothing photo upload
  • AI clothing analysis with OpenAI vision models
  • Local SQLite catalog through Drizzle ORM
  • Storage-location labels for physical organization
  • Color, pattern, style, layer, and weather metadata
  • Outfit generation with color harmony, layer matching, and availability rules
  • Local-first data model: uploaded images and db/local.db stay on your machine and are gitignored

Tech Stack

  • Next.js 15 App Router
  • React 19 + TypeScript
  • Tailwind CSS
  • Drizzle ORM + SQLite (better-sqlite3)
  • OpenAI vision API for clothing analysis

Quick Start

npm install
cp .env.example .env.local
# edit .env.local and set OPENAI_API_KEY
npm run db:push
npm run dev

Open http://localhost:3000.

Environment

OPENAI_API_KEY=your_openai_api_key_here

The app uses the key server-side only in app/actions/upload-clothing.ts.

Usage

  1. Go to Add Clothing Item.
  2. Upload or capture a clothing photo.
  3. Add a storage location such as Main Closet or Dresser.
  4. Wardrober analyzes the item and stores category, layer, color, style, pattern, and weather suitability.
  5. Use View Wardrobe to browse items and mark availability.
  6. Use Generate Outfits to build combinations from available items.

Data and Privacy

Wardrober is designed for self-hosting. By default:

  • SQLite data is stored at db/local.db.
  • Uploaded images are stored under public/uploads/.
  • Both are ignored by git.
  • This public repository contains only source code and an empty public/uploads/.gitkeep placeholder.

Do not deploy a personal instance publicly unless you understand that files under public/uploads/ are served by the web app.

Scripts

npm run dev       # start development server
npm run build     # build for production
npm run start     # start production server
npm run lint      # run Next/ESLint command configured by the app
npm run db:push   # create/update local SQLite schema
npm run db:studio # open Drizzle Studio

Project Structure

app/              Next.js pages and server actions
db/               Drizzle SQLite schema and connection
lib/              outfit generation and color theory logic
public/uploads/   local uploaded clothing photos (gitignored)

Notes

  • npm run db:push creates the local SQLite file before using wardrobe/outfit pages.
  • If you change the upload path, keep personal photos out of version control.
  • The live private lab deployment includes personal wardrobe data that is not part of this public release.

License

MIT

About

Self-hosted virtual wardrobe and AI outfit generator from CK42X

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors