📚 coffee-note-develop 設計ドキュメント

📅 最終更新: 2026-05-13
🚧 ステータス: 初版(要件定義・技術選定・実装規約確定、実装前)

ハンドドリップ抽出の記録・振り返りツール。「この豆に一番合う抽出はどれか」を振り返るための個人ツールとして開発し、将来的に他人にも開放可能なアーキテクチャで設計する。


📂 ドキュメント構成

📋 requirements.md
何を作るか(プロジェクト概要、機能要件、UX/運用要件)
🗺️ sitemap.md
どんな画面があるか(Phase 1 ルート一覧、ナビゲーション規約、Phase 2 候補)
🏗️ architecture.md
どう構成するか(技術スタック、データモデル、ディレクトリ構造、認証構成、Phase 2 マスタ)
📐 conventions.md
どう書くか(Server Action / Form / Pagination / 主キー等のコーディング規約)
⚙️ operations.md
どう運用するか(ブランチ / 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 の方針に従い、実装直前に最新仕様を確認:

  1. Biome noRestrictedImports: 自モジュール内 import の除外パターン表現力
  2. better-auth: Drizzle adapter による schema 生成先パス指定、modules/auth/schema.ts への出力設定
  3. Drizzle ORM: relations 別ファイル分離パターン(shared/db/relations.ts
  4. Next.js 15 / RSC: barrel から 'use server''use client' を併存 export した時の挙動