Skip to content

Dev3ch/flutter_template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dev3ch / flutter-template

Template oficial de dev3ch para proyectos Flutter. Repositorio GitHub Template con estructura feature-first, auth completo con JWT y las dependencias del equipo ya configuradas.

Uso

Opción A — Very Good CLI

dart pub global activate very_good_cli
very_good create flutter_app mi_app --org com.dev3ch --desc "Mi aplicación"

Opción B — GitHub Template (más simple, sin instalar nada extra)

# 1. "Use this template" en GitHub → github.com/dev3ch/flutter-template
# 2. git clone del repo generado
# 3. Renombrar el package Dart (reemplaza TODOS los imports `package:dev3ch_template/`):
APP_NAME=mi_app
find . -type f \( -name "*.dart" -o -name "pubspec.yaml" \) \
  -exec sed -i "s/dev3ch_template/${APP_NAME}/g" {} +
# 4. Copiar .env y ajustar API_BASE_URL
cp .env.example .env
# 5. Instalar dependencias
flutter pub get
# 6. Generar código (freezed, riverpod, json_serializable)
dart run build_runner build --delete-conflicting-outputs
# 7. (Android/iOS) renombrar applicationId / bundleId a mano en android/app/build.gradle y ios/Runner.xcodeproj

Estructura

lib/
├── core/
│   ├── http/
│   │   ├── http_client.dart         # Dio instance singleton
│   │   ├── auth_interceptor.dart    # Inyecta JWT, maneja refresh en 401
│   │   └── error_interceptor.dart   # Normaliza errores DioException
│   ├── auth/
│   │   └── secure_storage.dart      # flutter_secure_storage wrapper
│   ├── router/
│   │   └── router.dart              # go_router con auth guard
│   └── providers/
│       └── core_providers.dart      # Providers de Dio, Storage
├── features/
│   └── auth/                        # Feature de auth completo
│       ├── data/
│       │   ├── models/
│       │   │   └── user.dart        # @freezed User model
│       │   └── services/
│       │       └── auth_service.dart # login(), register(), refresh()
│       ├── domain/
│       │   └── auth_repository.dart # Interface
│       └── presentation/
│           ├── providers/
│           │   └── auth_provider.dart  # Riverpod notifier
│           ├── screens/
│           │   ├── login_screen.dart
│           │   └── register_screen.dart
│           └── widgets/
│               └── login_form.dart
└── main.dart                        # ProviderScope + MaterialApp.router

Auth incluido y listo

  • AuthInterceptor — inyecta Bearer token desde SecureStorage
  • Refresh automático en 401 — reintenta el request original
  • go_router con redirect guard — si no hay token → /login
  • LoginScreen y LoginForm funcionales con reactive_forms
  • User model con @freezed (camelCase compatible con Django)
  • AuthNotifier con Riverpod — login(), logout(), estado de sesión

Dependencias (pubspec.yaml)

dependencies:
  dio: ^5.7.0
  flutter_riverpod: ^2.5.1
  riverpod_annotation: ^2.3.5
  go_router: ^14.2.7
  freezed_annotation: ^2.4.4
  json_annotation: ^4.9.0
  flutter_secure_storage: ^9.2.2
  reactive_forms: ^17.0.1
  flutter_dotenv: ^5.1.0

dev_dependencies:
  build_runner: ^2.4.13
  freezed: ^2.5.7
  json_serializable: ^6.8.0
  riverpod_generator: ^2.4.3
  very_good_analysis: ^6.0.0
  mocktail: ^1.0.4

Agregar una nueva feature

Crear la carpeta bajo features/ siguiendo la misma estructura de auth/:

features/
└── mi_feature/
    ├── data/
    │   ├── models/
    │   └── services/
    ├── domain/
    └── presentation/
        ├── providers/
        ├── screens/
        └── widgets/

Mantenerse actualizado

flutter upgrade                    # Actualizar Flutter SDK
flutter pub upgrade                # Actualizar dependencias
dart run build_runner build --delete-conflicting-outputs  # Regenerar código

Stack

  • Flutter + Dart
  • Riverpod (state management)
  • go_router (navegación con auth guard)
  • Dio (HTTP + interceptors)
  • freezed + json_serializable (modelos)
  • reactive_forms (formularios)
  • flutter_secure_storage (tokens)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages