Esta es la planeación de este proyecto.
Mensaje: “Este curso va a construir una app real. Hoy no programamos: hoy definimos lo que vamos a construir para no perdernos en la semana 6.”
To-Do UFPSO (Firebase Edition)
- Frontend / Mobile: Flutter
- Backend as a Service: Firebase (Auth, Firestore)
Permitir que cada usuario gestione sus tareas personales de forma segura, simple y disponible incluso sin internet.
- Estudiante (principal)
- Docente/administrador (solo como ejemplo, no se implementa rol admin en MVP)
Los escribes como “El sistema debe…”.
RF1. Registrar usuario con email y contraseña.
RF2. Iniciar sesión con email y contraseña.
RF3. Mantener sesión iniciada y permitir cerrar sesión.
RF4. Crear una tarea con: título (obligatorio) y notas (opcional).
RF5. Listar solo las tareas del usuario autenticado.
RF6. Marcar una tarea como completada / pendiente.
RF7. Editar título/notas de una tarea.
RF8. Eliminar una tarea.
RF9. Filtrar tareas: Todas / Pendientes / Completadas.
RF10. Funcionar offline y sincronizar al recuperar conexión (Firestore offline).
RF11. Aplicar reglas de seguridad para que cada usuario solo acceda a sus tareas.
RF12. Prioridad (alta/media/baja).
RF13. Fecha límite (due date).
RF14. Búsqueda por texto.
RF15. Etiquetas (tags).
RNF1. La app debe mostrar estados: loading/empty/error.
RNF2. Validación de formularios (email/password/título).
RNF3. Respuesta ante errores de Auth/Firestore con mensajes claros (no “Exception”).
RNF4. Código organizado por capas (UI/State/Repo).
RNF5. Evidencias: repo, README, video demo, APK final.
Aquí es donde se ponen serios (sin aburrirse).
HU-X: Como [tipo de usuario], quiero [acción] para [beneficio].
Criterios de aceptación: (Given/When/Then)
Como usuario quiero registrarme para crear mi cuenta.
CA:
- Dado que ingreso email válido y password con mínimo 6 caracteres
- Cuando presiono “Crear cuenta”
- Entonces se crea el usuario y entro a Home
- Y si hay error, se muestra un mensaje entendible.
Como usuario quiero crear una tarea para organizarme.
CA:
- Dado que estoy autenticado
- Cuando creo una tarea con título no vacío
- Entonces la tarea aparece en mi lista
- Y si estoy sin internet, se guarda y al volver sincroniza
- Y no debo ver tareas de otros usuarios.
Como usuario quiero marcar tareas como completadas para llevar control.
CA:
- Cuando marco una tarea
- Entonces cambia el estado visual y se actualiza en Firestore.
Con 6–8 historias con CA ya tienes un backlog sólido.
Colección: tasks
Campos (MVP):
userId: stringtitle: stringnotes: string?isDone: boolcreatedAt: timestampupdatedAt: timestamp
Extras:
priority: int(1–3)dueAt: timestamp?tags: array<string>?
Regla de oro: todo documento de tasks debe tener userId = auth.uid.
En tablero o papel:
- Login
- Register
- Home (lista + filtros)
- Create/Edit Task (form)
Define componentes:
- Input email/password
- Botón principal
- Lista con check
- Chips de filtros
Enfatiza que el curso seguirá estas fases:
- Requisitos + historias + modelo + wireframes
- Pantallas y flujo
- Firebase Auth
- Firestore tasks
- capas y state management
- sincronización + security rules
- tests + APK + docs
Documento “Especificación To-Do UFPSO v1” (1–2 páginas) con:
- Objetivo del producto
- RF (MVP + extras)
- 6–8 historias de usuario con criterios de aceptación
- Modelo Firestore
- Wireframes (foto del cuaderno sirve)
En equipos de 3–4:
- Completar el documento v1
- Elegir 2 extras
- Definir 8 historias totales (6 MVP + 2 extras)
- Presentación relámpago (2 min por equipo)
- 30: requisitos claros y completos (MVP)
- 30: historias + criterios de aceptación bien escritos
- 20: modelo de datos coherente
- 10: wireframes claros
- 10: calidad del documento (orden, claridad)