実装指示書

Viet Learn - ベトナム語フラッシュカード学習アプリの実装仕様

概要

背景: ホーチミン在住の日本人が日常で使えるベトナム語フレーズを手軽に学べるアプリ。

目的: プロトタイプデプロイフローのデモ用サンプルアプリとして作成。 Claude Code → GitHub → Coolify の一気通貫デプロイを実演する。

ターゲット: ベトナムに住む/旅行する日本語話者。ベトナム語初学者。

成功基準: カテゴリ選択 → クイズ → 結果表示の基本フローが問題なく動作すること。

画面構成

パス画面名説明
/トップ4カテゴリから選択
/quiz/[category]クイズフラッシュカード + 4択
/result結果スコア表示 + リトライ
/spec仕様書このページ
/qaQAテストチェックリスト

画面遷移:

トップ(/) ──カテゴリ選択──> クイズ(/quiz/[cat])
                              │
                         全問完了
                              │
                              v
                         結果(/result)
                              │
                    ┌─────────┴─────────┐
                    v                   v
              もう一度挑戦          カテゴリ選択
              /quiz/[cat]              /

インタラクション仕様

要素トリガー変化duration
カテゴリカードhoverborder: border → border-primary, shadow追加150ms ease
選択肢ボタンclick正解: green bg / 不正解: red bg即時
プログレスバー問題進行幅が増加300ms ease
スコア円グラフページ表示stroke-dashoffset アニメーション1000ms ease

デザイントークン

Teal(ティール)をプライマリカラーとして使用:

--color-primary#14B8A6
--color-primary-hover#0D9488
--color-primary-subtle#CCFBF1
--color-primary-tint#F0FDFA
--color-positive#55B762
--color-negative#D24C3E
--color-bg#FFFFFF
--color-text#191919
--color-text-sub#7D7D7D
--color-border#E5E5E5

レスポンシブ挙動

モバイルファースト設計。max-width: 448px (max-w-md) でセンタリング。

エッジケース / 状態

不正なカテゴリID: 「カテゴリが見つかりません」メッセージ表示
全問正解: パーフェクト! + 🎉 表示
全問不正解: 「もう一度挑戦しよう!」 + 💪 表示
ブラウザバック: クイズ中にブラウザバックするとトップに戻る(状態リセット)

実装メモ