# 開発ガイド

## セットアップ

### 1. API (FastAPI)

```bash
cd api

# 仮想環境作成
python -m venv venv
source venv/bin/activate  # macOS/Linux
# or
venv\Scripts\activate  # Windows

# 依存関係インストール
pip install -r requirements.txt

# 環境変数設定
cp .env.example .env
# .envを編集

# 開発サーバー起動
uvicorn app.main:app --reload
```

APIは http://localhost:8000 で起動します。
APIドキュメントは http://localhost:8000/docs で確認できます。

### 2. Web (React + Vite)

```bash
cd web

# 依存関係インストール
npm install

# 開発サーバー起動
npm run dev
```

Webアプリは http://localhost:3000 で起動します。

## プロジェクト構造

```
ai.card/
├── api/                    # FastAPI backend
│   ├── app/
│   │   ├── core/          # 設定、共通処理
│   │   ├── models/        # Pydanticモデル
│   │   ├── routes/        # APIエンドポイント
│   │   ├── services/      # ビジネスロジック
│   │   └── main.py        # アプリケーションエントリ
│   └── requirements.txt
│
├── web/                    # React frontend
│   ├── src/
│   │   ├── components/    # Reactコンポーネント
│   │   ├── services/      # API通信
│   │   ├── styles/        # CSS
│   │   ├── types/         # TypeScript型定義
│   │   └── App.tsx        # メインコンポーネント
│   └── package.json
│
├── ios/                    # iOS app (今後実装)
└── docs/                   # ドキュメント
```

## 技術スタック

### Backend
- Python 3.9+
- FastAPI
- Pydantic
- SQLAlchemy (今後実装)
- atproto SDK

### Frontend
- React 18
- TypeScript
- Vite
- Framer Motion (アニメーション)
- Axios

## 開発のポイント

### 1. カードデータ
カードは0-15のIDを持ち、ai.jsonの定義に基づいています。

### 2. レアリティシステム
- 通常のガチャではキラカードが最高レア
- uniqueカードは隠し要素として実装
- 確率は設定ファイルで調整可能

### 3. atproto連携
- ユーザー認証はatproto OAuth(今後実装)
- カードデータはユーザーのPDSに保存(今後実装)
- 現在はローカルストレージのみ

### 4. アニメーション
- ガチャ演出はレアリティに応じて変化
- uniqueカードは特別な演出
- Framer Motionで実装

## 今後の実装予定

1. **データベース連携**
   - SQLAlchemyでのモデル定義
   - ユーザーごとのカード管理

2. **atproto統合**
   - OAuth認証
   - PDSへのデータ保存
   - DID検証

3. **uniqueカード検証**
   - グローバルレジストリ
   - 重複チェック
   - ai.verse連携

4. **iOS app**
   - SwiftUIで実装
   - 共通APIを使用