La aplicación Amiibo es una aplicación que permite explorar y guardar información sobre los amiibo, figuras coleccionables utilizadas en los juegos de Nintendo usando el api AmiiboAPI. Con esta aplicación, puedes ver una lista de amiibo, filtrar por el tipo de amiibo que te gusta, ver detalles de cada amiibo y guardar tus amiibo favoritos para acceder a ellos fácilmente más adelante.
- API AmiiboAPI.
- Al abrir la aplicación se mostraras dos sesiones: Listados, Favoritos.
- Se mostrara un listado de amiibo en la sesión de Listados en el caso de que tengas internet.
- La aplicacion permitira filtrar los amiibo por sus tipos y ordenarlos alfabeticamente en el caso de que tengas internet.
- Permitir guardar un amiibo favorito en la sesión de Favoritos.
- Se mostrara un listado de amiibo favoritos en la sesión de Favoritos. En el caso de que no tengas internet se mostrara de igual manera la información.
- Accede a información detallada sobre un amiibo, como su nombre, serie, fecha de lanzamiento, personaje, imagen.
Puedes hacer lo siguiente en la aplicación
La aplicación te muestra una lista de amiibo.
La aplicación permitira guardar tu amiibo favorito.
La aplicación te muestra una lista de amiibo favoritos.
La aplicación te permite filtrar los amiibos por su tipo y ordenalos de manera alfabetica.
La aplicación te muestra nombre, serie, fecha de lanzamiento, personaje, imagen.
La aplicación Amiibo sigue una arquitectura basada en Clean Architecture (Arquitectura Limpia) con el patrón de arquitectura MVVM (Modelo-Vista-ViewModel). Esta combinación de arquitecturas promueve la separación de responsabilidades y la escalabilidad del código, al tiempo que proporciona un flujo de datos reactivo para la capa de presentación.
Se identifican 3 módulos
- Presentation (Amiibo) - Utiliza el patrón MVVM para gestionar la interfaz de usuario. La vista se encarga de mostrar los elementos visuales al usuario y recoger sus interacciones. El ViewModel actúa como intermediario entre la vista y el modelo de datos, procesando las solicitudes del usuario, realizando llamadas a los casos de uso del dominio y actualizando la vista con los resultados.
- Domain - Engloba la lógica central de la aplicación. Contiene los casos de uso, que representan las operaciones y acciones que la aplicación puede realizar. Esta capa no depende de detalles de implementación y se centra en las reglas de negocio.
- Infrastructure - Se encarga de interactuar con las fuentes de datos externas, como bases de datos o servicios web. Aquí se encuentran los repositorios, que abstraen el acceso a los datos y proporcionan una interfaz para realizar operaciones de lectura y escritura.
Alomofire - Cliente HTTP
Se utilizó Alomofire para el consumo de servicios Rest, ya que facilita este trabajo en aplicaciones iOS y es desarrollada por la comunidad open source. Se agrego un Timeout en cliente Http de 60 segundos. Esto puede cambiar según la necesidad de proyecto.
CoreData - Persistencia de datos
Para la base de datos se usó CoreData ya que es una biblioteca de persistencias propia de apple, que abstrae los detalles de la asignación de sus objetos, lo que facilita administrar (guardar, leer y eliminar) datos de Swift y Objective-C. Permite zincronizar datos en varios dispositivos en una sola cuenta de iCloud.
Swinject - Inyección de dependencias
Para realizar la inyección de dependencias se usó la librería Injectable la cual proporciona una forma de usar la inyección de dependencias. Swinject funciona con el sistema de tipos genéricos Swift y funciones de primera clase para definir las dependencias de su aplicación de manera simple y fluida.
Storyboard - Para creacion de las vistas
Utilizado para el diseño de la interfaz de usuario utilizando la representación visual de las pantallas y la gestión de las transiciones entre ellas..
Combine - Reactividad
Combine es un marco para escribir código reactivo, es una libria propia de apple. El marco Combine proporciona una API Swift declarativa, permitiendo trabajar con eventos asíncronos de forma más simplificada.
Swift Package Manager - Gestor de dependencias
Herramienta de gestión de dependencias incorporada en Xcode para la administración de paquetes y la inclusión de bibliotecas externas en el proyecto.
Version name : 1.0
- El emulador no muestra los teclados del dispositivo, asi que deben escribir mediante el teclado del computador y presionar enter para poder filtrar los amiibos.