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、またはその他のホスティングモデル)と連携可能。
- 国際化UI –
next-intlを使用して8言語に翻訳済み。
動作方法(READMEのアーキテクチャ)
Frontend (Next.js 14 + React Query) <---> Backend (FastAPI + async SQLAlchemy)
│ │
│ PostgreSQL (ワードローブデータ) │ Redis (ジョブキュー)
│ │
└───► Background worker (arq) ──► AI service (Ollama/OpenAI/etc.)
- アップロード – フロントエンドが画像をFastAPIバックエンドに送信。
- バックグラウンドジョブ –
arqワーカーがリクエストを取得し、設定されたビジョンモデル(例:Ollama経由のgemma3)を呼び出してタグを抽出し、背景除去もオプションで実行。 - 保存 – タグとメタデータはPostgreSQLに保存。画像(またはトリムされたバージョン)はホストボリュームに保存。
- 提案エンジン – スケジュールされたジョブ(またはオンデマンドリクエスト)が、現在の天気(Open-Meteo)とユーザーの好みをもとにテキストモデル(同じか異なる)を呼び出し、自然言語による服装提案を返す。
- 配信 – 提案は選択された通知チャネル(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マニフェスト |
クイックスタート(導入手順)
- Docker + Composeのインストール と、ローカルLLMが必要な場合は Ollamaのインストール および
gemma3(または他のマルチモーダルモデル)のプル。 - リポジトリのクローン と
.env.example→.envのコピー。 .envを編集し、AIサービス(Ollama URLまたはOpenAIキー)を指定し、シークレット(SECRET_KEY、NEXTAUTH_SECRET)を設定。- プロダクション用のcomposeファイルを実行:
docker compose pull docker compose up -d docker compose exec backend alembic upgrade head # マイグレーション - 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