# InvenTree

## 概要

InvenTreeは、オープンソースの在庫管理システムです。強力な低レベル在庫管理と部品追跡機能を提供し、Python/Djangoベースのバックエンドと、React/Mantineベースのモダンなフロントエンドを組み合わせた構成になっています。REST APIを通じた外部アプリケーションとの連携や、プラグインシステムによるカスタム拡張をサポートします。

## 主な機能

| 機能カテゴリ | 説明 |
| --- | --- |
| 在庫管理 | 部品・資材の在庫レベル追跡、入出庫管理 |
| 部品追跡 | 部品情報のデータベース化、カテゴリ分類、パラメータ管理 |
| 発注管理 | 購入注文（PO）、販売注文（SO）、返品注文の管理 |
| BOM管理 | 部品表（Bill of Materials）の作成・管理 |
| サプライヤー管理 | 仕入先情報、価格情報の管理 |
| バーコード/QRコード | バーコード・QRコード生成とスキャン機能 |
| レポート生成 | PDFレポート・ラベル印刷機能 |
| プラグイン拡張 | カスタムプラグインによる機能拡張 |
| REST API | 外部システム連携用のフルスペックREST API |
| モバイルアプリ連携 | iOS/Android向けコンパニオンアプリ対応 |

## 技術スタック

### コア

- フレームワーク（バックエンド）: Django
- フレームワーク（フロントエンド）: React
- 言語: Python 3.11+, TypeScript
- データベース: PostgreSQL / MySQL / SQLite
- キャッシュ/メッセージブローカー: Redis
- Webサーバー: Gunicorn

### 主要ライブラリ

#### バックエンド
- Django REST Framework (DRF) - REST API構築
- Django Allauth - 認証・SSO対応
- Django Q2 - バックグラウンドタスク処理
- Django Filter - 高度なフィルタリング
- WeasyPrint - PDF生成
- Pillow - 画像処理
- Pint - 単位変換

#### フロントエンド
- Mantine - UIコンポーネントライブラリ
- TanStack Query - データフェッチング・キャッシュ
- Zustand - 状態管理
- React Router - ルーティング
- Lingui - 国際化(i18n)
- CodeMirror - コードエディタ
- Recharts - グラフ描画

### DevOps
- Docker - コンテナ化
- Vite - フロントエンドビルドツール
- Playwright - E2Eテスト
- pre-commit - コード品質管理
- Ruff / Biome - Linter / Formatter
- GitHub Actions - CI/CD

## ディレクトリ構成

```
InvenTree-master/
├── .devcontainer/           # 開発コンテナ設定
├── .devops/                 # Azure DevOps設定
├── .github/                 # GitHub Actions・Issue テンプレート
│   ├── actions/             # 再利用可能なアクション
│   ├── ISSUE_TEMPLATE/      # Issue/PRテンプレート
│   ├── scripts/             # CIスクリプト
│   └── workflows/           # CI/CDワークフロー
├── .vscode/                 # VS Code設定
├── assets/                  # プロジェクトアセット（ロゴ等）
├── config/                  # 設定ファイル
├── contrib/                 # デプロイ関連ファイル
│   ├── container/           # Dockerコンテナビルド用
│   ├── installer/           # シングルファイルインストーラ
│   └── packager.io/         # Debian/Ubuntuパッケージ用
├── docs/                    # ドキュメンテーション
│   ├── ci/                  # ドキュメントCI
│   └── docs/                # ドキュメントソース
├── src/                     # アプリケーションソース
│   ├── backend/             # バックエンドソース
│   │   ├── InvenTree/       # Djangoアプリケーション
│   │   │   ├── build/       # ビルド関連
│   │   │   ├── common/      # 共通機能
│   │   │   ├── company/     # 会社・サプライヤー管理
│   │   │   ├── importer/    # データインポート
│   │   │   ├── InvenTree/   # コア設定
│   │   │   ├── locale/      # 翻訳ファイル
│   │   │   ├── order/       # 発注管理
│   │   │   ├── part/        # 部品管理
│   │   │   ├── plugin/      # プラグインシステム
│   │   │   ├── report/      # レポート生成
│   │   │   ├── stock/       # 在庫管理
│   │   │   └── users/       # ユーザー管理
│   │   ├── requirements.in  # Python依存関係定義
│   │   └── requirements.txt # Python依存関係（ロック済み）
│   ├── frontend/            # フロントエンドソース
│   │   ├── src/             # Reactソースコード
│   │   ├── tests/           # Playwrightテスト
│   │   ├── package.json     # npm依存関係
│   │   └── vite.config.ts   # Viteビルド設定
│   └── performance/         # パフォーマンステスト
├── .pre-commit-config.yaml  # pre-commit設定
├── pyproject.toml           # Python プロジェクト設定
├── tasks.py                 # invokeタスク定義
├── LICENSE                  # MITライセンス
└── README.md                # プロジェクト概要
```

## セットアップ

### 必要条件

- Python 3.11以上
- Node.js (フロントエンドビルド用)
- PostgreSQL / MySQL / SQLite (データベース)
- Redis (オプション、バックグラウンドタスク用)

### インストール方法

#### ワンラインインストール（Linux）

```bash
wget -qO install.sh https://get.inventree.org && bash install.sh
```

#### Docker（推奨）

Dockerを使用したデプロイメントが最も簡単です。詳細は[Dockerドキュメント](https://docs.inventree.org/en/latest/start/docker/)を参照してください。

#### 手動インストール（開発環境）

1. リポジトリをクローン
```bash
git clone https://github.com/inventree/InvenTree.git
cd InvenTree
```

2. Python仮想環境を作成・有効化
```bash
python -m venv venv
source venv/bin/activate  # Linux/Mac
```

3. バックエンド依存関係をインストール
```bash
pip install -r src/backend/requirements.txt
```

4. フロントエンド依存関係をインストール
```bash
cd src/frontend
yarn install
```

5. データベースマイグレーション
```bash
invoke migrate
```

6. 開発サーバー起動
```bash
invoke server
```

## 開発

### Invokeタスク

開発用のタスクは`invoke`コマンドで実行します。

```bash
# 利用可能なタスク一覧
invoke --list

# サーバー起動
invoke server

# マイグレーション実行
invoke migrate

# テスト実行
invoke test
```

### Linter / Formatter

バックエンド（Python）:
```bash
# Ruffによるコードチェック
ruff check src/backend/InvenTree

# Ruffによる自動フォーマット
ruff format src/backend/InvenTree
```

フロントエンド（TypeScript）:
```bash
cd src/frontend

# Biomeによるコードチェック
yarn biome check
```

### pre-commit フック

プロジェクトではpre-commitを使用してコード品質を維持しています。

```bash
# pre-commitのインストール
pip install pre-commit
pre-commit install

# 手動実行
pre-commit run --all-files
```

### テスト

バックエンドテスト:
```bash
invoke test
```

フロントエンドE2Eテスト:
```bash
cd src/frontend
yarn playwright test
```

## ライセンス

MIT License - 詳細は[LICENSE](https://github.com/inventree/InvenTree/blob/master/LICENSE)を参照してください。

## 参考リンク

- 公式サイト: https://inventree.org
- ドキュメント: https://docs.inventree.org
- デモ: https://demo.inventree.org
- GitHub: https://github.com/inventree/InvenTree
