← Back to portfolio
PokeData

PokeData

Modern fan-made Pokédex (Flutter, Android + Web): browse Pokémon and regions, search and filter, open rich profiles — plus Guess the Pokémon (local or competitive with leaderboards). Favorites and competitive mode with an account; full browsing as a guest. Shipped to the Play Store and pokedata.kaique.site.

Context

Many Flutter demos stop at an API prototype. The challenge was closing the loop on a mobile-first product at $0 infra cost: PokéAPI with local cache, Firebase auth, synced favorites, a custom game API (Workers + D1), PT/EN i18n, store compliance, and a pipeline to Play Store + Wasm web — without treating web as an afterthought.

What the product delivers

  • National Dex–style list with fast search and type/generation filters; regions and profiles with stats, weaknesses, evolution, flavor text, and cries
  • Guess the Pokémon: local mode (bundled catalog) and authenticated competitive mode with leaderboards and score publish
  • Favorites in Cloud Firestore (account) and guest mode for quick lookups; auth only when a feature needs it
  • Offline-friendly Drift cache and bilingual PT/EN UI aligned with PokéAPI game text
  • Real distribution: Android on the Play Store (com.kaiquesimao.pokedex) + Wasm web on a custom domain, free-tier stack by design

Engineering signals

  • Flutter + Riverpod 3, go_router, and feature-based architecture (data / domain / presentation)
  • Dio → PokéAPI; Drift for local cache; Firebase Auth (email/password; Google Sign-In on Android) + Firestore
  • Game API: Cloudflare Worker + D1, checked-in catalog (no PokéAPI at request time), rate limits, and Firebase token verification
  • Multi-thread Wasm web with COOP/COEP on Cloudflare Pages; Google Auth mobile-only by conscious tradeoff
  • GitHub Actions: analyze/tests, web/Worker deploy, AAB upload, and free-tier usage monitor (Workers/D1)

Public, unofficial fan project (PokéAPI). Source on GitHub, live at pokedata.kaique.site, and on the Play Store.

#Flutter#Riverpod#Firebase#Workers/D1