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.)
- Upload – The frontend sends the image to the FastAPI backend.
- Background job – An
arqworker picks up the request and calls the configured vision model (e.g.,gemma3via Ollama) to extract tags and optionally remove the background. - Storage – Tags and metadata are saved in PostgreSQL; the image (or its trimmed version) is stored on the host volume.
- 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.
- 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)
- Install Docker + Compose and, if you want a local LLM, install Ollama and pull
gemma3(or another multimodal model). - Clone the repo and copy
.env.example→.env. - Edit
.envto point at your AI service (Ollama URL or OpenAI key) and set secrets (SECRET_KEY,NEXTAUTH_SECRET). - Run the production compose file:
docker compose pull docker compose up -d docker compose exec backend alembic upgrade head # migrations - Open
http://localhost:3000for the UI andhttp://localhost:8000/docsfor 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
rembgor an external HTTP service; otherwise the button returns a 501. - Privacy of location fallback – Enabling
NEXT_PUBLIC_ENABLE_IP_LOCATION_FALLBACKsends 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 line – wardrowbe 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