mobile-conventionslisted
Install: claude install-skill ryokkon624/scrum-agent-base
# Mobile Conventions
hw-hub-mobileの設計規約・実装方針。
特定の実装場面でだけ必要になる詳細パターンは `patterns/` 配下に分離している。本文中のリンク先は、該当する実装をするときだけ読むこと。
---
## 1. アーキテクチャ(feature-first + 簡略 Clean Architecture)
```
presentation/ (Page・Notifier・State)
↓
data/ (Repository interface + impl・API・モデル)
↓
core/network/ (Dio・例外・インターセプター)
```
- **domain 層は省略**する。Repository interface は `data/` に同居させる
- UseCase は設けない。Notifier が直接 Repository を呼ぶ
- 複数機能をまたぐビジネスロジックが必要になった場合のみ `domain/usecase/` を切り出す
- `features/shell` はナビゲーションシェル(BottomNavigationBar・世帯切替UI)であり、ドメイン機能ではない
### 依存方向ルール
- Page は Notifier を呼ぶ。Repository を直接呼ばない
- Notifier は Repository interface に依存する。実装クラスには依存しない
- **Notifier 内で `Dio` を直接使用してはならない**。必ず `Repository` 経由で API を呼ぶこと(`Notifier → Repository → Api` の依存方向を守ること)
- `core/` 配下は全機能から参照できる共通基盤
---
## 2. ディレクトリ構成
```
lib/
├── main.dart
├── app_router.dart # GoRouter 全ルート定義
├── core/ # 全機能共通基盤
│ ├── auth/ # 認証状態管理(AuthNotifier・TokenStorage)
│ ├── config/ # 環境設定(AppConfig・ベースURL)
│ ├── di/ # Provider 定義(DI配線)
│ ├── household/ # 世帯状態管理
│ ├── models/ # 共有ドメインモデル
│ ├── network/ # Dio クライアント・例外定義・インターセプター
│ ├── storage/ # ストレージキー定数
│ ├── theme/ # テーマ・カラー・スペーシング定数
│ └── ui/ # 共通UIコンポーネント(SnackBar・Dialog)
└── features/
└── {feature}/
├── {feature}_providers.dart # Provider 定義