A cross-platform Flutter mobile app providing an interactive guide to Valorant's agents, maps, weapons, skins, and competitive tiers. Architected with a modular monorepo (4 internal packages), clean layered data flow (View → Cubit → Service → Repository), and Freezed sealed-class state management for compile-time safety. Features video playback for skin previews, multi-language support, dark/light theming, and Firebase Analytics. Shipped to testers via Codemagic CI/CD.
Disclaimer: This is an unofficial fan-made application. It is not affiliated with, endorsed by, sponsored by, or in any way officially connected to Riot Games, Inc.. "Valorant" and all associated trademarks, logos, characters, and assets are the property of Riot Games, Inc. All game data is sourced from the public, community-maintained valorant-api.com.
| Agents | Maps | Weapons | Ranks |
|---|---|---|---|
| coming soon | coming soon | coming soon | coming soon |
- Agents — Browse agents with role-based filtering, view abilities and background art
- Maps — Explore maps with callouts and tactical layouts
- Weapons — Detailed weapon stats, damage tables, and full skin galleries with video previews
- Ranks — Browse the competitive tier ladder
- Dual language — English and Turkish, switchable at runtime
- Adaptive theming — Light / dark mode with the Valorant brand palette
| Layer | Choice |
|---|---|
| Framework | Flutter 3.41+ / Dart 3.11+ |
| State management | flutter_bloc (Cubit + Freezed union states) |
| Models | freezed + json_serializable |
| Routing | auto_route |
| DI | get_it |
| HTTP | dio |
| Localization | easy_localization |
| Image cache | cached_network_image |
| Video | better_player_plus |
Feature-first layered architecture: View → Cubit → Service → Repository / Network.
lib/
├── features/ # Self-contained feature modules
│ ├── agents/
│ ├── maps/
│ ├── weapons/
│ ├── ranks/
│ └── profile/
├── product/ # Cross-feature shared code
└── main.dart
modules/ # Reusable packages
├── core/ # Dimensions, gaps, durations, extensions
├── theme_module/ # Colors, text themes, dark/light mode
├── gen/ # Generated assets + localizations
└── lint_rules/ # Custom analyzer rules
- Flutter
3.41.5+ - Dart
^3.11.0 - CocoaPods (iOS builds)
git clone https://github.com/yagizdo/handbook-for-valorant-mobile.git
cd handbook-for-valorant-mobile
flutter pub get
bash scripts/app/build.sh # code generation (Freezed, auto_route, ObjectBox)
flutter runFirebase config files are not committed. If you want analytics:
- Create a project in Firebase Console
- Add Android/iOS apps and download config files
- Run
flutterfire configure
Skip Firebase? Remove Firebase.initializeApp(...) from lib/main.dart.
| Script | Purpose |
|---|---|
scripts/app/build.sh |
Run build_runner for all packages |
scripts/app/lang.sh |
Regenerate LocaleKeys from translation JSONs |
scripts/ci/format_check.sh |
Verify formatting (line length 120) |
scripts/ci/code_analyze.sh |
Run analyzer + custom lints |
PRs welcome — target the develop branch.
bash scripts/ci/format_check.sh
bash scripts/ci/code_analyze.shBoth must pass before merging.
MIT © 2026 Yilmaz Yagiz Dokumaci
- Riot Games — for creating Valorant
- valorant-api.com — for the free public API