Next.js (App Router) で構築されたポッドキャストプレイヤー兼コミュニティアプリです。
- ポッドキャスト購読・エピソード再生・再生履歴
- ブックマーク / プレイリスト / メモ / ダウンロード
- ユーザー認証(NextAuth: Credentials / Google / GitHub)
- フォロー・投稿・コメント・リアクションなどソーシャル機能
- Stripe による有料プラン(サブスクリプション)
| カテゴリ | 採用技術 |
|---|---|
| フレームワーク | Next.js 16 (App Router) / React 19 / TypeScript 5 |
| スタイル | Tailwind CSS 4 / shadcn-ui (Radix UI) / lucide-react |
| 状態管理 | Zustand / TanStack Query |
| フォーム / 検証 | React Hook Form / Zod |
| 認証 | NextAuth (Auth.js) v5 + Prisma Adapter |
| DB / ORM | Prisma 6 (開発: SQLite / 本番想定: PostgreSQL) |
| 決済 | Stripe |
| メール | Nodemailer (SMTP) |
| ロギング | pino / pino-pretty |
| テスト | Vitest / Testing Library / Playwright / MSW |
| 品質 | ESLint / Prettier |
.
├─ prisma/ # Prisma schema / マイグレーション / dev.db
├─ public/ # 静的アセット
├─ src/
│ ├─ app/ # App Router のルート(pages, layouts, route handlers)
│ ├─ components/ # 共通 UI コンポーネント(shadcn-ui ベース)
│ ├─ features/ # 機能単位のモジュール (auth/podcast/library/social など)
│ ├─ hooks/ # 共有 React Hooks
│ ├─ lib/ # ユーティリティ / クライアント / 設定
│ ├─ tests/ # テストユーティリティ
│ ├─ types/ # 共有型定義
│ └─ middleware.ts # ルート保護等のミドルウェア
├─ docs/
│ ├─ usages/ # 利用手順(ローカルセットアップ等)
│ └─ ai-dev-os/ # 開発ガイドライン (AI DEV OS)
├─ Dockerfile
└─ next.config.ts
# 1. 依存をインストール(postinstall で prisma generate が走ります)
npm ci
# 2. 環境変数を用意
cp .env.example .env.local
# 必要に応じて NEXTAUTH_SECRET などを設定
# 3. データベース(SQLite)を初期化
npm run db:migrate:dev
# 4. 開発サーバーを起動
npm run devブラウザで http://localhost:3000 を開いてください。
詳細な手順・トラブルシューティングは docs/usages/local-setup.md を参照してください。
| スクリプト | 用途 |
|---|---|
npm run dev |
開発サーバーを起動 |
npm run build |
本番ビルド |
npm start |
本番モードで起動 |
npm run lint |
ESLint 実行 |
npm run format |
Prettier で整形 |
npm run format:check |
Prettier チェックのみ |
npm run test |
Vitest を watch モードで実行 |
npm run test:run |
Vitest を 1 回実行 |
npm run test:e2e |
Playwright で E2E テスト |
npm run analyze |
バンドルアナライザ付きでビルド |
npm run db:migrate:dev |
開発用マイグレーション + Prisma Client 再生成 |
npm run db:migrate:deploy |
本番マイグレーション適用 |
npm run db:migrate:status |
マイグレーション状態を表示 |
.env.example を雛形として .env.local にコピーして利用してください。
ローカル開発で必須の項目は以下の通りです。
NODE_ENV—developmentDATABASE_URL— 既定ではfile:./dev.db(SQLite)NEXTAUTH_SECRET—openssl rand -base64 32等で生成NEXTAUTH_URL/NEXT_PUBLIC_APP_URL— 既定ではhttp://localhost:3000
OAuth (Google/GitHub) / SMTP / Stripe を実際に使う機能を触るときのみ、対応する変数を設定してください。
docker build -t next-app-podcast .
docker run --rm -p 3000:3000 --env-file .env.local next-app-podcastヘルスチェックエンドポイントは /api/health です。
- docs/usages/local-setup.md — ローカル環境構築手順
- docs/completion-report.md — テストカバレッジ / canonical guard の状況
- docs/ai-dev-os/ — 開発ガイドライン