microCMS と Google Sheets を核に、会員の行動を成果に変換する Next.js 15 製フルスタックアプリケーション。
- ASP案件を紹介する会員制アフィリエイトブログ/メディア。
- microCMS でコンテンツ管理、Google Sheets で会員・成果データを一元集計。
- 会員/ゲスト双方を識別してクリックをトラッキングし、成果と紐付け。
- 包括的SEO(OGP/JSON-LD/構造化データ)を全ページで適用。
- トラッキング精度: 会員IDまたは guest:UUID を id1 パラメータとして付与し、クリックログに記録。
- ハイブリッド成果反映: A8.net(手動CSV)+ AFB(API自動ポーリング)のハイブリッド運用を設計済み。
- 安全な認証: Next-Auth (CredentialsProvider) + bcrypt ハッシュ。メール認証/パスワードリセットも実装済み(Feature Flag付き)。
- CMS駆動の運用性: microCMS でブログ・案件・カテゴリを一元管理。CTA ショートコードで記事内に案件ボタンを自動挿入。
- UX最適化: App Router + Turbopack による高速開発体験、包括的な SEO メタデータ、レスポンシブデザイン。
Next.js 15 (App Router, RSC)
├─ microCMS (blogs / deals / categories)
├─ Google Sheets (会員リスト / クリックログ / 成果データ / 成果CSV_RAW)
├─ Next-Auth (CredentialsProvider)
└─ Resend (メール認証・パスワードリセット) *Feature Flag
- 三層データ構造: microCMS(コンテンツ) / Google Sheets(会員・成果ログ) / Next.js API(集約・変換)
- クリック計測:
/api/track-clickでログ記録 → ASPへリダイレクト(id1, id2付与) - 成果反映: GAS が日次処理し、会員マイページで閲覧
- 会員登録・ログイン・マイページ(履歴閲覧/情報更新)
- ブログ一覧・詳細・カテゴリページ(SEO対応・構造化データ)
- CTAショートコード (
[CTA:dealId]) で記事内に案件ボタンを自動生成 - 成果トラッキング(会員/ゲスト対応)、クリックログ保存、id1パラメータ付与
- メール認証/パスワードリセット(Resend、Feature Flag制御)
- Frontend/Backend: Next.js 15, React 19, TypeScript 5 (strict, noUncheckedIndexedAccess)
- Styling/UI: TailwindCSS 3.4, shadcn/ui, Radix UI primitives
- Content: microCMS v3.2.0
- Data/Tracking: Google Sheets API (googleapis v164.1.0)
- Auth: Next-Auth v4.24.11 (CredentialsProvider), bcryptjs v3.0.2
- Validation: zod v4.1.12
- Infra: Vercel(デプロイ対象)
git clone <repository-url>
cd win2
npm install
cp .env.example .env.local
# .env.local を必要な値で編集
npm run dev # http://localhost:3000# microCMS
MICROCMS_SERVICE_DOMAIN=xxx
MICROCMS_API_KEY=xxx
# Google Sheets
GOOGLE_SHEETS_CLIENT_EMAIL=xxx
GOOGLE_SHEETS_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
GOOGLE_SHEETS_SPREADSHEET_ID=xxx
# Auth / App
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=generate-with-openssl
NEXT_PUBLIC_APP_URL=http://localhost:3000その他の変数は .env.example を参照。
- 開発:
npm run dev - Lint:
npm run lint - 型チェック:
npx tsc --noEmit - 本番ビルド:
npm run build→npm run start
app/ # App Router(ページ・API)
components/ # UI/レイアウト/ブログ・CTAなど
lib/ # microCMS/Sheets/Auth/Validation
docs/ # 仕様・ガイド・運用ドキュメント
public/ogp.jpg # カバー画像 (OGP)
/api/track-click: クリックログ記録+ASPリダイレクトURL生成(id1=id, id2=eventId 付与)/api/register: 会員登録(Google Sheets 書き込み)/api/members/me: 会員情報取得/更新/api/auth/[...nextauth]: 認証・セッション管理/api/verify-email,/api/reset-password: メール認証・パスワードリセット(Feature Flag)
- パスワードは bcrypt でハッシュ化(salt rounds: 10)
- セッションは Next-Auth 管理(HttpOnly/Secure cookie)
- .env* はコミット禁止
- GAS は 3:10 JST に日次実行(成果CSV_RAW → 成果データ)
- 案件一覧ページ(会員限定フィルタリング)
- 詳細検索(ブログ・案件横断)
- 通知設定、プロフィール編集
- Lighthouse 90+ 最適化
docs/index.md— ドキュメント索引docs/specs/spec.md— 要件定義docs/guides/cta-technical-guide.md— CTA実装詳細docs/seo-implementation.md— SEO/OGP/構造化データdocs/operations/— A8/AFB ハイブリッド運用手順CLAUDE.md— 開発者向けガイド
- 本プロジェクトはプライベート利用を想定しています。
- ご質問・ご提案はプロジェクトオーナーまで。
