毎日の英訳課題をAIが自動生成・添削する英作文練習Webアプリ。
- Next.js 16 (App Router, TypeScript)
- PostgreSQL (Vercel Postgres / Neon) + Prisma 5
- NextAuth.js (Google OAuth)
- Google Gemini API (gemini-2.5-flash)
- Tailwind CSS
npm install.env.example をコピーして .env を作成し、各値を設定:
cp .env.example .envDATABASE_URL/DATABASE_URL_UNPOOLED-- PostgreSQL の接続文字列(Vercel Postgres では自動設定)NEXTAUTH_SECRET--openssl rand -base64 32で生成(NextAuth のセキュリティ用)ENCRYPTION_SECRET--openssl rand -base64 32で生成(ユーザーの Gemini API キー暗号化用)GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET-- Google OAuth
- https://console.cloud.google.com/ でプロジェクトを作成
- 「APIとサービス」→「認証情報」→「OAuth 2.0 クライアント ID を作成」
- アプリの種類: 「ウェブ アプリケーション」
- 承認済みリダイレクト URI:
http://localhost:3000/api/auth/callback/google - Client ID と Client Secret を
.envに設定
アプリ側では共有の API キーは使いません。ログイン後、設定(/settings)で各自が Google AI Studio で取得したキーを登録します。キーはサーバー上で暗号化して保存されます。
npx prisma db pushnpm run devhttp://localhost:3000 にアクセス。
git init && git add . && git commit -m "initial commit"
gh repo create english-composition-app --public --source=. --push- https://vercel.com/new でGitHubリポジトリをインポート
- Storage タブ → Postgres (Neon) を追加(無料枠: 0.5GB)
DATABASE_URLとDATABASE_URL_UNPOOLEDが自動で環境変数に設定される
Vercel ダッシュボードの Settings → Environment Variables に以下を設定:
NEXTAUTH_SECRET--openssl rand -base64 32で生成した値ENCRYPTION_SECRET--openssl rand -base64 32で生成した値NEXTAUTH_URL--https://<your-app>.vercel.appGOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET
Google Cloud Console で本番用のリダイレクト URI を追加:
https://<your-app>.vercel.app/api/auth/callback/google
npx prisma db pushデプロイ後、Vercel が自動でビルド・公開します。
- Googleアカウントでログイン
/settingsで Gemini API キーを登録(取得はこちら)/practiceで難易度の配分とトピックを選択- 「今日の課題を生成」でAIが課題を作成
- 各問に英訳を入力すると、AIが即時添削(修正文・フィードバック・スコア)
- 添削前後の差分がハイライト表示される
/historyで過去の回答を日付別に閲覧・復習(スコアでフィルタ可能)