-
Notifications
You must be signed in to change notification settings - Fork 0
/
.cursorrules
51 lines (40 loc) · 4.91 KB
/
.cursorrules
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
### コードスタイルと構造
- 簡潔で効率的なソースコードを書きます。
- ソースコードが読みやすく、メンテナンスしやすいソースコードを心がけ、正確な例を示します。
- コードの重複を避ける:ウィジェットや関数を再利用可能なコンポーネントにモジュール化します。
- 説明的な変数名を使用する:isLoading、hasErrorのような補助動詞を用いた名前を使います。
### /lib以下のディレクトリ構造
- /lib/models/:データモデルや型定義(Model)
- /lib/viewmodels/:状態管理やビジネスロジック(ViewModel)
- /lib/views/widgets/:再利用可能なウィジェット(View)
- /lib/views/screens/:画面ごとのウィジェット(View)
- /lib/services/:APIコールやデータアクセスのためのサービスクラス
- /lib/utils/:ヘルパー関数や定数
### 命名規則
- ディレクトリとファイル:スネークケースを使用(例:auth_wizard.dart)。
- 変数名や関数名:キャメルケースを使用(例:lowerCamelCase)。
- クラス名や型名:パスカルケースを使用(例:UpperCamelCase)。
- ウィジェット:パスカルケースを使用し、ファイル名と一致させます(例:AuthWizardウィジェットはauth_wizard.dartに置く)。
### インポート
- dart:から始まるインポートを最初に配置します(インポートプレフィックスにはlowercase_with_underscoresを使う)。
- 次にサードパーティのパッケージ(package:)をインポートします。
- 最後に相対パスやプロジェクト内のファイルをインポートします。
### Dartの使用
- 型安全を活用する:すべてのコードで静的型付けを使用し、可能な限り型推論を活用します。
### UIとスタイリング
- Material ウィジェットを使用します。
- テーマを統一する:ThemeData を使用して一貫性のあるスタイルを適用します
### パフォーマンス最適化
- 状態が不要な場合は StatelessWidget を優先的に使用します。
- constコンストラクタを活用する:ウィジェットが不変である場合、const を使用してビルドを最適化します。
### 状態管理
- riverpodを使い、効率的な状態管理を実装します。
- ViewModel内で状態を管理し、Viewと連携させます。
### ソフトウェアアーキテクチャ
MVVM(Model View ViewModel)を使用します。
### 主要な規則
- コードの可読性を向上させるために、行の長さは80文字を超える行を避けます。
- すべてのフロー制御構造(if、for、whileなど)に中括弧 {} を使用します。
- コメントアウトは積極的に使い、コードの理解とメンテナンスに役立てます。
- シングルクォーテーションを使用し、ダブルクォーテーションの使用は避け、一貫性のある文字列リテラルを使用し可読性を高めます。
Tech Stack:Backend: Node.js with Express.jsDatabase: MongoDB with Mongoose ODMFrontend: React.js (for admin panel, if required)Authentication: JSON Web Tokens (JWT)Version Control: GitDeployment: Docker (optional)Precision in User Requirements:Strictly adhere to specified user flow and game rules.Strategy: Summarize the pick submission process and outline the API endpoint and business logic in pseudocode before coding.Strategic Planning with Pseudocode:Begin each feature with detailed pseudocode.Example: Provide pseudocode for the weekly scoring process, detailing steps from game result input to entry status updates.Code Quality:Ensure secure, efficient code following RESTful API best practices.Implement proper error handling and input validation.User Flow:Users browse available PoolsSubmit up to 3 Requests per PoolComplete payment for RequestsAdmin approves/rejects RequestsApproved Requests become EntriesEntry Management:Each user can have up to 3 Entries per PoolEntries are numbered 1, 2, 3Picks are made and tracked separately for each EntryPick Management:Users make Picks for each Entry separatelyPicks can be updated until deadline (game start or 1PM Sunday of the current week of the pick)Scoring and Ranking:Picks scored after games completeWin: Entry moves to next weekLoss: Entry eliminated from PoolEach Entry ranked separately in Pool standingsResults and Standings:Users view Picks/scores for each Entry separatelyPool standings show all Entries (multiple per User possible)Pool members can view all Picks after scoringKey Implementation Points:Limit Requests to 3 per User per PoolTrack Requests and Entries separately (numbered 1, 2, 3)Implement payment status tracking in Request modelCreate Entry only after admin approval and payment completionAdmin interface for managing and approving RequestsImplement state transitions (Request: pending -> approved -> Entry created)