WDL
Football Club & Career Management
A premium Flutter app to orchestrate football clubs, tournaments, matches and player careers — tactical lineups, live stats and match outcomes with a latency-free experience.

Engineering highlights
WDL is built for zero-latency navigation. A startup loader warms the user profile and homepage payload during the splash screen, and Riverpod keep-alive providers preserve UI state across the navigation stack so screens never re-fetch on return.
Lazy tab rendering
An IndexedStack with visited-tab tracking renders each tab only once, syncing search queries dynamically and eliminating redundant redraws and API calls.
Local AI roster scaffolding
Incomplete lineups (under 11 players) are auto-filled with AI placeholders on the tactical pitch, then filtered out of result submissions to satisfy backend validation.
A unified cache-invalidation manager cleanses scoped data contexts — e.g. evicting league stats and fixtures when switching clubs — to keep real-time data integrity.
What it is & why it matters
WDL (Win Draw Lose) lets players and managers run clubs end to end: build tactical lineups, track real-time statistics, and record match outcomes through a fluid, latency-free interface.
The app is engineered around aggressive caching and prefetching so navigation feels instant — critical data is warmed during the splash screen and preserved across the navigation stack.
What I built
Riverpod in-memory caching
Keep-alive providers prevent redundant API calls and preserve UI state across the navigation stack.
Background prefetching
A startup loader fetches the user profile and homepage payload concurrently during the splash for zero-latency transitions.
Local AI roster scaffolding
Auto-fills incomplete lineups with AI placeholder players on the pitch, then filters them out of result submissions to satisfy backend validation.