3rd Place
PrompDojo
PrompDojo is a real-time multiplayer prompt battle where Gemini runs the entire game loop.
Core trick
Gemini generates a hidden target image, then scores player prompts by image-to-image similarity against it each round.
Description
PrompDojo is a real-time multiplayer prompt battle where Gemini runs the entire game loop.
In each round, Gemini creates a mystery target image. Players attempt to reverse-engineer the hidden prompt using text alone, and Gemini evaluates every submission based on visual similarity and scene alignment.
⚙️ What we built:
・Gemini as Game Master👑 — generates diverse target images each round
・Gemini as Creative Engine🧠 — transforms player prompts into challenge attempts
・Gemini as Judge🚩 — scores results and provides match/miss reasoning
・Gemini-powered Reveal💯 — reveals the original “correct” prompt at the end of each round
・Live competitive flow — timed rounds, instant rankings, and real-time multiplayer tension
Welcome to the Prompt Era, where creativity meets strategy, and prompt engineering isn’t just a skill — it’s your competitive edge.
README excerpt
# PrompDojo Prompt engineering meets party game. AI が作ったお題画像を見て、元のプロンプトを推理し、どれだけ近い画像を再生成できるかを競う対戦ゲームです。 ## What Changed - Firebase Auth / Firestore client / Storage client 依存を撤去 - 認証を匿名 session cookie に変更 - リアルタイム同期を lightweight snapshot polling に変更 - Gemini 呼び出しを `GEMINI_API_KEY` 前提に簡素化 - お題生成の固定 seed/pool を廃止し、Gemini が毎回お題仕様を生成 - `caption -> embedding -> cosine` を削除し、最終スコアを画像対画像評価だけで決定 - ゲームルールを `1ラウンド1回生成 / ヒントなし` に簡素化 - Storage 保存を `target.png` と `best.png` のみへ削減 - 状態保存を Firestore から Upstash Redis へ移行 - 画像保存を Google Cloud Storage から Vercel Blob へ移行 - cleanup を Google Cloud Scheduler から Vercel Cron へ移行 - 画像生成プロバイダをルーム単位で `Gemini` / `Flux (Vertex custom endpoint)` から切り替え可能に変更 - ルーム作成直後に `1ラウンド目` を先読み生成し、以後も常に `次の1ラウンド分` をバックグラウンドで準備するように変更 - 再プレイ時の round/image 再利用を避けるため、表示用 `roundIndex` と保存用 `roundId` を分離 ## Tech Stack - Next.js 16 (App Router, TypeScript) - Vercel - Upstash Redis - Vercel Blob - Neon Postgres - Gemini API (`@google/genai`) - Vertex AI custom endpoint (optional for Flux image generation) - Vercel Cron Jobs - Tailwind CSS - Vitest + Playwright ## Environment Variables Copy `.env.example` to `.env.local`. ```bash cp .env.example .env.local ``` Required values: - `SESSION_SECRET` - `GEMINI_API_KEY` - `UPSTASH_REDIS_REST_URL` - `UPSTASH_REDIS_REST_TOKEN` - `BLOB_READ_WRITE_TOKEN` - `CRON_SECRET` - `DATABASE_URL` (Neon Postgres, required for the theme catalog database only) Optional values: - `IMAGE_PROVIDER_DEFAULT` - `AHA_ADMIN_SECRET` (local-onl