taiphanvan.dev
WorkBlogTools
VIEN

© 2026 Phan Văn Tài

githublinkedinRSS
← /work
2025 — present·Shipped

PES Arena

Mobile PES tournament app — keeps running when the LAN party loses Wi-Fi

Role

Solo

Stack

FlutterFirebaseSQLiteBLoCiOSAndroid
Live Source

PES Arena helps PES players organize small tournaments: create a group, generate a round-robin schedule, enter scores, track standings, and chat with the crew. When online it syncs through Firebase; when Wi-Fi drops, it falls back to local SQLite so the tournament can continue.

Download: App Store · Google Play. Source: GitHub.

Background#

Small PES tournaments often run on spreadsheets, group chats, and memory. That breaks down quickly when there are many players or when the network disappears mid-session.

PES Arena compresses the flow: create group → invite members → generate fixtures → enter scores → standings update automatically.

Tech stack#

  • Flutter + Dart — one codebase for iOS, Android, and a web shell.
  • BLoC + Clean Architecture — features split across presentation, domain, and data.
  • Firebase — auth, Firestore sync, storage, messaging, and remote config.
  • SQLite / sqflite — offline tournament data.
  • go_router + get_it — declarative routing and dependency injection.
  • Fastlane — release configuration for app stores.

Challenges#

The main challenge is keeping tournament state consistent across online and offline modes without making the match-entry flow heavy.

Lessons#

Offline support is not a nice-to-have for event software. If the event can happen without stable internet, the app must survive without stable internet too.