Anyesh/wardrowbe

Put your wardrobe in rows. Self-hosted AI-powered wardrobe management app.

wardrowbe – Self‑hosted AI‑powered wardrobe manager

What it is – A full‑stack web application that lets you photograph your clothes, stores them in a searchable catalog, and uses a multimodal LLM (via OpenAI, Ollama, LocalAI, etc.) to tag each item and generate daily outfit suggestions based on weather, occasion and personal preferences. All data lives on your own hardware; the AI component can be run locally (Ollama) or through any OpenAI‑compatible service.


Core features (as listed in the README)

  • Photo‑based catalog – Upload pictures; the AI extracts colour, pattern, style, and optionally removes the background.
  • Smart outfit recommendations – Multimodal LLM suggests what to wear, taking weather (Open‑Meteo) and user‑defined occasions into account.
  • Scheduled notifications – Daily suggestions can be pushed via ntfy, Mattermost, or email.
  • Family accounts – Separate wardrobes for multiple household members.
  • Wear tracking & feedback – Log when you wear an item, rate the outfit, and give comments.
  • Analytics dashboard – Visualise colour distribution, most‑worn pieces, items that never get used, etc.
  • Fully self‑hosted – Docker‑compose (or Kubernetes) deployment; no SaaS lock‑in.
  • AI‑agnostic – Works with any OpenAI‑compatible API: Ollama (free, local), OpenAI, LocalAI, or other hosted models.
  • Internationalised UI – UI translated into eight languages via next‑intl.

How it works (architecture from the README)

Frontend (Next.js 14 + React Query)  <--->  Backend (FastAPI + async SQLAlchemy)
        │                                 │
        │   PostgreSQL (wardrobe data)    │   Redis (job queue)
        │                                 │
        └───► Background worker (arq) ──► AI service (Ollama/OpenAI/etc.)
  1. Upload – The frontend sends the image to the FastAPI backend.
  2. Background job – An arq worker picks up the request and calls the configured vision model (e.g., gemma3 via Ollama) to extract tags and optionally remove the background.
  3. Storage – Tags and metadata are saved in PostgreSQL; the image (or its trimmed version) is stored on the host volume.
  4. Recommendation engine – A scheduled job (or on‑demand request) calls the text model (same or different) with the current weather (Open‑Meteo) and user preferences, returning a natural‑language outfit suggestion.
  5. Delivery – Suggestions are sent to the user via the chosen notification channel.

Tech stack (explicitly mentioned)

Layer Technology
Frontend Next.js 14, TypeScript, Tailwind CSS, shadcn/ui, TanStack Query
Backend FastAPI, async SQLAlchemy, Pydantic, Python 3.11
Database PostgreSQL 15
Cache / Queue Redis 7 (used by arq workers)
Background jobs arq (async job queue)
Auth NextAuth.js (dev credentials or OIDC)
AI integration Any OpenAI‑compatible API (Ollama, OpenAI, LocalAI, etc.)
Containerisation Docker Compose (multi‑arch images) – optional Kubernetes manifests

Getting started (quick‑start summary)

  1. Install Docker + Compose and, if you want a local LLM, install Ollama and pull gemma3 (or another multimodal model).
  2. Clone the repo and copy .env.example.env.
  3. Edit .env to point at your AI service (Ollama URL or OpenAI key) and set secrets (SECRET_KEY, NEXTAUTH_SECRET).
  4. Run the production compose file:
    docker compose pull
    docker compose up -d
    docker compose exec backend alembic upgrade head   # migrations
    
  5. Open http://localhost:3000 for the UI and http://localhost:8000/docs for the API docs.

For development, add -f docker-compose.dev.yml to get hot‑reload and run the frontend locally with npm run dev.


Typical use cases

  • Personal wardrobe digitisation – Scan every garment once and let the AI auto‑tag it.
  • Daily outfit planning – Receive a weather‑aware suggestion each morning.
  • Family sharing – Keep separate closets for spouses, kids, etc., all under one self‑hosted instance.
  • Data‑driven decluttering – Use the analytics view to see which colours or items you never wear.

Limitations & considerations

  • AI quality depends on the model – Free local models (e.g., gemma3) may be less accurate than OpenAI’s vision models.
  • Hardware requirement – At least 4 GB RAM; larger multimodal models need more memory.
  • Background‑removal optional – Requires rembg or an external HTTP service; otherwise the button returns a 501.
  • Privacy of location fallback – Enabling NEXT_PUBLIC_ENABLE_IP_LOCATION_FALLBACK sends the user’s IP to a third‑party service.
  • No mobile app yet – The README mentions an upcoming Play Store entry; currently the UI is web‑only.

Who might find it useful

  • Tech‑savvy individuals who want a privacy‑first digital closet.
  • Small families looking for a shared wardrobe manager without relying on cloud services.
  • Developers interested in building AI‑augmented personal‑assistant tools and needing a ready‑made example of vision‑plus‑text integration.

Bottom linewardrowbe is a genuine, self‑hosted application that combines a modern web stack with multimodal LLMs to automate wardrobe organization and outfit recommendation. It is fully documented, containerised, and configurable to run with any OpenAI‑compatible backend, making it a solid example of an AI‑enhanced personal‑productivity tool.

Related

  • Project
  • Project
  • Project
  • Project
  • Dispatch