Agenda de Contactos
Proyecto Académico
Proyecto final de la asignatura de Desarrollo de Aplicaciones Móviles (TEP PUCMM). App multiplataforma para gestión de contactos con sistema de favoritos, búsqueda en tiempo real e integración con API externa, desarrollada junto a mi compañero Adamil Felipe Abreu.

El Problema
Como proyecto final de la asignatura de Desarrollo de Aplicaciones Móviles, necesitábamos construir una app multiplataforma real que pusiera en práctica gestión de estado reactiva, persistencia local, integración con APIs externas y compatibilidad real en web, Android, iOS y escritorio.
La Solución
Junto a mi compañero Adamil Felipe Abreu, desarrollamos una agenda de contactos en Flutter 3.29.3 aplicando el patrón BLoC para gestión de estado inmutable, GoRouter para navegación declarativa y Dio para consumo de la API RandomUser.me. La app persiste contactos y favoritos localmente con SharedPreferences, soporta selección de imágenes desde galería, cámara o URL, e implementa búsqueda en tiempo real con debounce.
Proceso de Desarrollo
Diseño de arquitectura en capas: cubit, models, repositories, services, views y widgets
Implementación del patrón BLoC con estado inmutable (copyWith) y separación total de la UI
Desarrollo del CRUD completo de contactos con validación de formularios en tiempo real
Integración con RandomUser.me para generación de contactos de ejemplo en español
Persistencia local con SharedPreferences: serialización JSON con toJson() y fromJson()
Gestión de imágenes multiplataforma (galería, cámara, URL) con solución de CORS para web
Sistema de favoritos con toggle visual, vista especializada y gestión masiva
Soporte de tema claro/oscuro con Material Design 3
Resultados
Aplicación funcional en 6 plataformas (web, Android, iOS, Windows, macOS y Linux) con arquitectura BLoC robusta y código totalmente documentado
CRUD completo con validación, DatePicker y confirmaciones de eliminación
Búsqueda en tiempo real por nombre, apellido, teléfono o email
Persistencia offline sin depender de backend propio
Compatibilidad real en web, Android, iOS y escritorio desde una sola base de código
Integración con API externa (RandomUser.me) con manejo de errores de conectividad
Código 100% documentado para facilitar mantenimiento y escalabilidad
Galería

