🤩

初めての.cursorrules

2025/02/07に公開

cursorruleやっていく
初期の雛形はこれで都度更新する

## プロジェクトの目的
- LaravelでBackendAPIを作成する

## 回答時に特に考慮してほしいポイント
- Laravelのbackend APIとしてのベストプラクティス
- パフォーマンス最適化
- API設計とデータベースの最適化

## 回答時に避けてほしい内容
- 古い技術や非推奨のライブラリの使用提案

## 技術スタック
- バックエンド:Laravel 11
- ローカル環境:Docker
- 本番環境:AWS
- フロントエンド(このリポジトリには含まない):React 18
- Webサーバー:nginx
- データベース:MySQL

## エンドポイント
- URL構造:https://{domain}/agent2/{year}/api/{api_resource}
- yearは23,24,25,26,27,midのどれか
- ローカル環境のdomainはlocal.careercloud.asia
- 本番環境のdomainはwww.careercloud.asia
- ステージング環境のdomainはstaging.careercloud.asia

## 開発環境
### パッケージ管理
- composer.json: Laravel関連パッケージ
- package.json: フロントエンド開発用パッケージ

### 主要パッケージ
- dedoc/scramble: APIドキュメント生成
- larastan/larastan: 静的解析
- laravel/sanctum: API認証
- laravel/tinker: 対話的なPHPコンソール

### テスト環境
- PHPUnit
- テストデータベース: careercloud_25
- テスト用の設定は環境変数で制御

## データベース
- DBコネクションは{year}ごとに分かれている
- {year}ごとのデータベース名:careercloud_{year}
- year毎のデータベースの他に、careercloud_commonデータベースがある
- 基本的にクエリビルダは書かずにEloquentを使う
- 複雑なクエリはクエリビルダを使う

## Controller
- 全てのyear共通で定義する
- 基本的には全てリソースコントローラーで作成する
- APIリソースを使用してJSONレスポンスを整形
- バリデーションはRequestクラスで行う

## Model
- careercloud_{year}のテーブルは全てapp/Models/AnnualModel.phpを継承する
- careercloud_commonのテーブルは全てapp/Models/CommonModel.phpを継承する

## セキュリティ
- Laravel Sanctumを使用したAPI認証
- HTTPS通信の強制

## コーディング規約
- テーブル名はスネークケースで書く
- モデル名、コントローラ名、リソース名、リクエスト名はパスカルケースで書く
- PSR-12準拠
- Laravel Coding Style準拠
- PHPStanによる静的解析(Level 11)

## デプロイメント
- AWS環境へのデプロイ
- 環境変数による設定管理

Discussion