Skip to content
Mobile app

Shoof — Watch-to-Enter Prize Draws

A Flutter app where users watch short video ads in their spare time and use them to enter daily, weekly, and monthly prize draws.

Overview

Shoof turns idle time into entries: users watch short sponsored videos, and each completed view earns a ticket into recurring prize draws — daily, weekly, and monthly. The app tracks watch sessions, awards and reconciles entries against a backend that stays the source of truth, and keeps the core watch-and-earn loop working across flaky connectivity. Draw results, ticket balances, and winnings are all server-authoritative — the client never decides an outcome.

My Role

Flutter Developer

Highlights

  • Watch-to-earn loop: a completed ad view converts to exactly one ticket in the daily / weekly / monthly draws

  • Server-authoritative entries, balances, draw results, and winnings

  • Resilient watch sessions and entry reconciliation over unstable mobile networks

  • Phone/email OTP auth, push notifications for draw results, and a hydrated-BLoC session layer

Problem & Challenges

  • Making 'one completed view = exactly one entry' hold under retries, app kills, and duplicate callbacks

Approach & Solutions

  • Modelled each view as an idempotent session the backend validates and reconciles, rendering entries as pending until confirmed

Technology

FlutterDartBLoC / CubitSupabase (Auth, Postgres, Edge Functions)DioFirebase Cloud Messagingmedia_kit (video playback)