1
0

add claude

This commit is contained in:
2025-06-01 21:39:53 +09:00
parent 3459231bba
commit 4246f718ef
80 changed files with 7249 additions and 0 deletions

285
docs/AI_CONTEXT.md Normal file
View File

@@ -0,0 +1,285 @@
# AI Context Document - ai.card プロジェクト
> **重要**: このドキュメントは、将来のAI開発者Claude Code等が迅速にプロジェクトを理解し、作業を継続できるよう設計されています。
## 🎯 プロジェクト概要
**ai.card** は、atprotoベースの分散型カードゲームです。ユーザーがデータを所有し、世界で一人だけが持てるuniqueカードが存在する革新的なシステムです。
### 中核思想
- **存在子理論**: 世界の最小単位aiの探求がテーマ
- **yui system**: 現実の個人とゲーム要素の1:1紐付け
- **データ主権**: atproto PDSでユーザーがカードデータを所有
- **現実の反映**: ゲームがプレイヤーの現実と連動
## 🏗️ システム構成
```
[iOS App] ←→ [Web App] ←→ [FastAPI API] ←→ [PostgreSQL]
[atproto PDS]
[ai.verse(将来)]
```
### 技術スタック2025年6月1日現在
- **Backend**: Python 3.11 + FastAPI + PostgreSQL + Docker
- **Frontend**: React 18 + TypeScript + Vite + Framer Motion
- **Mobile**: SwiftUI + Combine + iOS 16.0+
- **Identity**: atproto DID + JWT
- **Infrastructure**: Docker Compose + Cloudflare Tunnel + Supabase
## 💎 uniqueカードシステム最重要概念
### 概念
```
通常のガチャ → キラカード(0.1%) → uniqueカード(0.0001%)
↑表 ↑隠し機能
ユーザーの目標 偶然の幸運
```
### 実装
- **確率**: 0.0001%10万分の1
- **唯一性**: カードID 0-15の各種類につき、世界で1人のみ所有可能
- **検証**: `unique_card_registry`テーブル + atproto PDS両方でチェック
- **エフェクト**: 虹色オーラ + パーティクル + 特別UI
### データフロー
```
ガチャ実行 → レアリティ判定 → unique可能性チェック →
atomic操作で確保 → DB保存 → atproto PDS同期 → アニメーション表示
```
## 🔐 atproto統合
### 認証フロー
```
ユーザー: ハンドル + アプリパスワード
atproto PDS認証
JWT発行 → セッション管理
API呼び出し認証
```
### データ同期
```
カード取得 → DB保存 → atproto collection record作成
レキシコン: ai.card.collection
ユーザーPDSにデータ保存ユーザーがデータ所有
```
## 📁 重要なファイル構造
### Backend最重要
```
api/app/
├── models/card.py # カードデータ定義
├── services/gacha.py # ガチャロジックuniqueカード生成
├── services/atproto.py # atproto統合
├── services/card_sync.py # PDS同期
├── repositories/card.py # カードデータアクセス
├── routes/auth.py # 認証API
├── routes/cards.py # カードAPI
└── db/models.py # データベースモデル
```
### Frontend
```
web/src/
├── components/Card.tsx # カード表示(エフェクト付き)
├── components/GachaAnimation.tsx # ガチャ演出
├── services/auth.ts # 認証管理
└── services/api.ts # API通信
ios/AiCard/AiCard/
├── Views/GachaView.swift # ガチャ画面
├── Views/CardView.swift # カード表示
├── Services/APIClient.swift # API通信
└── Services/AuthManager.swift # 認証管理
```
## 🎮 ゲーム仕様
### カードマスター16種類
```json
{
"0": {"name": "アイ", "color": "fff700", "description": "世界の最小単位"},
"1": {"name": "夢幻", "color": "b19cd9", "description": "意識が物質を作る"},
...
"15": {"name": "世界", "color": "54a0ff", "description": "存在と世界は同じもの"}
}
```
### レアリティ確率
```
Normal: 99.789% → グレー系
Rare: 0.1% → ブルー系
Super Rare: 0.01% → パープル系
Kira: 0.1% → ゴールド系(スパークル)
Unique: 0.0001% → マゼンタ系(オーラ)
```
## 🚀 開発環境セットアップ
### 1. 基本起動
```bash
git clone [repository]
cd ai.card
# Docker環境起動
docker-compose up -d
# データベース初期化
docker-compose exec api python init_db.py
# Web開発サーバー
cd web && npm install && npm run dev
# iOSXcodeで開く
open ios/AiCard/AiCard.xcodeproj
```
### 2. 環境変数設定(.env
```bash
# PostgreSQL
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/aicard
# atprotoテスト用
ATPROTO_HANDLE=test.bsky.social
ATPROTO_PASSWORD=your-app-password
# JWT
SECRET_KEY=your-secret-key
```
### 3. atprotoアカウント準備
1. Blueskyアカウント作成
2. アプリパスワード生成https://bsky.app/settings/app-passwords
3. 環境変数に設定
## 🔧 よくある実装パターン
### 1. 新しいAPIエンドポイント追加
```python
# 1. routes/に新しいルート定義
@router.post("/new-endpoint")
async def new_endpoint(db: AsyncSession = Depends(get_db)):
# ロジック
# 2. main.pyにルーター追加
app.include_router(new_router, prefix=settings.api_v1_prefix)
```
### 2. データベーステーブル追加
```python
# 1. db/models.pyに新しいモデル
class NewModel(Base):
__tablename__ = "new_table"
# フィールド定義
# 2. Alembicマイグレーション
alembic revision --autogenerate -m "add new table"
alembic upgrade head
```
### 3. atproto新機能追加
```python
# services/atproto.pyに新しいメソッド
async def new_atproto_feature(self, did: str, data: dict):
# atproto SDK使用
return self.client.some_new_api(data)
```
## 🎨 UI/UXパターン
### カードエフェクト実装
```typescript
// WebReact + Framer Motion
<motion.div
className={`card ${getRarityClass()}`}
animate={isRevealing ? { rotateY: 0 } : {}}
transition={{ duration: 0.8 }}
>
```
```swift
// iOSSwiftUI
CardView(card: card)
.rotation3DEffect(.degrees(isRevealing ? 0 : 180), axis: (0, 1, 0))
.animation(.easeInOut(duration: 0.8), value: isRevealing)
```
## ⚠️ 重要な注意点
### 1. uniqueカードの整合性
- **必須**: atomic操作でのunique確保
- **必須**: DB + atproto PDS両方での検証
- **注意**: レース条件の回避
### 2. atproto連携
- **メインパスワード禁止**: 必ずアプリパスワード使用
- **セッション管理**: JWTトークンの適切な管理
- **エラーハンドリング**: atproto PDS接続失敗時の処理
### 3. 確率システム
- **透明性**: 確率は隠さず設定ファイルで管理
- **公平性**: サーバーサイドでの確率計算必須
- **監査**: ガチャ履歴の完全記録
## 🔮 将来の拡張ポイント
### Phase 1: 運用安定化
- 統合テスト自動化
- モニタリング・アラート
- パフォーマンス最適化
### Phase 2: 機能拡張
- カード交換システム
- プッシュ通知
- リアルタイム同期
### Phase 3: エコシステム統合
- ai.gpt連携AI人格とカード連動
- ai.verse連携3Dゲーム世界でunique skill
- 分散SNS連携
## 📋 デバッグ・トラブルシューティング
### よくある問題
1. **ガチャでカードが生成されない**
`services/gacha.py`のエラーログ確認
2. **atproto認証失敗**
→ アプリパスワードとハンドルの確認
3. **uniqueカード重複**
`unique_card_registry`テーブルの整合性チェック
4. **データベース接続失敗**
→ Docker Composeの起動状態確認
### ログ確認
```bash
# API ログ
docker-compose logs -f api
# データベース状態
docker-compose exec postgres psql -U postgres -d aicard -c "SELECT * FROM unique_card_registry;"
```
---
## 📚 推奨読み込み順序AI向け
1. **このドキュメント全体** - プロジェクト概要把握
2. **CLAUDE.md** - 哲学・思想の理解
3. **IMPLEMENTATION_SUMMARY.md** - 具体的実装詳細
4. **API.md** - APIエンドポイント仕様
5. **DATABASE.md** - データベース設計
6. **ATPROTO.md** - atproto連携詳細
新しいAI開発者は、この順序で読むことで迅速にプロジェクトを理解し、作業を開始できます。

102
docs/API.md Normal file
View File

@@ -0,0 +1,102 @@
# ai.card API Documentation
## Base URL
```
http://localhost:8000/api/v1
```
## Endpoints
### Draw Card
カードを抽選します。
```
POST /cards/draw
```
#### Request Body
```json
{
"user_did": "did:plc:example123",
"is_paid": false
}
```
#### Response
```json
{
"card": {
"id": 0,
"cp": 88,
"status": "normal",
"skill": null,
"owner_did": "did:plc:example123",
"obtained_at": "2025-01-01T00:00:00",
"is_unique": false,
"unique_id": null
},
"is_new": true,
"animation_type": "normal"
}
```
### Get User Cards
ユーザーの所有カード一覧を取得します。
```
GET /cards/user/{user_did}
```
#### Response
```json
[
{
"id": 0,
"cp": 88,
"status": "normal",
"skill": null,
"owner_did": "did:plc:example123",
"obtained_at": "2025-01-01T00:00:00",
"is_unique": false,
"unique_id": null
}
]
```
### Get Unique Cards
全てのuniqueカード一覧を取得します。
```
GET /cards/unique
```
#### Response
```json
[
{
"id": 8,
"cp": 500,
"status": "unique",
"skill": "skill_8_unique",
"owner_did": "did:plc:example123",
"obtained_at": "2025-01-01T00:00:00",
"is_unique": true,
"unique_id": "550e8400-e29b-41d4-a716-446655440000"
}
]
```
## Card Rarity
- `normal`: 通常カード (99.789%)
- `rare`: レアカード (0.1%)
- `super_rare`: スーパーレアカード (0.01%)
- `kira`: キラカード (0.1%)
- `unique`: ユニークカード (0.0001%)
## Animation Types
- `normal`: 通常演出
- `rare`: レア演出
- `kira`: キラカード演出
- `unique`: ユニークカード演出(特別演出)

146
docs/ATPROTO.md Normal file
View File

@@ -0,0 +1,146 @@
# atproto連携ガイド
## 概要
ai.cardは、atprotoAT Protocolと完全に統合されており、以下の機能を提供します
1. **atproto認証**: DIDベースの分散型認証
2. **データ主権**: カードデータをユーザーのPDSに保存
3. **相互運用性**: 他のatproto対応アプリとの連携
## 認証フロー
### 1. ログイン
```javascript
// フロントエンド
const response = await authService.login(identifier, password);
// identifier: ハンドルuser.bsky.socialまたはDID
// password: アプリパスワード(メインパスワードではない)
```
### 2. アプリパスワードの作成
1. https://bsky.app/settings/app-passwords にアクセス
2. 新しいアプリパスワードを作成
3. ai.cardでそのパスワードを使用
### 3. セッション管理
- JWTトークンで24時間有効
- Cookieとヘッダーの両方をサポート
- 自動更新機能なし(再ログインが必要)
## データ保存
### カードコレクションのLexicon
```json
{
"lexicon": 1,
"id": "ai.card.collection",
"defs": {
"main": {
"type": "record",
"record": {
"type": "object",
"properties": {
"cardId": { "type": "integer" },
"cp": { "type": "integer" },
"status": { "type": "string" },
"skill": { "type": "string" },
"obtainedAt": { "type": "string" },
"isUnique": { "type": "boolean" },
"uniqueId": { "type": "string" }
}
}
}
}
}
```
### データ同期
```bash
# カードをPDSに同期
POST /api/v1/sync/cards
{
"atproto_session": "session-string-from-login"
}
# PDSからインポート
POST /api/v1/sync/import
# PDSにエクスポート
POST /api/v1/sync/export
```
## セキュリティ
### 1. 認証情報の取り扱い
- **メインパスワードは使用しない**: 必ずアプリパスワードを使用
- **セッション文字列の保護**: atprotoセッションは暗号化して保存
- **HTTPS必須**: 本番環境では必ずHTTPS経由で通信
### 2. データ検証
- サーバー側でカードデータの整合性をチェック
- uniqueカードはグローバルレジストリで重複防止
- PDSのデータも信頼せず、常に検証
### 3. 権限管理
現在の制限:
- ユーザーはPDSのデータを自由に編集可能
- OAuth 2.1 scope実装待ち
対策:
- サーバー側検証で不正データを無効化
- ゲームプレイ時は常にサーバーチェック
## APIエンドポイント
### 認証
```
POST /api/v1/auth/login - ログイン
POST /api/v1/auth/logout - ログアウト
GET /api/v1/auth/verify - セッション確認
POST /api/v1/auth/verify-did - DID検証公開
```
### 同期
```
POST /api/v1/sync/cards - 双方向同期
POST /api/v1/sync/export - PDSへエクスポート
POST /api/v1/sync/import - PDSからインポート
GET /api/v1/sync/verify/:id - カード所有確認
```
## トラブルシューティング
### ログインできない
1. アプリパスワードを使用しているか確認
2. ハンドルまたはDIDが正しいか確認
3. PDSが稼働しているか確認
### データが同期されない
1. atprotoセッションが有効か確認
2. PDSの容量制限を確認
3. ネットワーク接続を確認
### カードが表示されない
1. `/api/v1/sync/import`でPDSからインポート
2. ブラウザキャッシュをクリア
3. 再ログイン
## 今後の予定
1. **OAuth 2.1対応**: より細かい権限管理
2. **リアルタイム同期**: WebSocketでの即時反映
3. **他アプリ連携**: atprotoエコシステムとの統合

102
docs/DATABASE.md Normal file
View File

@@ -0,0 +1,102 @@
# データベース設定ガイド
## ローカル開発Docker Compose
### 1. 起動
```bash
# データベースとAPIを起動
docker-compose up -d
# ログを確認
docker-compose logs -f
```
### 2. データベース初期化
```bash
# APIコンテナに入る
docker-compose exec api bash
# マイグレーション実行
alembic upgrade head
# マスタデータ投入
python init_db.py
```
## Supabase連携
### 1. Supabaseプロジェクト作成
1. [Supabase](https://supabase.com)でプロジェクト作成
2. Settings > Database から接続情報を取得
### 2. 環境変数設定
```bash
# .env
DATABASE_URL_SUPABASE=postgresql+asyncpg://postgres.[project-ref]:[password]@aws-0-[region].pooler.supabase.com:5432/postgres
USE_SUPABASE=true
```
### 3. テーブル作成
Supabase SQL Editorで以下を実行
```sql
-- Alembicのマイグレーションを実行
-- または直接SQLでテーブル作成
```
## Cloudflare Tunnel設定
### 1. トンネル作成
```bash
# Cloudflareダッシュボードでトンネル作成
# トークンを取得
```
### 2. 環境変数設定
```bash
# .env
CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token
```
### 3. 起動
```bash
# tunnelプロファイルを含めて起動
docker-compose --profile tunnel up -d
```
## データベーススキーマ
### users
- ユーザー情報DID、ハンドル
### card_master
- カードマスタデータ16種類
### user_cards
- ユーザー所有カード
- uniqueカードフラグ付き
### unique_card_registry
- グローバルuniqueカード登録
- 各カードIDにつき1人のみ所有可能
### draw_history
- ガチャ履歴
### gacha_pools
- ピックアップガチャ設定
## バックアップ
### ローカル
```bash
# バックアップ
docker-compose exec postgres pg_dump -U postgres aicard > backup.sql
# リストア
docker-compose exec -T postgres psql -U postgres aicard < backup.sql
```
### Supabase
- 自動バックアップが有効
- ダッシュボードからダウンロード可能

124
docs/DEVELOPMENT.md Normal file
View File

@@ -0,0 +1,124 @@
# 開発ガイド
## セットアップ
### 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を使用

View File

@@ -0,0 +1,267 @@
# ai.card 実装完了サマリー
## 作業日: 2025年6月1日
### 📋 今日実装した内容
## 1. データベース実装PostgreSQL + Supabase
### 完成機能
- **PostgreSQLスキーマ設計**: 7つのテーブルusers, card_master, user_cards, unique_card_registry等
- **Docker Compose環境**: 開発・本番両対応
- **Supabase連携**: 環境変数で切り替え可能
- **リポジトリパターン**: BaseRepository + 専用Repository
- **マイグレーション**: Alembic設定 + 初期データ投入
- **データ同期**: ガチャ時の自動データベース保存
### 重要ファイル
```
api/app/db/models.py # SQLAlchemyモデル
api/app/repositories/ # リポジトリパターン実装
api/init_db.py # データベース初期化
docker-compose.yml # 開発環境
docker-compose.production.yml # 本番環境
```
## 2. atproto連携機能
### 完成機能
- **認証システム**: DID/ハンドルログイン + JWTトークン
- **PDSデータ保存**: カードをユーザーのPDSに自動同期
- **Lexicon定義**: `ai.card.collection` スキーマ
- **同期API**: 双方向同期・インポート・エクスポート
- **データ検証**: サーバー側整合性チェック
### 重要ファイル
```
api/app/services/atproto.py # atproto統合サービス
api/app/services/card_sync.py # カード同期サービス
api/app/routes/auth.py # 認証API
api/app/routes/sync.py # 同期API
api/app/auth/dependencies.py # 認証依存関係
```
## 3. iOS App完全実装
### 完成機能
- **SwiftUI + MVVM**: Combineを使ったリアクティブアーキテクチャ
- **認証画面**: atprotoログインアプリパスワード対応
- **ガチャシステム**: 通常・プレミアムガチャ + リッチアニメーション
- **カードコレクション**: グリッド表示・検索・フィルタ・詳細画面
- **プロフィール**: ユーザー情報・統計・設定
- **視覚エフェクト**: レアリティ別アニメーション・3Dフリップ
### 重要ファイル
```
ios/AiCard/AiCard/
├── Models/Card.swift # カードデータモデル
├── Services/APIClient.swift # API通信Combine使用
├── Services/AuthManager.swift # 認証管理
├── Services/CardManager.swift # カード管理
├── Views/LoginView.swift # ログイン画面
├── Views/GachaView.swift # ガチャ画面
├── Views/CollectionView.swift # コレクション画面
├── Views/CardView.swift # カード表示コンポーネント
└── Views/GachaAnimationView.swift # ガチャアニメーション
```
## 4. プロジェクト統合
### アーキテクチャ概要
```
[iOS App] ←→ [Web App] ←→ [FastAPI] ←→ [PostgreSQL]
[atproto PDS]
```
### データフロー
1. **ガチャ**: iOS/Web → API → DB保存 → atproto PDS同期
2. **認証**: atproto DID → JWT → セッション管理
3. **同期**: DB ↔ atproto PDS双方向同期
## 📊 実装済み機能一覧
### ✅ Backend (FastAPI)
- [x] PostgreSQL + Supabase対応
- [x] atproto認証・同期
- [x] ガチャシステム確率・unique管理
- [x] カードCRUD API
- [x] Docker環境開発・本番
- [x] リポジトリパターン
- [x] データベースマイグレーション
### ✅ Frontend (React)
- [x] atproto認証UI
- [x] ガチャアニメーションFramer Motion
- [x] カード表示・コレクション
- [x] レスポンシブデザイン
- [x] TypeScript対応
### ✅ Mobile (iOS)
- [x] SwiftUI + MVVM + Combine
- [x] atproto認証
- [x] ガチャ(通常・プレミアム)
- [x] カードコレクション(検索・フィルタ)
- [x] リッチアニメーション
- [x] iOS 16.0+ 対応
### ✅ DevOps
- [x] Docker Compose
- [x] Cloudflare Tunnel対応
- [x] 環境別設定
- [x] ヘルスチェック
## 🔧 技術スタック
### Backend
- **Language**: Python 3.11
- **Framework**: FastAPI 0.104.1
- **Database**: PostgreSQL + SQLAlchemy
- **ORM**: SQLAlchemy 2.0 (async)
- **Migration**: Alembic
- **Cloud**: Supabase対応
- **atproto**: atproto SDK 0.0.46
### Frontend (Web)
- **Language**: TypeScript
- **Framework**: React 18 + Vite
- **Animation**: Framer Motion
- **HTTP**: Axios
- **Styling**: CSS Modules
### Mobile (iOS)
- **Language**: Swift 5.7+
- **Framework**: SwiftUI
- **Architecture**: MVVM + Combine
- **HTTP**: URLSession
- **Minimum**: iOS 16.0
### Infrastructure
- **Container**: Docker + Docker Compose
- **Proxy**: Nginx
- **Tunnel**: Cloudflare Tunnel
- **Database**: PostgreSQL 16
## 🎯 unique カードシステムの実装
### 概念
- **確率**: 0.0001%10万分の1
- **唯一性**: 各カードID0-15につき世界で1人のみ所有可能
- **検証**: サーバー側 + atproto PDS両方でチェック
- **将来**: ai.verse unique skillとの連携予定
### 実装詳細
- `unique_card_registry`テーブルでグローバル管理
- ガチャ時にatomic操作で重複防止
- atproto PDSにも同期保存
- Web/iOSで特別なエフェクト表示
## 🚀 デプロイメント準備
### 開発環境起動
```bash
# 全体起動
docker-compose up -d
# データベース初期化
docker-compose exec api python init_db.py
# Web開発サーバー
cd web && npm run dev
# iOSXcodeで開く
open ios/AiCard/AiCard.xcodeproj
```
### 本番環境起動
```bash
# 本番設定で起動
docker-compose -f docker-compose.production.yml up -d
```
## 📝 重要な設定ファイル
### 環境変数(.env
```bash
# Database
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/aicard
DATABASE_URL_SUPABASE=postgresql+asyncpg://...
USE_SUPABASE=false
# atproto
ATPROTO_HANDLE=your.bsky.social
ATPROTO_PASSWORD=your-app-password
# Security
SECRET_KEY=your-secret-key
# Cloudflare Tunnel
CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token
```
### API設定
- **開発**: `http://localhost:8000`
- **本番**: `https://api.card.syui.ai`
- **認証**: Bearer JWT token
- **CORS**: Web/iOS対応
## 🔮 今後の実装候補
### Phase 1: 運用準備
- [ ] 統合テスト(全システム連携)
- [ ] パフォーマンス最適化
- [ ] モニタリング・ログ
- [ ] セキュリティ監査
### Phase 2: 機能拡張
- [ ] カード交換システム
- [ ] プッシュ通知iOS
- [ ] リアルタイム同期WebSocket
- [ ] バックアップ・復元
### Phase 3: エコシステム統合
- [ ] ai.gpt連携
- [ ] ai.verse unique skill連携
- [ ] yui system実装
- [ ] 分散SNS連携
## 🎮 ゲーム仕様
### カードシステム
- **種類**: 16種類ai, 夢幻, 光彩, 中性子, 太陽, 夜空, 雪, 雷, 超究, 剣, 破壊, 地球, 天の川, 創造, 超新星, 世界)
- **CP**: 1-999レアリティでボーナス
- **レアリティ**: 5段階normal, rare, super_rare, kira, unique
### ガチャ確率
- **Normal**: 99.789%
- **Rare**: 0.1%
- **Super Rare**: 0.01%
- **Kira**: 0.1%
- **Unique**: 0.0001%(隠し機能)
### 演出
- **Web**: CSS + Framer Motion
- **iOS**: SwiftUI Animation + Particle Effects
- **レアリティ別**: 色・エフェクト・音(予定)
---
## 💡 AI向けメモ
### プロジェクト理解のキーポイント
1. **存在子理論**: 最小単位の意識がゲーム世界の根幹
2. **yui system**: 現実の個人とゲーム内要素の1:1紐付け
3. **データ主権**: atproto PDSでユーザーがデータを所有
4. **uniqueカード**: NFT的だがブロックチェーン不使用
### 重要な実装パターン
- **リポジトリパターン**: データアクセス層の抽象化
- **atproto同期**: ガチャ時の自動PDS保存
- **レアリティシステム**: 確率とエフェクトの連動
- **認証フロー**: DID → JWT → セッション管理
### 次回作業時の注意点
- 環境変数の設定確認
- データベースの初期化
- atprotoアカウントの準備
- Docker環境の起動確認