Esta aplicaci贸n es un ejemplo donde podemos registrarnos con una cuenta propia, y ya logueado, poder compartir nuestras experiencias de viajes, por nuestro "Per煤".
Bienvenido 馃憢, espero que este repositorio te sea de mucha ayuda para comprender acerca de la Arquitectura Limpia y el uso de Principios S贸lidos.
- Modularizaci贸n de Aplicaciones
- Uso de componentes de Jetpack Android
- Uso de Firebase 馃敟
- Uso de una base de datos interna
- Uso de coroutines para gestionar los procesos
- Uso de MVVM como patr贸n de arquitectura de presentaci贸n
- Uso de Work Manager
- Uso de un inyector de dependencias
- Y no est谩 m谩s decir que esta hecho el 100% en Kotlin <3
- Lifecycle version: '2.0.0'
- ViewModel version: '2.0.0'
- Coroutines version: '1.3.5'
- Coroutines Play Service version: '1.1.1'
- Coil version: '0.9.5'
- Firebase Storage version: '19.1.0'
- Firebase Auth version: '19.1.0'
- Firebase Firestore version: '21.4.0'
- Room version: '2.2.5'
- Work Manager version: '2.3.4'
- Koin version: '2.1.6'
- Koin ViewModel version: '2.1.6'
- Dexter version: '6.0.2'
La arquitectura del proyecto sigue los principios de la Arquitectura Limpia y as铆 como los Principios S贸lidos. Las capas est谩n modularizadas de la siguiente manera:
En esta capa estamos uniendo 2 capas que bien podr铆an ir separadas, la de Datos (Retrofit, Firebase, Room) y la capa de Presentaci贸n.
La sub capa interna de Presentaci贸n, hace uso del Framework de Android, este tiene la responsabilidad de gestionar los eventos y mostrar la UI, as铆 mismo hacemos uso del patr贸n de presentaci贸n MVVM, dicho patr贸n est谩 incluido como una biblioteca de Architecture Components, que permite gestionar el ciclo de vida de las Actividades y recuperando los datos al comunicarse con los UseCases (Interactors)
La sub capa de Framework o Data, tiene la responsabilidad de recuperar los datos de fuentes externas o internas como Firebase, un Servicio de Backend, Room, u otros.
La capa de Interactors tiene la responsabilidad de contener los casos de uso de la Aplicaci贸n, estos se comunicar谩n con los distintos repositorios para obtener los datos.
La capa de Datos es nuestro punto de comunicaci贸n entre las capas de Interactors y la capa de Datos externos (Firebase, Room, etc). Dentro se contienen los repositorios que implementan las distintas fuentes de datos ya mencionados anteriormente, obteniendo de esta manera los datos de origen externo u interno.
La capa de Domain tiene la responsabilidad de modelar la aplicaci贸n, dentro est谩n los modelos que regir谩n a los casos de uso y la UI.
El uso de una Arquitectura Limpia da grandes ventajas, como hacer del proyecto escalable y mantenible en el tiempo.
Pero tener en cuenta que antes de comenzar un proyecto debemos de evaluar la mejor opci贸n, ya que a una mayor arquitectura, mayor la inversi贸n del tiempo en el desarrollo.
Podr铆as optar por usar MVVM o MVP para modelar la capa de presentaci贸n y en un futuro, implementar Clean Architecture.
Un especial agradecimiento a los autores de estos repositorios, ya que me apoyaron durante mi aprendizaje.
- https://github.com/antoniolg/architect-coders
- https://github.com/bufferapp/android-clean-architecture-boilerplate
- Edmundo Prado - DevEd20m