diff --git a/.claude/memories/cursor__cursor-commit-message-rules.md b/.claude/memories/cursor__cursor-commit-message-rules.md new file mode 100644 index 00000000..7e23bd20 --- /dev/null +++ b/.claude/memories/cursor__cursor-commit-message-rules.md @@ -0,0 +1,54 @@ +# Git Commit Message Rules + +## コミットルール + +### 基本原則 + +- **1 行完結**: 改行なしで 50 文字以内 +- **機能単位**: 1 コミット = 1 つの論理的変更 +- **分割**: 関連性の低い変更は別コミットに分ける + +### フォーマット + +``` +: +``` + +### Type 一覧 + +- `feat`: 新機能追加 +- `fix`: バグ修正 +- `docs`: ドキュメント変更 +- `style`: フォーマット変更(機能影響なし) +- `refactor`: リファクタリング +- `test`: テスト追加・修正 +- `chore`: その他(依存関係更新など) + +### 良い例 + +```bash +feat: add MinIO client to API container +fix: correct GraphQL field names to camelCase +refactor: simplify JSON escaping logic +docs: update README with seed script usage +``` + +### 避けるべき例 + +```bash +❌ fix bug # 何のバグか不明 +❌ update file # どのファイルの何を更新したか不明 +❌ wip / temp # 作業途中・一時的なコミット +❌ いろいろ修正 # 複数変更の混在 +``` + +### ブランチ戦略 + +- **新機能**: `feature/issue○○/title[簡単な説明]` +- **修正**: `fix/issue○○/title[簡単な説明]` +- **ベースブランチ**: `develop` (通常) / `main` (リリース) + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.claude/memories/cursor__cursor-project-guide.md b/.claude/memories/cursor__cursor-project-guide.md new file mode 100644 index 00000000..b5729d44 --- /dev/null +++ b/.claude/memories/cursor__cursor-project-guide.md @@ -0,0 +1,66 @@ +# Project Development Guide + +## プロジェクト概要 + +- **プロジェクト名**: Nutfes-Bingo +- **アーキテクチャ**: Docker Compose (api/view-user/view-admin/db/minio) +- **バックエンド**: Hasura + PostgreSQL +- **フロントエンド**: Next.js + Apollo Client + Recoil +- **認証**: NextAuth + Keycloak +- **ストレージ**: MinIO + +## 🛠️ 開発環境・コマンド + +### 環境構築 + +```bash +make run # 開発環境起動 (Docker Compose + DB適用) +make down # 環境停止 +make run-prod # 本番環境起動 +``` + +### ビルド・テスト・開発 + +```bash +# view-user / view-admin 共通 +npm run dev # 開発サーバー起動 +npm run build # 本番ビルド +npm run lint # ESLint実行 +npm run lint:fix # ESLint自動修正 +npm run codegen # GraphQL型生成 + +# Makefile経由 +make codegen # 両アプリの型生成 +make db-apply # Hasura メタデータ・マイグレーション適用 +``` + +## 📝 コードスタイル・規約 + +### 技術スタック + +- **言語**: TypeScript + Next.js +- **フォーマット**: Prettier + ESLint (next/core-web-vitals, prettier, import/warnings) +- **スタイル**: CSS Modules (`*.module.css`) + +### 命名規則 + +- **React Component**: PascalCase +- **GraphQL フィールド**: camelCase +- **ファイル名**: kebab-case または PascalCase (コンポーネント) + +### Import ルール + +- **エイリアス**: `@/*` を使用 +- **共通コンポーネント**: `@/components/common` から import +- **順序**: 外部ライブラリ → 内部ライブラリ → 相対パス + +### エラーハンドリング + +- **基本**: `try-catch` パターン +- **フォーム**: `react-hook-form` バリデーション +- **GraphQL**: Apollo Client エラーハンドリング + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.claude/memories/cursor__cursor-pull-request-rules.md b/.claude/memories/cursor__cursor-pull-request-rules.md new file mode 100644 index 00000000..d13462ec --- /dev/null +++ b/.claude/memories/cursor__cursor-pull-request-rules.md @@ -0,0 +1,64 @@ +# Pull Request Rules + +## PR 作成前チェックリスト + +- [ ] ブランチがリモートにプッシュされている +- [ ] コミットが適切に分割されている +- [ ] 動作確認が完了している +- [ ] 関連 Issue が存在する場合は番号を確認 + +## PR 作成手順 + +**重要**: GitHub MCP を使用して PR を作成すること(`gh`コマンド禁止) + +### GitHub MCP 使用例 + +```bash +mcp_github-remote_create_pull_request { + "owner": "hnhk", + "repo": "nutfes-Bingo", + "title": "feat: 既存の賞品画像を用いたシードデータ機能の実装", + "head": "feature/issue123/seed-data", + "base": "develop", + "body": "# 対応Issue\n\n- resolve #123\n\n# 概要\n\n既存の賞品画像を活用したシードデータ機能を実装\n\n..." +} +``` + +## PR タイトル形式 + +``` +: +``` + +## PR 説明文構成 + +**必須**: `.github/pull_request_template.md` に従って記載 + +1. **対応 Issue**: `- resolve #<番号>` +2. **概要**: 開発内容の簡潔な説明 +3. **実装詳細**: + - 追加したファイル + - 変更したファイル + - 削除したファイル + - 主な変更内容 +4. **画面スクリーンショット等**: 必要に応じて +5. **テスト項目**: チェックリスト形式 +6. **備考**: 困った箇所・質問など + +## 必須事項 + +- **GitHub MCP 使用**: `gh`コマンドではなく MCP を使用して PR 作成 +- **テンプレート準拠**: `.github/pull_request_template.md`の構成を厳守 +- **ファイルパス明記**: 実装詳細には具体的なファイルパスを記載 +- **機能単位コミット**: 1 コミット 1 機能の原則を守る + +## 推奨事項 + +- **事前動作確認**: PR 作成前に必ず動作テストを実施 +- **コードレビュー**: 自分でもコードを一度見直してから PR 作成 +- **継続的更新**: 開発中も定期的にコミット・プッシュ + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.clinerules/cursor__cursor-commit-message-rules.md b/.clinerules/cursor__cursor-commit-message-rules.md new file mode 100644 index 00000000..7e23bd20 --- /dev/null +++ b/.clinerules/cursor__cursor-commit-message-rules.md @@ -0,0 +1,54 @@ +# Git Commit Message Rules + +## コミットルール + +### 基本原則 + +- **1 行完結**: 改行なしで 50 文字以内 +- **機能単位**: 1 コミット = 1 つの論理的変更 +- **分割**: 関連性の低い変更は別コミットに分ける + +### フォーマット + +``` +: +``` + +### Type 一覧 + +- `feat`: 新機能追加 +- `fix`: バグ修正 +- `docs`: ドキュメント変更 +- `style`: フォーマット変更(機能影響なし) +- `refactor`: リファクタリング +- `test`: テスト追加・修正 +- `chore`: その他(依存関係更新など) + +### 良い例 + +```bash +feat: add MinIO client to API container +fix: correct GraphQL field names to camelCase +refactor: simplify JSON escaping logic +docs: update README with seed script usage +``` + +### 避けるべき例 + +```bash +❌ fix bug # 何のバグか不明 +❌ update file # どのファイルの何を更新したか不明 +❌ wip / temp # 作業途中・一時的なコミット +❌ いろいろ修正 # 複数変更の混在 +``` + +### ブランチ戦略 + +- **新機能**: `feature/issue○○/title[簡単な説明]` +- **修正**: `fix/issue○○/title[簡単な説明]` +- **ベースブランチ**: `develop` (通常) / `main` (リリース) + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.clinerules/cursor__cursor-project-guide.md b/.clinerules/cursor__cursor-project-guide.md new file mode 100644 index 00000000..b5729d44 --- /dev/null +++ b/.clinerules/cursor__cursor-project-guide.md @@ -0,0 +1,66 @@ +# Project Development Guide + +## プロジェクト概要 + +- **プロジェクト名**: Nutfes-Bingo +- **アーキテクチャ**: Docker Compose (api/view-user/view-admin/db/minio) +- **バックエンド**: Hasura + PostgreSQL +- **フロントエンド**: Next.js + Apollo Client + Recoil +- **認証**: NextAuth + Keycloak +- **ストレージ**: MinIO + +## 🛠️ 開発環境・コマンド + +### 環境構築 + +```bash +make run # 開発環境起動 (Docker Compose + DB適用) +make down # 環境停止 +make run-prod # 本番環境起動 +``` + +### ビルド・テスト・開発 + +```bash +# view-user / view-admin 共通 +npm run dev # 開発サーバー起動 +npm run build # 本番ビルド +npm run lint # ESLint実行 +npm run lint:fix # ESLint自動修正 +npm run codegen # GraphQL型生成 + +# Makefile経由 +make codegen # 両アプリの型生成 +make db-apply # Hasura メタデータ・マイグレーション適用 +``` + +## 📝 コードスタイル・規約 + +### 技術スタック + +- **言語**: TypeScript + Next.js +- **フォーマット**: Prettier + ESLint (next/core-web-vitals, prettier, import/warnings) +- **スタイル**: CSS Modules (`*.module.css`) + +### 命名規則 + +- **React Component**: PascalCase +- **GraphQL フィールド**: camelCase +- **ファイル名**: kebab-case または PascalCase (コンポーネント) + +### Import ルール + +- **エイリアス**: `@/*` を使用 +- **共通コンポーネント**: `@/components/common` から import +- **順序**: 外部ライブラリ → 内部ライブラリ → 相対パス + +### エラーハンドリング + +- **基本**: `try-catch` パターン +- **フォーム**: `react-hook-form` バリデーション +- **GraphQL**: Apollo Client エラーハンドリング + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.clinerules/cursor__cursor-pull-request-rules.md b/.clinerules/cursor__cursor-pull-request-rules.md new file mode 100644 index 00000000..d13462ec --- /dev/null +++ b/.clinerules/cursor__cursor-pull-request-rules.md @@ -0,0 +1,64 @@ +# Pull Request Rules + +## PR 作成前チェックリスト + +- [ ] ブランチがリモートにプッシュされている +- [ ] コミットが適切に分割されている +- [ ] 動作確認が完了している +- [ ] 関連 Issue が存在する場合は番号を確認 + +## PR 作成手順 + +**重要**: GitHub MCP を使用して PR を作成すること(`gh`コマンド禁止) + +### GitHub MCP 使用例 + +```bash +mcp_github-remote_create_pull_request { + "owner": "hnhk", + "repo": "nutfes-Bingo", + "title": "feat: 既存の賞品画像を用いたシードデータ機能の実装", + "head": "feature/issue123/seed-data", + "base": "develop", + "body": "# 対応Issue\n\n- resolve #123\n\n# 概要\n\n既存の賞品画像を活用したシードデータ機能を実装\n\n..." +} +``` + +## PR タイトル形式 + +``` +: +``` + +## PR 説明文構成 + +**必須**: `.github/pull_request_template.md` に従って記載 + +1. **対応 Issue**: `- resolve #<番号>` +2. **概要**: 開発内容の簡潔な説明 +3. **実装詳細**: + - 追加したファイル + - 変更したファイル + - 削除したファイル + - 主な変更内容 +4. **画面スクリーンショット等**: 必要に応じて +5. **テスト項目**: チェックリスト形式 +6. **備考**: 困った箇所・質問など + +## 必須事項 + +- **GitHub MCP 使用**: `gh`コマンドではなく MCP を使用して PR 作成 +- **テンプレート準拠**: `.github/pull_request_template.md`の構成を厳守 +- **ファイルパス明記**: 実装詳細には具体的なファイルパスを記載 +- **機能単位コミット**: 1 コミット 1 機能の原則を守る + +## 推奨事項 + +- **事前動作確認**: PR 作成前に必ず動作テストを実施 +- **コードレビュー**: 自分でもコードを一度見直してから PR 作成 +- **継続的更新**: 開発中も定期的にコミット・プッシュ + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.cursor/README.md b/.cursor/README.md new file mode 100644 index 00000000..04300582 --- /dev/null +++ b/.cursor/README.md @@ -0,0 +1,101 @@ +# Cursor Rules Management - 分散型 + +## 📋 概要 + +このディレクトリは Nutfes-Bingo プロジェクトの開発ルールを**分散管理**するための rulesync システムです。 + +## 📁 ファイル構成 + +``` +.cursor/ +├── rules/ +│ ├── project-guide.mdc # 📘 プロジェクト概要・環境・コードスタイル +│ ├── commit-message-rules.mdc # 📝 Gitコミット・ブランチルール +│ └── pull-request-rules.mdc # 🔄 PR作成・GitHub MCPルール +├── rulesync.json # ⚙️ 分散ルール管理設定 +└── README.md # 📖 このファイル(管理方法の説明) +``` + +## 🎯 分散ルールファイル + +### 📘 `project-guide.mdc` + +- **プロジェクト概要**: アーキテクチャ・技術スタック +- **開発環境・コマンド**: 環境構築・ビルド・テスト手順 +- **コードスタイル・規約**: TypeScript・命名規則・import ルール + +### 📝 `commit-message-rules.mdc` + +- **コミットルール**: フォーマット・タイプ一覧・良い例/悪い例 +- **ブランチ戦略**: feature/fix ブランチの命名規則 + +### 🔄 `pull-request-rules.mdc` + +- **PR 作成手順**: GitHub MCP 使用法・テンプレート準拠 +- **チェックリスト**: 必須事項・推奨事項 + +## 🔄 rulesync とは? + +**rulesync**は、分散したルールファイルを各 AI 開発ツール(Cursor、Claude、Cline)で**統一的に参照**するための仕組みです。 + +### 機能 + +- **分散管理**: 目的別にルールを分割して管理 +- **スコープ設定**: ファイルタイプごとに適用ルールを制御 +- **統一参照**: Cursor/Claude/Cline で同じルールセットを参照 +- **自動同期**: ルール変更の自動反映・競合解決 + +### メリット + +- **保守性**: 関連するルールをまとめて編集 +- **可読性**: 目的別に分かれているため理解しやすい +- **拡張性**: 新しいルール種別を追加しやすい +- **一貫性**: 全 AI ツールで同じルールを適用 + +## 🔄 ルール更新手順 + +### 1. 個別ルール変更時 + +```bash +# 該当ルールファイルを編集 +code .cursor/rules/project-guide.mdc # プロジェクト設定変更時 +code .cursor/rules/commit-message-rules.mdc # コミットルール変更時 +code .cursor/rules/pull-request-rules.mdc # PRルール変更時 + +# 変更をコミット(対象ルールに応じて) +git add .cursor/rules/ +git commit -m "docs: update [対象] development rules" +git push +``` + +### 2. チーム同期 + +- **新メンバー**: リポジトリクローン時に自動的に最新ルールが適用 +- **既存メンバー**: `git pull` で最新ルールを取得 +- **Cursor**: `.cursor/rules/` ディレクトリを自動認識・適用 + +### 3. ルール追加時 + +新しい種別のルールを追加する場合: + +1. **ルールファイル作成**: `.cursor/rules/new-rule.mdc` +2. **rulesync.json 更新**: `rules_files` 配列に追加 +3. **コミット・プッシュ**: チーム全体に共有 + +## 🎯 ベストプラクティス + +### ルール編集時 + +- **目的明確化**: 1 ファイル = 1 つの関心事 +- **具体例追加**: 良い例・悪い例を必ず含める +- **簡潔性**: 1 ルールあたり 1 ~ 2 行で記述 + +### チーム運用 + +- **定期見直し**: 月 1 回程度でルールの妥当性を確認 +- **段階的導入**: 新ルールは段階的に導入・定着 +- **フィードバック収集**: チームメンバーからの改善提案を歓迎 + +--- + +**rulesync システム v1.0** - 分散型開発ルール管理 diff --git a/.cursor/rules.mdc b/.cursor/rules.mdc new file mode 100644 index 00000000..d5995df4 --- /dev/null +++ b/.cursor/rules.mdc @@ -0,0 +1,42 @@ +# Cursor 開発ルール + +このファイルは Nutfes-Bingo プロジェクトにおける Cursor での開発ルールを定義します。 + +## 📋 ルール一覧 + +### [プロジェクトガイド](./rules/project-guide.mdc) + +- プロジェクト概要とアーキテクチャ +- 開発環境セットアップ・コマンド +- コードスタイル・技術スタック +- 命名規則・Import ルール + +### [コミットメッセージルール](./rules/commit-message-rules.mdc) + +- Conventional Commits 準拠 +- プレフィックス規則 (feat/fix/docs/refactor 等) +- コミットメッセージフォーマット + +### [プルリクエストルール](./rules/pull-request-rules.mdc) + +- PR 作成・レビュープロセス +- タイトル・説明文のフォーマット +- マージ前チェックリスト + +## 🎯 基本方針 + +- **品質**: ESLint + Prettier でコード品質を保つ +- **型安全**: TypeScript + GraphQL Codegen で型安全性を確保 +- **協調**: 統一されたコミット・PR 規則でチーム開発を円滑化 +- **効率**: Docker + Makefile で環境構築・操作を簡素化 + +## 📚 関連ファイル + +- [`PROJECT_GUIDE.md`](../PROJECT_GUIDE.md) - ルートディレクトリの概要ガイド +- [`README.md`](../README.md) - プロジェクト全体説明 +- [`Makefile`](../Makefile) - 開発・ビルドコマンド定義 + description: + globs: + alwaysApply: false + +--- diff --git a/.cursor/rules/commit-message-rules.mdc b/.cursor/rules/commit-message-rules.mdc new file mode 100644 index 00000000..d2273c75 --- /dev/null +++ b/.cursor/rules/commit-message-rules.mdc @@ -0,0 +1,54 @@ +# Git Commit Message Rules + +## コミットルール + +### 基本原則 + +- **1 行完結**: 改行なしで 50 文字以内 +- **機能単位**: 1 コミット = 1 つの論理的変更 +- **分割**: 関連性の低い変更は別コミットに分ける + +### フォーマット + +``` +: +``` + +### Type 一覧 + +- `feat`: 新機能追加 +- `fix`: バグ修正 +- `docs`: ドキュメント変更 +- `style`: フォーマット変更(機能影響なし) +- `refactor`: リファクタリング +- `test`: テスト追加・修正 +- `chore`: その他(依存関係更新など) + +### 良い例 + +```bash +feat: add MinIO client to API container +fix: correct GraphQL field names to camelCase +refactor: simplify JSON escaping logic +docs: update README with seed script usage +``` + +### 避けるべき例 + +```bash +❌ fix bug # 何のバグか不明 +❌ update file # どのファイルの何を更新したか不明 +❌ wip / temp # 作業途中・一時的なコミット +❌ いろいろ修正 # 複数変更の混在 +``` + +### ブランチ戦略 + +- **新機能**: `feature/issue○○/title[簡単な説明]` +- **修正**: `fix/issue○○/title[簡単な説明]` +- **ベースブランチ**: `develop` (通常) / `main` (リリース) + description: + globs: + alwaysApply: false + +--- diff --git a/.cursor/rules/project-guide.mdc b/.cursor/rules/project-guide.mdc new file mode 100644 index 00000000..0d41b2c8 --- /dev/null +++ b/.cursor/rules/project-guide.mdc @@ -0,0 +1,66 @@ +# Project Development Guide + +## プロジェクト概要 + +- **プロジェクト名**: Nutfes-Bingo +- **アーキテクチャ**: Docker Compose (api/view-user/view-admin/db/minio) +- **バックエンド**: Hasura + PostgreSQL +- **フロントエンド**: Next.js + Apollo Client + Recoil +- **認証**: NextAuth + Keycloak +- **ストレージ**: MinIO + +## 🛠️ 開発環境・コマンド + +### 環境構築 + +```bash +make run # 開発環境起動 (Docker Compose + DB適用) +make down # 環境停止 +make run-prod # 本番環境起動 +``` + +### ビルド・テスト・開発 + +```bash +# view-user / view-admin 共通 +npm run dev # 開発サーバー起動 +npm run build # 本番ビルド +npm run lint # ESLint実行 +npm run lint:fix # ESLint自動修正 +npm run codegen # GraphQL型生成 + +# Makefile経由 +make codegen # 両アプリの型生成 +make db-apply # Hasura メタデータ・マイグレーション適用 +``` + +## 📝 コードスタイル・規約 + +### 技術スタック + +- **言語**: TypeScript + Next.js +- **フォーマット**: Prettier + ESLint (next/core-web-vitals, prettier, import/warnings) +- **スタイル**: CSS Modules (`*.module.css`) + +### 命名規則 + +- **React Component**: PascalCase +- **GraphQL フィールド**: camelCase +- **ファイル名**: kebab-case または PascalCase (コンポーネント) + +### Import ルール + +- **エイリアス**: `@/*` を使用 +- **共通コンポーネント**: `@/components/common` から import +- **順序**: 外部ライブラリ → 内部ライブラリ → 相対パス + +### エラーハンドリング + +- **基本**: `try-catch` パターン +- **フォーム**: `react-hook-form` バリデーション +- **GraphQL**: Apollo Client エラーハンドリング + description: + globs: + alwaysApply: false + +--- diff --git a/.cursor/rules/pull-request-rules.mdc b/.cursor/rules/pull-request-rules.mdc new file mode 100644 index 00000000..90c9a681 --- /dev/null +++ b/.cursor/rules/pull-request-rules.mdc @@ -0,0 +1,64 @@ +# Pull Request Rules + +## PR 作成前チェックリスト + +- [ ] ブランチがリモートにプッシュされている +- [ ] コミットが適切に分割されている +- [ ] 動作確認が完了している +- [ ] 関連 Issue が存在する場合は番号を確認 + +## PR 作成手順 + +**重要**: GitHub MCP を使用して PR を作成すること(`gh`コマンド禁止) + +### GitHub MCP 使用例 + +```bash +mcp_github-remote_create_pull_request { + "owner": "hnhk", + "repo": "nutfes-Bingo", + "title": "feat: 既存の賞品画像を用いたシードデータ機能の実装", + "head": "feature/issue123/seed-data", + "base": "develop", + "body": "# 対応Issue\n\n- resolve #123\n\n# 概要\n\n既存の賞品画像を活用したシードデータ機能を実装\n\n..." +} +``` + +## PR タイトル形式 + +``` +: +``` + +## PR 説明文構成 + +**必須**: `.github/pull_request_template.md` に従って記載 + +1. **対応 Issue**: `- resolve #<番号>` +2. **概要**: 開発内容の簡潔な説明 +3. **実装詳細**: + - 追加したファイル + - 変更したファイル + - 削除したファイル + - 主な変更内容 +4. **画面スクリーンショット等**: 必要に応じて +5. **テスト項目**: チェックリスト形式 +6. **備考**: 困った箇所・質問など + +## 必須事項 + +- **GitHub MCP 使用**: `gh`コマンドではなく MCP を使用して PR 作成 +- **テンプレート準拠**: `.github/pull_request_template.md`の構成を厳守 +- **ファイルパス明記**: 実装詳細には具体的なファイルパスを記載 +- **機能単位コミット**: 1 コミット 1 機能の原則を守る + +## 推奨事項 + +- **事前動作確認**: PR 作成前に必ず動作テストを実施 +- **コードレビュー**: 自分でもコードを一度見直してから PR 作成 +- **継続的更新**: 開発中も定期的にコミット・プッシュ + description: + globs: + alwaysApply: false + +--- diff --git a/.cursor/rulesync.json b/.cursor/rulesync.json new file mode 100644 index 00000000..3b5c6a7a --- /dev/null +++ b/.cursor/rulesync.json @@ -0,0 +1,73 @@ +{ + "name": "nutfes-bingo-rules", + "version": "1.0.0", + "description": "Nutfes-Bingo プロジェクト分散開発ルール", + "rules_files": [ + { + "name": "project-guide", + "path": "rules/project-guide.mdc", + "description": "プロジェクト概要・環境構築・コードスタイル", + "scope": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.json"] + }, + { + "name": "commit-rules", + "path": "rules/commit-message-rules.mdc", + "description": "Git コミットメッセージ・ブランチ戦略", + "scope": ["git"] + }, + { + "name": "pr-rules", + "path": "rules/pull-request-rules.mdc", + "description": "プルリクエスト作成・GitHub MCP 使用法", + "scope": ["github", "pull-request"] + } + ], + "settings": { + "auto_apply": true, + "priority": "high", + "distributed_mode": true, + "scope": { + "include_globs": [ + "**/*.ts", + "**/*.tsx", + "**/*.js", + "**/*.jsx", + "**/*.json", + "**/*.md", + "**/*.mdc" + ], + "exclude_globs": [ + "node_modules/**", + ".git/**", + "dist/**", + "build/**", + ".next/**" + ] + }, + "enforcement": { + "commit_messages": true, + "pull_requests": true, + "code_style": true, + "file_naming": true + } + }, + "integrations": { + "cursor": { + "enabled": true, + "rules_directory": "./rules/" + }, + "claude": { + "enabled": true, + "context_injection": true + }, + "cline": { + "enabled": true, + "auto_reference": true + } + }, + "sync": { + "auto_update": true, + "conflict_resolution": "merge", + "notification": false + } +} diff --git a/.gemini/memories/cursor__cursor-commit-message-rules.md b/.gemini/memories/cursor__cursor-commit-message-rules.md new file mode 100644 index 00000000..7e23bd20 --- /dev/null +++ b/.gemini/memories/cursor__cursor-commit-message-rules.md @@ -0,0 +1,54 @@ +# Git Commit Message Rules + +## コミットルール + +### 基本原則 + +- **1 行完結**: 改行なしで 50 文字以内 +- **機能単位**: 1 コミット = 1 つの論理的変更 +- **分割**: 関連性の低い変更は別コミットに分ける + +### フォーマット + +``` +: +``` + +### Type 一覧 + +- `feat`: 新機能追加 +- `fix`: バグ修正 +- `docs`: ドキュメント変更 +- `style`: フォーマット変更(機能影響なし) +- `refactor`: リファクタリング +- `test`: テスト追加・修正 +- `chore`: その他(依存関係更新など) + +### 良い例 + +```bash +feat: add MinIO client to API container +fix: correct GraphQL field names to camelCase +refactor: simplify JSON escaping logic +docs: update README with seed script usage +``` + +### 避けるべき例 + +```bash +❌ fix bug # 何のバグか不明 +❌ update file # どのファイルの何を更新したか不明 +❌ wip / temp # 作業途中・一時的なコミット +❌ いろいろ修正 # 複数変更の混在 +``` + +### ブランチ戦略 + +- **新機能**: `feature/issue○○/title[簡単な説明]` +- **修正**: `fix/issue○○/title[簡単な説明]` +- **ベースブランチ**: `develop` (通常) / `main` (リリース) + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.gemini/memories/cursor__cursor-project-guide.md b/.gemini/memories/cursor__cursor-project-guide.md new file mode 100644 index 00000000..b5729d44 --- /dev/null +++ b/.gemini/memories/cursor__cursor-project-guide.md @@ -0,0 +1,66 @@ +# Project Development Guide + +## プロジェクト概要 + +- **プロジェクト名**: Nutfes-Bingo +- **アーキテクチャ**: Docker Compose (api/view-user/view-admin/db/minio) +- **バックエンド**: Hasura + PostgreSQL +- **フロントエンド**: Next.js + Apollo Client + Recoil +- **認証**: NextAuth + Keycloak +- **ストレージ**: MinIO + +## 🛠️ 開発環境・コマンド + +### 環境構築 + +```bash +make run # 開発環境起動 (Docker Compose + DB適用) +make down # 環境停止 +make run-prod # 本番環境起動 +``` + +### ビルド・テスト・開発 + +```bash +# view-user / view-admin 共通 +npm run dev # 開発サーバー起動 +npm run build # 本番ビルド +npm run lint # ESLint実行 +npm run lint:fix # ESLint自動修正 +npm run codegen # GraphQL型生成 + +# Makefile経由 +make codegen # 両アプリの型生成 +make db-apply # Hasura メタデータ・マイグレーション適用 +``` + +## 📝 コードスタイル・規約 + +### 技術スタック + +- **言語**: TypeScript + Next.js +- **フォーマット**: Prettier + ESLint (next/core-web-vitals, prettier, import/warnings) +- **スタイル**: CSS Modules (`*.module.css`) + +### 命名規則 + +- **React Component**: PascalCase +- **GraphQL フィールド**: camelCase +- **ファイル名**: kebab-case または PascalCase (コンポーネント) + +### Import ルール + +- **エイリアス**: `@/*` を使用 +- **共通コンポーネント**: `@/components/common` から import +- **順序**: 外部ライブラリ → 内部ライブラリ → 相対パス + +### エラーハンドリング + +- **基本**: `try-catch` パターン +- **フォーム**: `react-hook-form` バリデーション +- **GraphQL**: Apollo Client エラーハンドリング + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.gemini/memories/cursor__cursor-pull-request-rules.md b/.gemini/memories/cursor__cursor-pull-request-rules.md new file mode 100644 index 00000000..d13462ec --- /dev/null +++ b/.gemini/memories/cursor__cursor-pull-request-rules.md @@ -0,0 +1,64 @@ +# Pull Request Rules + +## PR 作成前チェックリスト + +- [ ] ブランチがリモートにプッシュされている +- [ ] コミットが適切に分割されている +- [ ] 動作確認が完了している +- [ ] 関連 Issue が存在する場合は番号を確認 + +## PR 作成手順 + +**重要**: GitHub MCP を使用して PR を作成すること(`gh`コマンド禁止) + +### GitHub MCP 使用例 + +```bash +mcp_github-remote_create_pull_request { + "owner": "hnhk", + "repo": "nutfes-Bingo", + "title": "feat: 既存の賞品画像を用いたシードデータ機能の実装", + "head": "feature/issue123/seed-data", + "base": "develop", + "body": "# 対応Issue\n\n- resolve #123\n\n# 概要\n\n既存の賞品画像を活用したシードデータ機能を実装\n\n..." +} +``` + +## PR タイトル形式 + +``` +: +``` + +## PR 説明文構成 + +**必須**: `.github/pull_request_template.md` に従って記載 + +1. **対応 Issue**: `- resolve #<番号>` +2. **概要**: 開発内容の簡潔な説明 +3. **実装詳細**: + - 追加したファイル + - 変更したファイル + - 削除したファイル + - 主な変更内容 +4. **画面スクリーンショット等**: 必要に応じて +5. **テスト項目**: チェックリスト形式 +6. **備考**: 困った箇所・質問など + +## 必須事項 + +- **GitHub MCP 使用**: `gh`コマンドではなく MCP を使用して PR 作成 +- **テンプレート準拠**: `.github/pull_request_template.md`の構成を厳守 +- **ファイルパス明記**: 実装詳細には具体的なファイルパスを記載 +- **機能単位コミット**: 1 コミット 1 機能の原則を守る + +## 推奨事項 + +- **事前動作確認**: PR 作成前に必ず動作テストを実施 +- **コードレビュー**: 自分でもコードを一度見直してから PR 作成 +- **継続的更新**: 開発中も定期的にコミット・プッシュ + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.github/instructions/cursor__cursor-commit-message-rules.instructions.md b/.github/instructions/cursor__cursor-commit-message-rules.instructions.md new file mode 100644 index 00000000..6a452b3c --- /dev/null +++ b/.github/instructions/cursor__cursor-commit-message-rules.instructions.md @@ -0,0 +1,59 @@ +--- +description: "" +applyTo: "**" +--- + +# Git Commit Message Rules + +## コミットルール + +### 基本原則 + +- **1 行完結**: 改行なしで 50 文字以内 +- **機能単位**: 1 コミット = 1 つの論理的変更 +- **分割**: 関連性の低い変更は別コミットに分ける + +### フォーマット + +``` +: +``` + +### Type 一覧 + +- `feat`: 新機能追加 +- `fix`: バグ修正 +- `docs`: ドキュメント変更 +- `style`: フォーマット変更(機能影響なし) +- `refactor`: リファクタリング +- `test`: テスト追加・修正 +- `chore`: その他(依存関係更新など) + +### 良い例 + +```bash +feat: add MinIO client to API container +fix: correct GraphQL field names to camelCase +refactor: simplify JSON escaping logic +docs: update README with seed script usage +``` + +### 避けるべき例 + +```bash +❌ fix bug # 何のバグか不明 +❌ update file # どのファイルの何を更新したか不明 +❌ wip / temp # 作業途中・一時的なコミット +❌ いろいろ修正 # 複数変更の混在 +``` + +### ブランチ戦略 + +- **新機能**: `feature/issue○○/title[簡単な説明]` +- **修正**: `fix/issue○○/title[簡単な説明]` +- **ベースブランチ**: `develop` (通常) / `main` (リリース) + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.github/instructions/cursor__cursor-project-guide.instructions.md b/.github/instructions/cursor__cursor-project-guide.instructions.md new file mode 100644 index 00000000..413e87ef --- /dev/null +++ b/.github/instructions/cursor__cursor-project-guide.instructions.md @@ -0,0 +1,71 @@ +--- +description: "" +applyTo: "**" +--- + +# Project Development Guide + +## プロジェクト概要 + +- **プロジェクト名**: Nutfes-Bingo +- **アーキテクチャ**: Docker Compose (api/view-user/view-admin/db/minio) +- **バックエンド**: Hasura + PostgreSQL +- **フロントエンド**: Next.js + Apollo Client + Recoil +- **認証**: NextAuth + Keycloak +- **ストレージ**: MinIO + +## 🛠️ 開発環境・コマンド + +### 環境構築 + +```bash +make run # 開発環境起動 (Docker Compose + DB適用) +make down # 環境停止 +make run-prod # 本番環境起動 +``` + +### ビルド・テスト・開発 + +```bash +# view-user / view-admin 共通 +npm run dev # 開発サーバー起動 +npm run build # 本番ビルド +npm run lint # ESLint実行 +npm run lint:fix # ESLint自動修正 +npm run codegen # GraphQL型生成 + +# Makefile経由 +make codegen # 両アプリの型生成 +make db-apply # Hasura メタデータ・マイグレーション適用 +``` + +## 📝 コードスタイル・規約 + +### 技術スタック + +- **言語**: TypeScript + Next.js +- **フォーマット**: Prettier + ESLint (next/core-web-vitals, prettier, import/warnings) +- **スタイル**: CSS Modules (`*.module.css`) + +### 命名規則 + +- **React Component**: PascalCase +- **GraphQL フィールド**: camelCase +- **ファイル名**: kebab-case または PascalCase (コンポーネント) + +### Import ルール + +- **エイリアス**: `@/*` を使用 +- **共通コンポーネント**: `@/components/common` から import +- **順序**: 外部ライブラリ → 内部ライブラリ → 相対パス + +### エラーハンドリング + +- **基本**: `try-catch` パターン +- **フォーム**: `react-hook-form` バリデーション +- **GraphQL**: Apollo Client エラーハンドリング + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.github/instructions/cursor__cursor-pull-request-rules.instructions.md b/.github/instructions/cursor__cursor-pull-request-rules.instructions.md new file mode 100644 index 00000000..03de6493 --- /dev/null +++ b/.github/instructions/cursor__cursor-pull-request-rules.instructions.md @@ -0,0 +1,69 @@ +--- +description: "" +applyTo: "**" +--- + +# Pull Request Rules + +## PR 作成前チェックリスト + +- [ ] ブランチがリモートにプッシュされている +- [ ] コミットが適切に分割されている +- [ ] 動作確認が完了している +- [ ] 関連 Issue が存在する場合は番号を確認 + +## PR 作成手順 + +**重要**: GitHub MCP を使用して PR を作成すること(`gh`コマンド禁止) + +### GitHub MCP 使用例 + +```bash +mcp_github-remote_create_pull_request { + "owner": "hnhk", + "repo": "nutfes-Bingo", + "title": "feat: 既存の賞品画像を用いたシードデータ機能の実装", + "head": "feature/issue123/seed-data", + "base": "develop", + "body": "# 対応Issue\n\n- resolve #123\n\n# 概要\n\n既存の賞品画像を活用したシードデータ機能を実装\n\n..." +} +``` + +## PR タイトル形式 + +``` +: +``` + +## PR 説明文構成 + +**必須**: `.github/pull_request_template.md` に従って記載 + +1. **対応 Issue**: `- resolve #<番号>` +2. **概要**: 開発内容の簡潔な説明 +3. **実装詳細**: + - 追加したファイル + - 変更したファイル + - 削除したファイル + - 主な変更内容 +4. **画面スクリーンショット等**: 必要に応じて +5. **テスト項目**: チェックリスト形式 +6. **備考**: 困った箇所・質問など + +## 必須事項 + +- **GitHub MCP 使用**: `gh`コマンドではなく MCP を使用して PR 作成 +- **テンプレート準拠**: `.github/pull_request_template.md`の構成を厳守 +- **ファイルパス明記**: 実装詳細には具体的なファイルパスを記載 +- **機能単位コミット**: 1 コミット 1 機能の原則を守る + +## 推奨事項 + +- **事前動作確認**: PR 作成前に必ず動作テストを実施 +- **コードレビュー**: 自分でもコードを一度見直してから PR 作成 +- **継続的更新**: 開発中も定期的にコミット・プッシュ + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.roo/rules/cursor__cursor-commit-message-rules.md b/.roo/rules/cursor__cursor-commit-message-rules.md new file mode 100644 index 00000000..7e23bd20 --- /dev/null +++ b/.roo/rules/cursor__cursor-commit-message-rules.md @@ -0,0 +1,54 @@ +# Git Commit Message Rules + +## コミットルール + +### 基本原則 + +- **1 行完結**: 改行なしで 50 文字以内 +- **機能単位**: 1 コミット = 1 つの論理的変更 +- **分割**: 関連性の低い変更は別コミットに分ける + +### フォーマット + +``` +: +``` + +### Type 一覧 + +- `feat`: 新機能追加 +- `fix`: バグ修正 +- `docs`: ドキュメント変更 +- `style`: フォーマット変更(機能影響なし) +- `refactor`: リファクタリング +- `test`: テスト追加・修正 +- `chore`: その他(依存関係更新など) + +### 良い例 + +```bash +feat: add MinIO client to API container +fix: correct GraphQL field names to camelCase +refactor: simplify JSON escaping logic +docs: update README with seed script usage +``` + +### 避けるべき例 + +```bash +❌ fix bug # 何のバグか不明 +❌ update file # どのファイルの何を更新したか不明 +❌ wip / temp # 作業途中・一時的なコミット +❌ いろいろ修正 # 複数変更の混在 +``` + +### ブランチ戦略 + +- **新機能**: `feature/issue○○/title[簡単な説明]` +- **修正**: `fix/issue○○/title[簡単な説明]` +- **ベースブランチ**: `develop` (通常) / `main` (リリース) + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.roo/rules/cursor__cursor-project-guide.md b/.roo/rules/cursor__cursor-project-guide.md new file mode 100644 index 00000000..b5729d44 --- /dev/null +++ b/.roo/rules/cursor__cursor-project-guide.md @@ -0,0 +1,66 @@ +# Project Development Guide + +## プロジェクト概要 + +- **プロジェクト名**: Nutfes-Bingo +- **アーキテクチャ**: Docker Compose (api/view-user/view-admin/db/minio) +- **バックエンド**: Hasura + PostgreSQL +- **フロントエンド**: Next.js + Apollo Client + Recoil +- **認証**: NextAuth + Keycloak +- **ストレージ**: MinIO + +## 🛠️ 開発環境・コマンド + +### 環境構築 + +```bash +make run # 開発環境起動 (Docker Compose + DB適用) +make down # 環境停止 +make run-prod # 本番環境起動 +``` + +### ビルド・テスト・開発 + +```bash +# view-user / view-admin 共通 +npm run dev # 開発サーバー起動 +npm run build # 本番ビルド +npm run lint # ESLint実行 +npm run lint:fix # ESLint自動修正 +npm run codegen # GraphQL型生成 + +# Makefile経由 +make codegen # 両アプリの型生成 +make db-apply # Hasura メタデータ・マイグレーション適用 +``` + +## 📝 コードスタイル・規約 + +### 技術スタック + +- **言語**: TypeScript + Next.js +- **フォーマット**: Prettier + ESLint (next/core-web-vitals, prettier, import/warnings) +- **スタイル**: CSS Modules (`*.module.css`) + +### 命名規則 + +- **React Component**: PascalCase +- **GraphQL フィールド**: camelCase +- **ファイル名**: kebab-case または PascalCase (コンポーネント) + +### Import ルール + +- **エイリアス**: `@/*` を使用 +- **共通コンポーネント**: `@/components/common` から import +- **順序**: 外部ライブラリ → 内部ライブラリ → 相対パス + +### エラーハンドリング + +- **基本**: `try-catch` パターン +- **フォーム**: `react-hook-form` バリデーション +- **GraphQL**: Apollo Client エラーハンドリング + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/.roo/rules/cursor__cursor-pull-request-rules.md b/.roo/rules/cursor__cursor-pull-request-rules.md new file mode 100644 index 00000000..d13462ec --- /dev/null +++ b/.roo/rules/cursor__cursor-pull-request-rules.md @@ -0,0 +1,64 @@ +# Pull Request Rules + +## PR 作成前チェックリスト + +- [ ] ブランチがリモートにプッシュされている +- [ ] コミットが適切に分割されている +- [ ] 動作確認が完了している +- [ ] 関連 Issue が存在する場合は番号を確認 + +## PR 作成手順 + +**重要**: GitHub MCP を使用して PR を作成すること(`gh`コマンド禁止) + +### GitHub MCP 使用例 + +```bash +mcp_github-remote_create_pull_request { + "owner": "hnhk", + "repo": "nutfes-Bingo", + "title": "feat: 既存の賞品画像を用いたシードデータ機能の実装", + "head": "feature/issue123/seed-data", + "base": "develop", + "body": "# 対応Issue\n\n- resolve #123\n\n# 概要\n\n既存の賞品画像を活用したシードデータ機能を実装\n\n..." +} +``` + +## PR タイトル形式 + +``` +: +``` + +## PR 説明文構成 + +**必須**: `.github/pull_request_template.md` に従って記載 + +1. **対応 Issue**: `- resolve #<番号>` +2. **概要**: 開発内容の簡潔な説明 +3. **実装詳細**: + - 追加したファイル + - 変更したファイル + - 削除したファイル + - 主な変更内容 +4. **画面スクリーンショット等**: 必要に応じて +5. **テスト項目**: チェックリスト形式 +6. **備考**: 困った箇所・質問など + +## 必須事項 + +- **GitHub MCP 使用**: `gh`コマンドではなく MCP を使用して PR 作成 +- **テンプレート準拠**: `.github/pull_request_template.md`の構成を厳守 +- **ファイルパス明記**: 実装詳細には具体的なファイルパスを記載 +- **機能単位コミット**: 1 コミット 1 機能の原則を守る + +## 推奨事項 + +- **事前動作確認**: PR 作成前に必ず動作テストを実施 +- **コードレビュー**: 自分でもコードを一度見直してから PR 作成 +- **継続的更新**: 開発中も定期的にコミット・プッシュ + description: + globs: + alwaysApply: false + +--- \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..1fa12ce4 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +Please also reference the following documents as needed: + +@.claude/memories/cursor__cursor-commit-message-rules.md +@.claude/memories/cursor__cursor-project-guide.md +@.claude/memories/cursor__cursor-pull-request-rules.md diff --git a/GEMINI.md b/GEMINI.md new file mode 100644 index 00000000..75e6cefb --- /dev/null +++ b/GEMINI.md @@ -0,0 +1,8 @@ +Please also reference the following documents as needed: + +| Document | Description | File Patterns | +|----------|-------------|---------------| +| @.gemini/memories/cursor__cursor-commit-message-rules.md | | - | +| @.gemini/memories/cursor__cursor-project-guide.md | | - | +| @.gemini/memories/cursor__cursor-pull-request-rules.md | | - | + diff --git a/PROJECT_GUIDE.md b/PROJECT_GUIDE.md new file mode 100644 index 00000000..2a9f44b2 --- /dev/null +++ b/PROJECT_GUIDE.md @@ -0,0 +1,42 @@ +# Nutfes-Bingo 開発ガイド + +## 🚀 クイックスタート + +```bash +make run # 開発環境起動 (Docker Compose + DB適用) +make down # 環境停止 +make codegen # GraphQL型生成 +make db-apply # Hasura メタデータ・マイグレーション適用 +``` + +## 🛠️ ビルド・テスト + +```bash +# view-user / view-admin 共通 +npm run dev # 開発サーバー起動 +npm run build # 本番ビルド +npm run lint # ESLint実行 +npm run lint:fix # ESLint自動修正 +``` + +## 📝 コードスタイル + +- **言語**: TypeScript + Next.js +- **フォーマット**: Prettier + ESLint +- **スタイル**: CSS Modules (`*.module.css`) +- **Import**: `@/*` エイリアス使用、外部 → 内部 → 相対パスの順 +- **命名**: React Component は PascalCase、ファイルは kebab-case + +## 🏗️ アーキテクチャ + +- **構成**: Docker Compose (api/view-user/view-admin/db/minio) +- **バックエンド**: Hasura + PostgreSQL + MinIO +- **フロントエンド**: Next.js + Apollo Client + Recoil + NextAuth + +## 📋 開発フロー + +1. 機能ブランチ作成 → 開発 → コミット([commit-message-rules.mdc](/.cursor/rules/commit-message-rules.mdc) 準拠) +2. プルリクエスト作成([pull-request-rules.mdc](/.cursor/rules/pull-request-rules.mdc) 準拠) +3. レビュー → マージ + +詳細は [.cursor/rules/project-guide.mdc](/.cursor/rules/project-guide.mdc) を参照