App movil Flutter + Firebase para control de notas estudiantiles. Un solo usuario administrador gestiona secciones, materias, estudiantes y calificaciones.
Antes de comenzar, asegurate de tener instalado:
- Flutter SDK >= 3.19.x (Guia de instalacion)
- Dart SDK >= 3.3.x (incluido con Flutter)
- Android Studio o VS Code con extensiones de Flutter/Dart
- Git
- Cuenta de Firebase con un proyecto creado
- Node.js >= 18 (para Firebase CLI)
Verifica tu instalacion:
flutter doctorgit clone <url-del-repositorio>
cd uptp-controlflutter pub getnpm install -g firebase-tools
firebase logindart pub global activate flutterfire_cli- Ve a Firebase Console
- Crea un nuevo proyecto (ej:
uptp-control) - Habilita Authentication con el proveedor Email/Password
- Habilita Cloud Firestore en modo de prueba o produccion
Desde la raiz del proyecto ejecuta:
flutterfire configure --project=<tu-proyecto-firebase>Esto genera automaticamente los archivos de configuracion:
lib/firebase_options.dartandroid/app/google-services.jsonios/Runner/GoogleService-Info.plist(si aplica)
En lib/main.dart, descomenta las lineas de Firebase:
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const UptpControlApp());
}firebase deploy --only firestore:rules- Ve a Firebase Console > Authentication > Users
- Agrega un usuario con email y contrasena
- En Firestore, crea un documento en la coleccion
userscon eluiddel usuario:
users/{uid}
nombre: "Administrador"
email: "tu@email.com"
rol: "admin"
activo: true
created_at: <timestamp>
flutter runflutter run -d chrome- Conecta tu dispositivo Android por USB
- Habilita Depuracion USB en opciones de desarrollador
- Ejecuta:
flutter devices # Verifica que detecta tu dispositivo
flutter run -d <device> # Ejecuta en el dispositivoflutter build apkEl APK se genera en: build/app/outputs/flutter-apk/app-release.apk
flutter build appbundle| Comando | Descripcion |
|---|---|
flutter pub get |
Instalar dependencias |
flutter run |
Ejecutar en dispositivo/emulador |
flutter run -d chrome |
Ejecutar en web |
flutter analyze |
Analisis estatico del codigo |
flutter test |
Ejecutar tests |
flutter build apk |
Build de release Android |
flutterfire configure |
Reconfigurar Firebase |
lib/
├── config/ # Tema, constantes y rutas
├── models/ # Modelos de datos (fromFirestore/toMap)
├── services/ # Servicios de Auth y Firestore
├── providers/ # State management (ChangeNotifier)
├── screens/ # Pantallas por modulo
│ ├── auth/ # Login
│ ├── home/ # Dashboard
│ ├── secciones/ # CRUD secciones + detalle
│ ├── materias/ # CRUD materias
│ ├── estudiantes/ # CRUD estudiantes + inscripciones
│ ├── evaluaciones/# CRUD evaluaciones
│ └── notas/ # Registro de notas + boletin
├── widgets/ # Componentes reutilizables
└── main.dart # Entry point
- Framework: Flutter 3.x con Dart
- Backend: Firebase (Auth, Cloud Firestore)
- State Management: Provider (ChangeNotifier)
- UI: Material 3 con Google Fonts
Si ves errores de version de Kotlin al compilar, actualiza la version en android/build.gradle:
ext.kotlin_version = '1.8.20'Asegurate de haber ejecutado flutterfire configure y descomentado Firebase.initializeApp() en main.dart.
El proyecto requiere minSdkVersion 21. Esto ya esta configurado en android/app/build.gradle.