La aplicación trata de resolver el problema a la hora de decir que películas o series ver cuando se juntan varias personas en un grupo. Cuesta poner a la gente de acuderdo para decidir que ver ya que siempre hay alguien que ha visto lo que la mayoría quiere ver, las preferencias son muy distintas, etc.
La aplicación te permite añadir las películas que has visto y las que quieres ver y el fantástico algoritmno que incorpora se encarga de filtrar esa información, para cada miembro del grupo, y recomerdar la película que a todos les gustaría ver en esa reunión de amigos o quedada familiar.
MVVM (Model-View-ViewModel): Sigue los estándares establecidos por Google y utilizados ampliamente por la comunidad de desarrolladores. Esto asegura una separación clara entre la lógica de la UI, la lógica de negocios y el modelo de datos, facilitando el mantenimiento y la escalabilidad.
Flow y Coroutines: Para la gestión reactiva del estado, se utiliza Flow, lo que permite una actualización eficiente y segura de la UI en respuesta a los cambios de datos.
Hilt: La inyección de dependencias se maneja a través de Hilt, simplificando la construcción de objetos y promoviendo un acoplamiento más débil y un código más testeable.
Firestore: Se utiliza para gestionar los usuarios, la películas y los grupos a los que pertenecen.
Auth: Se utiliza Firebase Authentication para obtener el UID que se enviará al backend para identifciar a los usuarios. Los proveedores de registro utilizados son: emial/pass y Google
Crashlytics: Se utiliza Crashlytics para la detección temprana de errores que puedan ocurrir en la aplicación y poder atajarlos los antes posible evitando que afecte a más usuarios.
Jetpack Compose: Este proyecto está construido utilizando Jetpack Compose, el moderno toolkit de UI de Android para crear interfaces nativas de forma declarativa y eficiente. Simplifica y acelera el desarrollo de la IU en Android.
Retrofit: Para las llamadas a la API, Retrofit es utilizado por su eficiencia y facilidad de integración con los convertidores de JSON como Gson.
Navigation Component: Para la gestión de la navegación en la aplicación, se emplea el componente de navegación de Android Jetpack, en conjunto con una libreria de terceros para gestionar los argumentos de navegacion.
Coroutines: Para la programación asíncrona y la gestión de tareas en segundo plano, se utilizan las Coroutines de Kotlin.
StateFlow: Para la comunicación entre ViewModel y UI se utiliza StateFlow.
CI/CD: Se utiliza Github Actions para la Integración Continua
Ktlint: Se utiliza para la comprobación y autoformato del código para mantener un estandar entre todos los miembros que colaboran en el proyecto. En particular, se está utilizando el plugin de jlleitschuh.
Para participar en este proyecto recomiendo:
Debido a la utilización de Firebase y Github Actions el proyecto no compilará automáticamente, por lo que es necesario una serie de paso:
En primer lugar, crea un proyecto de firebase y configúralo. No olvides:
google-services.json
y añadirlo dentro de tu carpeta app de tu proyecto de android.Para obtener el token de API de TMDB, regístrate en TMDB, ve a Settings > API, y crea una nueva clave de API.
A continuación, añádela an el fichero gradle.properties de tu proyecto con el nombre TMDB_ACCESS_TOKEN
Puedes acceder a la política de privacidad en este enlace.