Intiaj Islam
←All workCase study 03 / 10

EpicQuest

A treasure hunt hidden inside a film series — watch, decode, win

The companion game to EpicFlics' short-film series. Every episode hides a code somewhere in its frames; players find it, race the clock to decrypt it, unlock the next episode, and finally crack the Vault for a place on the trailer waitlist and a shot at the grand prize.

Client
EpicFlics Studios
Field
Mobile Game & Interactive Film
Stack
React Native, Expo, TypeScript, Firebase, YouTube API
EpicQuest

Overview

A treasure hunt hidden inside a film series

The problem

Short films compete with an endless scroll. EpicFlics wanted people to actually watch, closely and more than once, to come back for every episode, and to follow the channel, all without the experience feeling like homework.

What I built

EpicQuest turns each episode into a puzzle. A code is hidden somewhere in the footage; players find it, decrypt the episode, and work down a ten-stop map to the Vault and a live race for the grand prize. I built the iOS and Android game, its Firebase backend and the studio's website.

The loop

Watch. Decode. Unlock. Win.

  1. Watch: EpicQuest screen

    01

    Watch

    Each episode plays in the app from the studio's YouTube channel, with its runtime, XP reward and difficulty up front.

  2. Decode: EpicQuest screen

    02

    Decode

    Somewhere in the footage is a code. Players type it into a segmented input that grows one cell at a time.

  3. Unlock: EpicQuest screen

    03

    Unlock

    A correct code unlocks the next stop on the zone map, from Episode 1 down the trail to Episode 10.

  4. Win: EpicQuest screen

    04

    Win

    All ten keys together open the Vault, a waitlist ticket, the trailer drop and a race for the grand prize.

Every screen

The whole app, screen by screen.

Captured from a Release build in the iOS Simulator, playing as a brand-new guest, so the Vault is still sealed and the badges are still locked.

Getting in

Email, Google, Apple or guest. A guest can play straight away and keep their progress when they sign up later.

EpicQuest Onboarding screen
Onboarding
EpicQuest Create account screen
Create account
EpicQuest Log in screen
Log in
EpicQuest Choose a mask screen
Choose a mask
EpicQuest Edit identity screen
Edit identity

The hunt

The zone map, the mission console, comments under every episode and the server's answer to every guess.

EpicQuest Zone map screen
Zone map
EpicQuest The Vault node screen
The Vault node
EpicQuest Vault sealed screen
Vault sealed
EpicQuest Mission console screen
Mission console
EpicQuest Comments & fastest decoders screen
Comments & fastest decoders
EpicQuest Enter the code screen
Enter the code
EpicQuest Wrong code: lockout screen
Wrong code: lockout

Player status

Progress, badges, XP and gems, the winners, and a how-to-play guide that sits behind the settings.

EpicQuest Profile screen
Profile
EpicQuest Honorary badges screen
Honorary badges
EpicQuest Rewards & grand-prize status screen
Rewards & grand-prize status
EpicQuest Winner circle screen
Winner circle
EpicQuest Settings screen
Settings
EpicQuest How to play screen
How to play

Difficulty

A wrong answer sounds different at every level.

The first clues are gentle and they get much harder towards the Vault. The feedback changes with them, in colour and in tone, so a miss on Episode 1 encourages and a miss on Episode 10 warns.

Level 1 · Easy

“Watch the video again very closely. The clue is hiding in plain sight.”

Level 5 · Intermediate

“Wrong code. The clue is trickier than it looks.”

Level 10 · Elite

“Access denied. The Elite sequence is deeply hidden.”

Trailer · Legendary

“Cosmic shield active. The clue is hidden in a single frame.”

Fair play

Real prizes need a game that can’t be cheated.

The winners get real rewards, so the backend assumes someone will try to game it. 15 Firebase Cloud Functions own every rule; the app only ever asks.

  1. 01

    The answers never ship

    Every code lives on the server. The app sends a guess to a Cloud Function and gets back right or wrong. Unlocking an episode, awarding XP and gems, and placing a player on the leaderboard all happen there too, so there is nothing in the app bundle to dig out.

  2. 02

    Guessing is rate-limited

    Ten attempts a minute and a hundred an hour per player, and a wrong code locks that episode for 60 seconds. The countdown shows in the app, but the server is what enforces it, so brute-forcing a short code is not worth trying.

  3. 03

    You have to watch the trailer

    The final challenge hides a letter inside the trailer. Answers sent before the release time are refused. The app records when the player starts the video, and anyone who answers without that record, or less than 90 seconds in, is flagged rather than ranked.

  4. 04

    Spoilers moderate themselves

    Every episode has a comment thread. When a comment is created, a Firestore trigger checks it against that episode's code and hides it automatically if it gives the answer away, so the discussion stays useful without a moderator watching it.

  5. 05

    Seasons are data, not releases

    Episode timers, codes, difficulty, the Vault combination and the trailer date sit in per-season config in Firestore, with three seasons set up so far. Episodes are matched to YouTube uploads by title, so a new season is a content task rather than an app update.

  6. 06

    Guests keep their progress

    Anyone can play as a guest on a Firebase anonymous account. Signing up with email, Google or Apple merges their progress, XP and gems into the permanent account, and deleting an account removes the profile, attempt logs and leaderboard entries with it.

Security lockdown after a wrong code

One deliberately wrong guess from the simulator: the server rejects it and the episode locks, with the countdown running in the app.

Badges

Ten reasons to come back tomorrow.

First Clue
Solved the first mystery of the quest
Gold Hunter
Found 10 hidden gold chests
Map Master
Explored every zone on the map
Binge Watcher
Watched 5 videos
Elite Member
Subscribed to the official channel
Lore Seeker
Watched the secret lore videos
Daily Explorer
Three days in a row
Loyal Hunter
Seven days in a row
Night Owl
Watched between midnight and 4 AM
Early Bird
Watched before 6 AM

The website

epicflics.com, the studio’s front door.

The site explains the idea in three steps and shows the trailers, the prizes in the Treasure Chest and the travel reports, then sends people to the app. Its Join Treasure Hunt page is a web sign-in to the same hunt, for anyone not on a phone.

epicflics.com
epicflics.com home page on desktop
epicflics.com home page on a phone
How it works: watch, decode, register to win
Trailers and highlights from the EpicFlics channel
Treasure Chest page listing the prizes
Web sign-in to the Epic Quest hunt

By the numbers

Episodes to decode each season, ending at the Vault
10Episodes to decode each season, ending at the Vault
Cloud Functions running validation, leaderboards and anti-cheat
15Cloud Functions running validation, leaderboards and anti-cheat
Hunter masks to choose from
26Hunter masks to choose from
Lockout after a wrong code, enforced by the server
60sLockout after a wrong code, enforced by the server

How it's built

Client
Expo SDK 54 and React Native 0.81 with Expo Router, Reanimated 4 and the React Compiler, shipped to iOS and Android
Backend
15 Firebase Cloud Functions (v2) that own every secret: guess validation, hints, rate limits, leaderboards, waitlist tickets and anti-cheat
Data
Cloud Firestore for profiles, per-episode leaderboards, winners, comments and season config; Zustand and AsyncStorage on device
Services
YouTube Data API v3 for episodes and subscription checks, Firebase Auth with Apple, Google, email and guest sign-in

What shipped

  1. 01Native iOS and Android game with a zone map, a mission console, the Vault and a live speed leaderboard
  2. 02Server-authoritative guessing: codes never reach the device, with per-minute and per-hour rate limits and a 60-second lockout
  3. 03Trailer-drop anti-cheat that only accepts answers from players who have actually watched for long enough
  4. 04Comment threads under every episode, auto-moderated when someone posts the answer
  5. 05Guest play that migrates to a permanent account without losing progress
  6. 06epicflics.com, the studio's site for the films, prizes and the web version of the hunt

Next project

Cooker→

Food & Grocery Ecosystem with 4 Inter-Connected Apps