Un template Flutter scalabile e professionale, pronto da clonare per qualsiasi nuovo progetto. Basato su Feature-First Clean Architecture con Riverpod, GoRouter, Dio e Freezed.
- 🔐 Autenticazione completa — Login, validazione token, splash screen con retry
- 🏗️ Clean Architecture — Domain → Data → Presentation (3 layer per feature)
- 📱 Navigazione — GoRouter con ShellRoute (navbar persistente) e redirect guard
- 🌐 Networking — Dio configurato con interceptor per token automatico
- 💾 Storage locale — SharedPreferences per persistere l'utente
- 🧊 Code generation — Freezed + json_serializable per modelli immutabili
👉 Leggi la GUIDA_TEMPLATE.md per una spiegazione dettagliata di tutto il progetto, scritta per chi è alle prime armi con Riverpod.
# 1. Clona il progetto
git clone <url-del-repo> nome_tuo_progetto
# 2. Installa le dipendenze
flutter pub get
# 3. Genera il codice (Freezed + JSON)
dart run build_runner build --delete-conflicting-outputs
# 4. Configura il backend
# Modifica baseUrl in lib/core/network/dio_provider.dart
# 5. Lancia l'app
flutter runlib/
├── core/ # Componenti condivisi
│ ├── network/ # Dio + Interceptors
│ ├── router/ # GoRouter + Redirect Guard
│ ├── storage/ # SharedPreferences
│ └── widgets/ # Widget riutilizzabili
└── features/
├── auth/ # Login, Splash, Token validation
├── home/ # Dashboard
└── user/ # Esempio CRUD (lista utenti)
App aperta → Splash Screen → Token salvato?
├── NO → Login
└── SI → Verifica col backend
├── OK → Home
├── 401 → Login
└── Errore rete → Riprova
| Libreria | Versione | Ruolo |
|---|---|---|
flutter_riverpod |
^3.0.3 | State Management |
dio |
^5.9.0 | HTTP Client |
go_router |
^17.0.1 | Navigazione dichiarativa |
freezed |
^3.2.3 | Code generation (modelli) |
json_serializable |
^6.11.2 | Serializzazione JSON |
shared_preferences |
^2.5.4 | Storage locale |
- Rinomina
flutter_base_setupovunque nel progetto - Cambia
baseUrlindio_provider.dart - Adatta
UserModelai campi del tuo backend - Modifica gli endpoint API in
auth_repository_impl.dart - Rigenera il codice:
dart run build_runner build --delete-conflicting-outputs - Aggiungi le tue feature seguendo la guida