facebook pixel

Requirements

Attached Files

📄

AI_Game_Mobile_Bounty_Phase1_1c63e5c0.pdf

142.7 KB

Overview

Build the mobile UI for RentPrompts' AI image-guessing game, "Say What You See," inside our Flutter app. The backend API is already fully built and live — this bounty is UI + API integration only. No backend, database, or server work is required or expected.

Live Reference

A working web version of this game is already live. Play it before applying so you understand the intended experience — you're adapting this to feel native on mobile, not cloning a webview:

  • /ai-games — hub
  • /ai-games/say-what-you-see — game landing
  • /ai-games/say-what-you-see/play — gameplay
  • /ai-games/result — score reveal
  • /ai-games/stats — my stats

Screens & Scope

1. Game Home — Difficulty picker (Easy/Medium/Hard) + category picker (12 categories). Shows remaining credits (or "Unlimited" for premium users) and current streak status. GET /game/config GET /game/trial-status GET /game/strike-info

2. Round — Target Reveal — Shows the AI-generated target image with a live countdown (60s Easy / 180s Medium / 300s Hard). POST /game/start

3. Round — Prompt & Generate — Text input for the user's guess-prompt (max 500 chars). Generate button disabled for the first 5 seconds. Real loading/progress state while the AI renders the user's image. POST /game/generate

4. Results / Score Reveal — Side-by-side target vs. user image, similarity %, grade badge, coins earned + bonus reasons, updated streak, updated rank. Includes an AI Prompt Coach panel: prompt type, quality score, 5-item checklist, missing attributes, one suggested improved prompt, 2 examples. "Play Again" CTA. POST /game/compare

5. Credits / Store — 3 tiers (Starter/Pro/Elite). Two payment paths per plan: Razorpay (card/UPI) or in-app wallet balance. POST /game/purchase/init POST /game/purchase/verify POST /game/purchase/wallet

6. Low-Credit Paywall — Interstitial shown whenever any game action returns a trial-exhausted error; routes directly to Credits/Store.

7. My Stats — Total/weekly coins, games played per difficulty, best score per difficulty, earnings per difficulty, current/longest streak, rank badge, last 10 rounds list. GET /game/my-stats

8. Round History Detail — Tapping a past round opens full detail: target/user image, prompt used, score, time taken. No separate API call — data comes from the My Stats response.

9. Leaderboard — Global / Weekly toggle. Ranked list: avatar, username, rank title, streak, games played, coins. GET /game/leaderboard

10. Streak Widget — Can live inside Game Home. Status (safe/in-danger/broken/no-streak), countdown to keep streak alive, 10-day and 20-day milestone indicators. GET /game/strike-info

Out of Scope

  • Guest play / guest checkout / anonymous trial mode — logged-in users only
  • Login, signup, or password reset screens — already exist in the app
  • Admin analytics / admin dashboard screens
  • Any game other than "Say What You See"
  • Push notifications or streak reminder notifications
  • Any backend, database, or API change of any kind

Technical Requirements

  • Reuse the app's existing auth session (cookie or token) on every game API call — no new auth work
  • Native Razorpay Flutter plugin for the card/UPI purchase path
  • Explicit UI for each of these error states, not a generic toast:
    • Trial exhausted (403) → route to paywall
    • Rate limit (429, max 10 rounds/hour) → cooldown message
    • Round already completed / wrong state (409)
    • AI safety system rejected the prompt (400) → ask user to rephrase
    • Insufficient wallet balance on wallet purchase (402)
  • Image loading/caching for the two AI-generated images per round (target + user)

Acceptance Criteria (Definition of Done)

  • All 10 screens above implemented and reachable on a real device/emulator, both iOS and Android
  • A full round completes end-to-end: Game Home → Target Reveal → Prompt & Generate → Results, with coins/streak/rank visibly updated afterward
  • Both purchase paths (Razorpay and Wallet) complete successfully against provided test credentials
  • Every error state above is reproducible and shows correct dedicated UI
  • My Stats, Round History, and Leaderboard all display live data from real API responses — no mock/hardcoded data in the delivered build
  • Nothing from "Out of Scope" is missing from — or was expected to be in — the delivered build

Submission Requirements

On completion, submit: a working build (APK/TestFlight or equivalent test link), the source code, and one short screen-recording walking through every screen and every error state above.

Payment Terms

The bounty reward released only after the delivered build is reviewed against the Acceptance Criteria above and passes. No advance or partial payment. Full API reference (endpoints, request/response examples, error codes) provided on assignment.