Claude API を使用した AI チャットボットアプリケーション
- ✅ Claude Sonnet 4 による高品質な対話
- ✅ リアルタイムストリーミング表示
- ✅ Markdown & コードハイライト対応
- ✅ 会話履歴の保存・管理(MongoDB)
- ✅ レスポンシブデザイン
- ✅ ユーザー認証機能(NextAuth.js)
- ✅ 招待コード制ユーザー登録
- ✅ ユーザーごとの会話履歴管理
- ✅ Google Cloud Run へのデプロイ対応
- ✅ GitHub Actions による自動デプロイ(設定済み)
- フロントエンド: Next.js 15.5, React, TypeScript, Tailwind CSS
- バックエンド: Next.js API Routes
- AI: Claude API (Anthropic)
- データベース: MongoDB Atlas
- デプロイ: Google Cloud Run
- CI/CD: GitHub Actions
make initmake setup-env.env.local を編集して、以下を設定:
ANTHROPIC_API_KEY=your_claude_api_key_here
MONGODB_URI=your_mongodb_uri_here
# NextAuth Configuration
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret_here # openssl rand -base64 32 で生成
AUTH_SECRET=your_nextauth_secret_here # NEXTAUTH_SECRETと同じ値
ADMIN_EMAIL=admin@example.com
ADMIN_INVITE_CODE=INITIAL_INVITE_CODE認証システムの初期化とadminユーザーの作成:
npm run migrate:authマイグレーション完了後、以下の認証情報が利用可能になります:
- ユーザー名:
admin - パスワード:
admin123 - 招待コード:
INVITE_CODE_001,INVITE_CODE_002,INVITE_CODE_003
make devブラウザで http://localhost:3000 にアクセス
詳細は DEPLOY.md を参照
# 手動デプロイ
make gcp-deploy
# 環境変数の設定
make gcp-set-env詳細は GITHUB_ACTIONS.md を参照
# セットアップ
make github-actions-setup
# mainブランチへのプッシュで自動デプロイ
git push origin main
# デプロイしたサービスの削除(terminate)
# GitHub Actionsページから「Terminate Cloud Run Service」ワークフローを手動実行
# または
make gcp-terminatemake help # 全コマンドを表示make init- プロジェクトの初期化make dev- 開発サーバーを起動make build- 本番用ビルドmake lint- コードのリント実行
make docker-build- Docker イメージをビルドmake gcp-deploy- Cloud Run にデプロイmake gcp-terminate- Cloud Run サービスを削除make deploy-vercel- Vercel にデプロイ
make github-actions-setup- GitHub Actions 用の設定を一括実行
ai-chat/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/ # API Routes
│ │ ├── globals.css # グローバルスタイル
│ │ ├── layout.tsx # ルートレイアウト
│ │ └── page.tsx # ホームページ
│ ├── components/ # React コンポーネント
│ ├── lib/ # ユーティリティライブラリ
│ └── models/ # MongoDB モデル
├── .github/
│ └── workflows/ # GitHub Actions ワークフロー
├── public/ # 静的ファイル
├── Dockerfile # Docker 設定
├── Makefile # タスク定義
├── DEPLOY.md # デプロイ手順
└── GITHUB_ACTIONS.md # GitHub Actions セットアップ
| 変数名 | 説明 | 必須 |
|---|---|---|
ANTHROPIC_API_KEY |
Claude API キー | ✅ |
MONGODB_URI |
MongoDB 接続文字列 | ✅ |
NEXTAUTH_URL |
アプリケーションURL | ✅ |
NEXTAUTH_SECRET |
NextAuth シークレットキー (openssl rand -base64 32で生成) |
✅ |
AUTH_SECRET |
NextAuth v5 シークレットキー (NEXTAUTH_SECRETと同じ値) | ✅ |
ADMIN_EMAIL |
管理者のメールアドレス | ✅ |
ADMIN_INVITE_CODE |
初期招待コード | ✅ |
アプリケーションにアクセスすると、ログインページにリダイレクトされます。
初期認証情報:
- ユーザー名:
admin - パスワード:
admin123
新規ユーザーは招待コードが必要です:
- サインアップページにアクセス
- ユーザー名、パスワード、招待コードを入力
- 登録完了後、ログインページへリダイレクト
管理者は新しい招待コードを生成できます:
# POST /api/invite-codes
# 本文: { "expiresInDays": 7 } (オプション)- パスワードは bcrypt(cost factor 12)でハッシュ化
- 招待コードは crypto.randomBytes(16) で生成
- セッションは JWT で管理
- API認証: 全エンドポイントでユーザー検証
- データ分離: userIdによる完全なデータ隔離
MIT
プルリクエストを歓迎します!
問題が発生した場合は、Issues を作成してください。