📚 coffee-note-develop 設計ドキュメント
ハンドドリップ抽出の記録・振り返りツール。「この豆に一番合う抽出はどれか」を振り返るための個人ツールとして開発し、将来的に他人にも開放可能なアーキテクチャで設計する。
📂 ドキュメント構成
何を作るか(プロジェクト概要、機能要件、UX/運用要件)
どんな画面があるか(Phase 1 ルート一覧、ナビゲーション規約、Phase 2 候補)
どう構成するか(技術スタック、データモデル、ディレクトリ構造、認証構成、Phase 2 マスタ)
どう書くか(Server Action / Form / Pagination / 主キー等のコーディング規約)
どう運用するか(ブランチ / Issue / Commit / Migration / CI / 監視 / バックアップ)
❓ 未確定事項(実装時に判断)
| 項目 | 関連 doc | 備考 |
|---|---|---|
マスタの name_ja カラム |
architecture.md §5.3 | Phase 2 から持つか、i18n 対応時に追加するか |
| Seed プリセットの粒度 | architecture.md §5.8 | country level のみ vs 地域名まで |
| ユーザー追加マスタの公式昇格 | operations.md | 運用上の管理ツール(オプション) |
| 写真ストレージ | architecture.md | Vercel Blob 想定、Phase 2 で正式決定 |
| Brew 削除時の Pour 扱い | architecture.md §2.2 | DB は CASCADE、アプリ層は Brew.deleted_at で論理的に隠す |
| Cookie / セッション戦略 | architecture.md §4 | better-auth のデフォルト前提、本番デプロイ時に再確認 |
| エラートラッキング | operations.md §1 | Phase 2 で Sentry 等を検討 |
| レート制限の具体閾値 | architecture.md §4 | Upstash Ratelimit の slidingWindow の数値、実装時に決定 |
| Brew timer の表示精度 | requirements.md §2.2.1 | 1 秒単位 vs 0.1 秒単位、実装時に決定 |
| 保存後の遷移先 | requirements.md §2.2 | Brew 詳細 vs Bean 詳細、実装時に決定 |
📋 実装着手前の context7 確認事項
architecture.md §1.3 の方針に従い、実装直前に最新仕様を確認:
- Biome
noRestrictedImports: 自モジュール内 import の除外パターン表現力 - better-auth: Drizzle adapter による schema 生成先パス指定、
modules/auth/schema.tsへの出力設定 - Drizzle ORM: relations 別ファイル分離パターン(
shared/db/relations.ts) - Next.js 15 / RSC: barrel から
'use server'と'use client'を併存 export した時の挙動