Maxiwere45 a2a7ffd79f feat(i18n): add FR/EN internationalization with in-app language selector
- gen-l10n setup (flutter_localizations, intl, l10n.yaml, ARB en/fr)
- localeProvider (persisted) wired into MaterialApp
- language selector in the System page (alongside the color palette)
- all user-facing strings across screens moved to AppLocalizations

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 12:13:51 +02:00
2026-02-02 15:01:02 +01:00
2026-06-23 11:36:13 +02:00
2026-02-02 09:42:02 +01:00
2026-03-17 14:57:39 +01:00
2026-02-02 09:42:02 +01:00
2026-02-02 15:01:02 +01:00
2026-01-16 14:50:38 +01:00
2026-03-17 14:57:39 +01:00
2026-01-16 13:45:38 +00:00

Pokéguess

Devine le Pokémon à partir de sa silhouette !

Application mobile Flutter développée dans le cadre du cours DEV MOBILE (Ynov). À l'origine basée sur l'exemple de pokédex du bootcamp, le projet est devenu un jeu complet « Who's that Pokémon ? » adossé à un pokédex.

Fonctionnalités

  • Jeu de devinette : une silhouette de Pokémon à identifier, avec un système de vies, d'indices et de passes (skips), des Pokémon shiny (bonus de points), un score courant et un meilleur score persistant.
  • Filtre par génération : on choisit les générations (I à IX) dont les Pokémon peuvent tomber pendant le jeu.
  • Pokédex : liste nationale des Pokémon avec filtre ALL / CAUGHT et compteur de progression (découverts / total).
  • Fiche détaillée : statistiques de base, description, types, bascule normal/shiny.
  • Page Système : statistiques globales (attrapés, vus, complétion, meilleur score) et choix de la palette de couleurs de l'app.
  • Offline-first : les données sont mises en cache localement (SQLite) ; l'app reste utilisable hors-ligne une fois la synchronisation initiale faite.

Architecture

Le projet suit une Clean Architecture allégée en trois couches, avec Riverpod pour la gestion d'état :

lib/
├── core/          # constantes, logger (Dart pur)
├── domain/        # entités, interface de repository, moteur de jeu (Dart pur, testé)
├── data/          # DTO de parsing, datasources SQLite/HTTP, implémentation du repository
└── presentation/  # providers Riverpod, pages et widgets (chacun < 150 lignes)

La règle de dépendance pointe vers l'intérieur : domain ne dépend de rien, data et presentation dépendent de domain. Détails dans docs/ARCHITECTURE.md.

Stack technique

Installation

git clone https://gitea.losvernos.com/guillaumev/quel-est-ce-pokemon.git
cd quel-est-ce-pokemon
flutter pub get

Puis lancer l'application sur le device de votre choix (téléphone, émulateur ou navigateur) :

flutter run

Tests

flutter test

Les tests couvrent le moteur de jeu (GameEngine), le parsing (PokemonDto) et le repository.

Ressources utilisées

  • API Tyradex — données des Pokémon (français)
  • Sprites officiels via le dépôt TyraDex/sprites (remplacer <id> par le numéro du Pokémon) :
    • normal : .../sprites/<id>/regular.png
    • shiny : .../sprites/<id>/shiny.png
  • Cris des Pokémon

Pistes d'amélioration

  • Lecteur audio pour écouter le cri du Pokémon
  • Internationalisation (FR / EN)
  • Vue « mon équipe » (6 Pokémon choisis)
Description
Projet de développement mobile flutter
Readme AGPL-3.0 1.5 MiB
Languages
Dart 44%
HTML 40.8%
C++ 7.3%
CMake 5.8%
Ruby 0.9%
Other 1.1%