Project Plateau
Project Plateau: four glass plates, one living valley, and the road back to camp.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
オリジナルボードゲームをブラウザで公開・プレイするサイト
Loading the full README. The saved excerpt is shown below.
ボドパッ! ブラウザで今すぐ遊べるボードゲームサイト。オリジナルと、商標を使わない伝統的なボードゲームを公開・プレイします。 ブラウザで http://localhost:3000 を開く。 • 本番: https://bodopa.com(正規 URL。DNS・Vercel・Resend・Search Console は docs/production-domain.md) • GitHub: https://github.com/YutaNakachi/BoardPlayground • Vercel: このリポジトリをインポート(Framework Preset は Next.js が自動検出) .env.example をコピーして .env.local を作成し、Supabase の値を設定します。 未設定の場合はローカルプレイのみ動作し、プレイ回数・ランキング・オンライン対戦は無効化されます。Read the full README ↗
ブラウザで今すぐ遊べるボードゲームサイト。オリジナルと、商標を使わない伝統的なボードゲームを公開・プレイします。
BoardPlayground/
├── app/ # Next.js App Router
│ ├── page.tsx # トップ(ゲーム一覧)
│ ├── about/ # 制作代行(ココナラ Phase 2)
│ ├── games/[slug]/ # ルール・詳細
│ └── play/[slug]/ # プレイ画面
├── components/ # UI・ゲームコンポーネント
├── lib/games.ts # ゲーム一覧(メタデータ)
├── lib/play-registry.ts # slug → プレイコンポーネント
├── lib/game-engine/ # シャッフル・勝者判定など共通処理
├── games/ # ルール仕様(Markdown)
└── docs/coconala/ # ココナラ出品用テンプレート
cd C:\Users\yutan\Projects\BoardPlayground
npm install
npm run dev
ブラウザで http://localhost:3000 を開く。
.env.example をコピーして .env.local を作成し、Supabase の値を設定します。
| 変数 | 用途 |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase プロジェクト URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | クライアント(Realtime)用 |
SUPABASE_SERVICE_ROLE_KEY | API Route(統計・部屋)用 |
未設定の場合はローカルプレイのみ動作し、プレイ回数・ランキング・オンライン対戦は無効化されます。
SUPABASE_DB_URL を設定して npm run db:migratesupabase/migrations/ 内の SQL を番号順に実行npm run db:check / 007_explicit_grants.sql).env.example の3変数を追加(Production / Preview / Development すべて)https://<your-domain>/api/status が { "stats": true, "online": true } を返すこと未設定のときはローカルプレイのみ利用でき、オンラインタブとプレイ回数は非表示になります。
Cloud Agent からマイグレーションを実行する設定: docs/cloud-agent-supabase.md
お問い合わせフォームを有効にするには、.env.example の Resend 関連変数を設定します。
| 変数 | 用途 |
|---|---|
RESEND_API_KEY | Resend API キー(サーバー専用) |
RESEND_FROM_EMAIL | Resend で検証済みの送信元アドレス |
CONTACT_TO_EMAIL | 問い合わせの受信先(サーバー専用・リポジトリにコミットしない) |
Vercel の Settings → Environment Variables(Production)に上記を追加し、Redeploy してください。未設定の場合は /contact で受付不可の表示になります。RESEND_FROM_EMAIL は Resend で認証したドメインのアドレス(例: [email protected])。CONTACT_TO_EMAIL は Secret にし、README や PR に書かない。
ドメイン認証・本番切り替えの手順: docs/production-domain.md。
送信者向けの受付確認メールは、運営宛送信成功後に lib/contact/auto-reply.ts の文面で自動送信する(From は RESEND_FROM_EMAIL)。
掲載するのはブラウザ実装済みのゲーム(オンライン部屋未対応のため、手札秘匿などは順次追加予定)。
/play/nebula-link) — オリジナル、2〜4人、約12分/play/reversi) — クラシック、2人、約10分/play/mancala) — クラシック、2人、約8分/play/gomoku) — クラシック、2人、約8分/play/checkers) — クラシック、2人、約10分/play/nine-mens-morris) — クラシック、2人、約12分同画面交代プレイ。リバーシ・三目並べ・五目並べ・チェッカーはオンライン対戦(部屋コード)にも対応。
プレイ回数はゲーム開始時にカウントされ、/ranking でランキングを確認できます。
lib/games.ts にメタデータを追加games/{slug}/rules.md にルール仕様components/play/{Name}Game.tsx を実装(専用実装。共通化は同じ処理が3本目で必要になったとき)lib/play-registry.ts でコンポーネントを紐付けAGENTS.md)listed: false で作り、掲載はオーナー判断