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