コンテンツにスキップ

実装規約

トークン・認証

項目方針
セッション/リフレッシュトークン生成nanoid(暗号学的に安全な乱数ベース)
認証コード生成crypto.getRandomValues による暗号学的に安全な6桁数字
Cookie名__Host-session(Secure + Path=/ を強制する__Host-プレフィックス)

データベース

項目方針
タイムスタンプ型全テーブルで timestamptz(UTC保存)
主キーserial(auto increment)
ORMDrizzle

メール送信

項目方針
開発環境コンソールログ出力
本番環境外部メールサービス(TBD)
失敗時リトライせずクライアントにエラーを返す

データ管理

項目方針
期限切れデータ掃除1日1回のバッチ処理で auth_codes / sessions の期限切れレコードを削除

テスト

項目方針
テスト方針APIレベルのインテグレーションテスト(DB含む)
テストツールHonoのテストヘルパーを利用

コーディング指針 — 何をどこに書くか

成果物書くこと答える問い
コードHowどう動くか?命名・構造・フローで振る舞いを自明にする
テストWhat何をするか?期限切れトークンを拒否する のように振る舞いを日本語で宣言する
コミットログWhyなぜこの変更?トークン検証を修正: 30秒以上経過したトークンを拒否 (FR-003)
コードコメントWhy notなぜ素直にやらない?// キャッシュを使わないのはトークンローテーション時の競合を避けるため

テスト名・コミットメッセージ・コードコメントは 日本語 で書く(識別子は英語)。 詳細は .claude/skills/coding-guidelines/SKILL.md を参照。