忘却曲線に基づいた最適なタイミングで、エンジニアが知識を"思い出せる"ようにする学習アプリ。
- フロントエンド: Next.js 15 (App Router), TypeScript, TailwindCSS
- ホスティング: Cloudflare Pages
- データベース: Cloudflare D1 (SQLite)
- ORM: Drizzle ORM
- 認証: Supabase Auth (Magic Link)
pnpm install- Supabase でプロジェクトを作成
- プロジェクト設定から API URL と Anon Key を取得
.env.development と .env.production に以下を設定:
NEXT_PUBLIC_SUPABASE_URL="https://your-project.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="your-anon-key"
OPENAI_API_KEY="your-openai-api-key"重要: Cloudflare
Pagesにデプロイする場合、機密情報(OPENAI_API_KEYなど)は.env.productionだけでは設定されません。以下のコマンドでCloudflare
Pagesのシークレットとして設定してください:
# 本番環境のシークレットを設定
pnpm wrangler pages secret put OPENAI_API_KEY --project-name=learning-curve-appプロンプトが表示されたら、APIキーを入力してください。
wrangler d1 create nextjs-d1-drizzle-cloudflare-pages作成された database_id を wrangler.toml に設定します。
# マイグレーションファイルの生成
pnpm db:generate
# ローカル環境にマイグレーション適用
pnpm db:migrate:dev
# 本番環境にマイグレーション適用
pnpm db:migrate:prodSupabase ダッシュボードで以下を設定:
-
Authentication > URL Configuration
- Redirect URLs に
http://localhost:3000/auth/callbackを追加(開発環境) - 本番環境の URL も追加
- Redirect URLs に
-
Authentication > Email Templates
- Magic Link のテンプレートを確認(必要に応じてカスタマイズ)
pnpm devpnpm pages:devpnpm pages:deploy- GitHub リポジトリに push
- Cloudflare Pages で GitHub リポジトリを連携
- ビルドコマンド:
pnpm pages:build - 環境変数を Cloudflare Pages の設定で追加
- ✅ Magic Link 認証
- ✅ カード(学習項目)の作成・編集・削除
- ✅ 忘却曲線に基づいたレビュー機能
- ✅ ダッシュボード(今日のレビュー数、全カード数など)
src/
├── app/ # Next.js App Router
│ ├── api/ # API Routes
│ ├── auth/ # 認証関連
│ ├── cards/ # カード管理画面
│ ├── home/ # ダッシュボード
│ ├── login/ # ログイン画面
│ └── review/ # レビュー画面
├── lib/ # ユーティリティ
│ ├── supabase/ # Supabase クライアント
│ └── spaced-repetition.ts # 記憶アルゴリズム
└── server/ # サーバーサイド
├── db/ # データベース設定
└── functions/ # サーバー関数
MIT