Anyesh/wardrowbe

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

wardrowbe – 自己ホスト型AI搭載のワードローブマネージャー

何であるか – 衣服の写真を撮影し、検索可能なカタログに保存するフルスタックWebアプリケーション。マルチモーダルLLM(OpenAI、Ollama、LocalAIなど経由)を使用して各アイテムにタグを付けて、天気やイベントに応じた毎日の服装提案を生成。すべてのデータは自宅のハードウェア上に保管。AI機能はローカル(Ollama)で実行可能、またはOpenAI互換サービス経由でも利用可能。


コア機能(READMEに記載)

  • 画像ベースのカタログ – 写真をアップロード。AIが色、柄、スタイルを抽出し、オプションで背景を除去。
  • スマートな服装提案 – マルチモーダルLLMが天気(Open-Meteo)とユーザー定義のイベントを考慮して、何を着るべきかを提案。
  • スケジュール通知 – 日次提案はntfy、Mattermost、またはメールで配信可能。
  • 家族アカウント – 複数の家族メンバー用に個別のワードローブを管理。
  • 着用履歴とフィードバック – 何を着たかを記録し、服装の評価やコメントを残せる。
  • 分析ダッシュボード – 色の分布、最も頻繁に着るアイテム、使われないアイテムなどを可視化。
  • 完全自己ホスト – Docker Compose(またはKubernetes)によるデプロイ。SaaSへの縛りなし。
  • AI非依存 – OpenAI互換API(Ollama(無料、ローカル)、OpenAI、LocalAI、またはその他のホスティングモデル)と連携可能。
  • 国際化UInext-intl を使用して8言語に翻訳済み。

動作方法(READMEのアーキテクチャ)

Frontend (Next.js 14 + React Query)  <--->  Backend (FastAPI + async SQLAlchemy)
        │                                 │
        │   PostgreSQL (ワードローブデータ)    │   Redis (ジョブキュー)
        │                                 │
        └───► Background worker (arq) ──► AI service (Ollama/OpenAI/etc.)
  1. アップロード – フロントエンドが画像をFastAPIバックエンドに送信。
  2. バックグラウンドジョブarqワーカーがリクエストを取得し、設定されたビジョンモデル(例:Ollama経由のgemma3)を呼び出してタグを抽出し、背景除去もオプションで実行。
  3. 保存 – タグとメタデータはPostgreSQLに保存。画像(またはトリムされたバージョン)はホストボリュームに保存。
  4. 提案エンジン – スケジュールされたジョブ(またはオンデマンドリクエスト)が、現在の天気(Open-Meteo)とユーザーの好みをもとにテキストモデル(同じか異なる)を呼び出し、自然言語による服装提案を返す。
  5. 配信 – 提案は選択された通知チャネル(ntfy、Mattermost、メールなど)を通じてユーザーに届く。

技術スタック(明示的に記載)

レイヤー 技術
フロントエンド Next.js 14, TypeScript, Tailwind CSS, shadcn/ui, TanStack Query
バックエンド FastAPI, async SQLAlchemy, Pydantic, Python 3.11
データベース PostgreSQL 15
キャッシュ / キュー Redis 7(arqワーカーで使用)
バックグラウンドジョブ arq(非同期ジョブキュー)
認証 NextAuth.js(開発用資格情報またはOIDC)
AI統合 任意のOpenAI互換API(Ollama、OpenAI、LocalAIなど)
コンテナ化 Docker Compose(マルチアーキテクチャイメージ) – オプションでKubernetesマニフェスト

クイックスタート(導入手順)

  1. Docker + Composeのインストール と、ローカルLLMが必要な場合は Ollamaのインストール および gemma3(または他のマルチモーダルモデル)のプル。
  2. リポジトリのクローン.env.example.env のコピー。
  3. .env を編集し、AIサービス(Ollama URLまたはOpenAIキー)を指定し、シークレット(SECRET_KEYNEXTAUTH_SECRET)を設定。
  4. プロダクション用のcomposeファイルを実行:
    docker compose pull
    docker compose up -d
    docker compose exec backend alembic upgrade head   # マイグレーション
    
  5. UIは http://localhost:3000、APIドキュメントは http://localhost:8000/docs でアクセス可能。

開発用には -f docker-compose.dev.yml を追加し、ホットリロードを有効化。フロントエンドは npm run dev でローカル実行可能。


一般的な利用シーン

  • 個人のワードローブデジタル化 – 一度だけ衣類をスキャンし、AIが自動的にタグ付け。
  • 毎日の服装計画 – 毎朝天気に応じた提案を受け取る。
  • 家族共有 – 配偶者や子供の個別のクローゼットを、1つの自己ホストインスタンスで管理。
  • データ駆動型整理 – 分析ビューを使って、使わない色やアイテムを把握。

制限事項と考慮点

  • AIの品質はモデルに依存 – 無料のローカルモデル(例:gemma3)はOpenAIのビジョンモデルほど正確ではない可能性がある。
  • ハードウェア要件 – 最低4GB RAM。より大きなマルチモーダルモデルはより多くのメモリを必要とする。
  • 背景除去はオプションrembgまたは外部HTTPサービスが必要。なければボタンは501エラーを返す。
  • 位置情報のフォールバックのプライバシーNEXT_PUBLIC_ENABLE_IP_LOCATION_FALLBACK を有効にすると、ユーザーのIPが第三者サービスに送信される。
  • モバイルアプリ未対応 – READMEにはPlayストアへのリリース予定と記載。現時点ではWebのみ対応。

どの人にとって役立つか

  • プライバシーを最優先したいテック好きな個人。
  • クラウドサービスに依存せずに共有ワードローブマネージャーを探している小規模な家族。
  • AI強化型の個人アシスタントツールを開発したい開発者で、ビジョン+テキスト統合の実例が必要な人。

結論wardrowbe は、現代的なWebスタックとマルチモーダルLLMを組み合わせ、ワードローブの整理と服装提案を自動化する本格的な自己ホストアプリケーションです。完全にドキュメント化され、コンテナ化されており、任意のOpenAI互換バックエンドで動作可能。AI強化型の個人生産性ツールの優れた例です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch