2.9 KiB
2.9 KiB
開発ガイド
セットアップ
1. API (FastAPI)
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)
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で実装
今後の実装予定
-
データベース連携
- SQLAlchemyでのモデル定義
- ユーザーごとのカード管理
-
atproto統合
- OAuth認証
- PDSへのデータ保存
- DID検証
-
uniqueカード検証
- グローバルレジストリ
- 重複チェック
- ai.verse連携
-
iOS app
- SwiftUIで実装
- 共通APIを使用