Una aplicación para visualizar el catalogo de peliculas actual.

Related tags

UI/UX Filmy
Overview

CI bitrise Logo FILMY es una aplicación destinada a dispositivos móviles Android, donde el usuario puede observar todas las películas lanzadas hasta el momento siendo clasificadas por rating y teniendo la opción de acceder a cada título y conocer toda su información, desde actores, duración hasta una breve sinopsis de la película.

Android - Kotlin - Compose - Clean architecture - MVVM - Coroutines - Dependency Injection - GitFlow - Retrofit

Libraries

Android Jetpack

  • Compose Conjunto de modernas herramientas de Android para crear interfaces de usuario nativa. Simplifica y acelera el desarrollo de la interfaz de usuario en Android.

  • Lifecycle Sirve para controlar los ciclos de vida de una aplicación Android de manera optima.

  • Activity Accede a las API que admiten composición compiladas sobre Activity.

  • LiveData Nos permite trabajar de manera reactiva nuestros componentes.

  • ViewModel Herramienta que facilita la implementación del patron de presentacion MVVM de forma nativa.

Image

  • Coil Utilizada para cargar imagenes desde internet de manera asincrona.

HTTP

Coroutines

  • Coroutines Nos permite manejar funciones asincronas en Android de una manera sencilla.

Dependency Injection

  • Hilt Es una biblioteca para realizar inyeccion de dependencias.

Arquitectura [Clean architecture]

Para desarrollar esta aplicación se optó por utilizar un arquitectura orientadas a capas, en donde las capas mas internas no tienen conocimiento sobre las capas mas externas. Esto con la finalidad de obtener como resultado un codigo más desacoplado y abierto al cambio. img_cleanArchitecture

Capas [Layers]

Dominio (Domain):

  • Entities: Las entidades son los modelos definidos que interactúan en el sistema. Estas deben ser lo suficientemente abstractas para ser usadas por múltiples aplicaciones en el negocio.
  • Use Cases: Contienen las reglas que le dan sentido a la aplicación. Los casos de uso dirigen el flujo a las entidades y las orquestan para cumplir con el negocio.

Data:

  • Network: Aquí se resuelven las peticiones a los distintos endpoint del API utilizado en el proyecto.
  • Repository: Es un patrón el cual se encarga de decidir desde dónde se va a obtener el dato solicitado, si será a través de internet o de la copia local.
  • Data Base: Es en donde se guardan los datos de la aplicación que son recibidos a través de internet. Aquí los datos persisten de manera local.

Presentation:

  • Framework: Al desarrollar la aplicación para Android utilizamos su marco de desarrollo, el cual nos provee las clases necesarias para facilitar el desarrollo de la aplicación, esto incluye, las activities, coroutines, viewmodels, etc.
  • UI: Es donde el usuario interactúa, realiza una acción y en base a esa interacción se disparan distintos eventos. Aquí se encuentran las Activities.
  • ViewModels: Es la interfaz o nexo que conecta la vista, lo que el usuario observa, y toda la parte lógica que sucede por detrás img_layers

Patrón de presentación [MVVM]

El patrón de arquitectura elegido para Filmy App es el MVVM, por sus siglas en inglés Model View ViewModel, es un patrón de diseño que tiene por finalidad separar la parte de la interfaz del usuario(de ahí la V de View) de la parte de la lógica de negocio(de ahí la M de Model), logrando así que la parte visual sea totalmente independiente. El otro componente es el ViewModel que es la parte que va a interactuar como puente entre la Vista y el Modelo. Se utilizó este patrón de presentación ya que es el que recomienda Google y viene integrado con el framework de Android.

img_patronpresenter

Patrones de Diseño

Observer

El patrón Observer es un patrón de diseño de comportamiento que permite definir un mecanismo de suscripción para notificar a varios objetos sobre cualquier evento que le suceda al objeto que está observando. Lo utilizamos para actualizar la lista de peliculas visitadas que se ve en el HomeActivity, esta lista varía a medida que visitamos una nueva película estás aparecen en tiempo real en nuestra pantalla.

Repository

El patrón repository está relacionado con el acceso a datos y nos permite tener una abstracción de la implementación de acceso a datos en nuestras aplicaciones, de modo que nuestra lógica de negocio no conozca ni esté acoplada a la fuente de datos. En pocas palabras esto quiere decir que el repositorio actúa como un intermediario entre nuestra lógica de negocio y nuestra lógica de acceso a datos para que se centralice en un solo punto, y de esta forma se logre evitar redundancia de código. En nuestro caso, utilizamos el patrón para decidir si la información que se le está pidiendo se buscará en la base de datos local o en la base de datos remota. img_patternrepository

Singleton

Es un patrón de diseño que permite restringir la creación de objetos de una clase a un único objeto, con la intención de garantizar que una clase tenga una única instancia y proporcionar un punto de acceso global a ella. Utilizamos el patrón Singleton crear una única instancia de Retrofit que tendrá el URL TheMovieDB base de datos de películas.

Strategy

Strategy es un patrón de diseño de comportamiento que permite definir una familia de algoritmos, colocar cada uno de ellos en una clase separada y hacer sus objetos intercambiables. Lo usamos para dibujar en pantalla distintos componentes en base a la respuesta obtenida desde el repositorio.

Wireframes

img_wireframe

Diagrama de componentes

img_componentsdiagram

Diagrama de Contexto

img_contextdiagram

GitFlow

Git Flow es un flujo de trabajo de Git que define diferentes tipos de ramas, con distintos fines y la interacción entre ellas.

  • Rama master será la principal, aquí se encontrará el código estable y listo para ser lanzado.
  • Rama dev es la rama de desarrollo. Inicia en la última versión estable de nuestra rama master y cuando quieren desarrollar una nueva funcionalidad se crea una rama feature que parte de ésta. Los desarrolladores realizarán merges y branches tomando como punto de partida esta última.
  • Rama feature nace cuando se quiere agregar una nueva característica o reparar algún error desde la rama dev con la nomenclatura feature/name_of_feature, una vez la característica se encuentra desarrollada, esta rama se mergea a la dev y termina su vida útil.
  • Rama hotfix surge de la necesidad de actuar inmediatamente al tomar conocimiento de un comportamiento indeseado de un release, parte desde la rama master de manera tal que se trabaje sobre el release que ya está en funcionamiento con el objetivo de solucionar solamente el problema sin intervenir con lo que se esté trabajando en dev.

img_gitflow

¿Como ejecutarlo?

La forma mas facil de ejecutar el proyecto es a traves del IDE Android Studio, pero aquí unas instrucciones para poder construir el proyecto de manera local.

  • ./gradlew runApp - Construye e instala la aplicación en el dispositivo conectado.
  • ./gradlew runUnitTests - Se ejecutan los Unit test y test de implementación
  • ./gradlew runTestCoverage - Genera un reporte del porcentaje de codigo cubierto con los test.
You might also like...
A Simple Privacy Browser - Some ScreenShots(Actual App Even Looks Better 😃 ):
A Simple Privacy Browser - Some ScreenShots(Actual App Even Looks Better 😃 ):

Lets_Browse A Simple Privacy Browser. Some ScreenShots(Actual App Even Looks Better 😃 ): Features 👇 : Bookmark Webpage Save Webpage as Pdf(Once Page

A Spotify Clone that plays music and has similar UI to actual Spotify Mobile App. Made with Exoplayer and love ❤️
A Spotify Clone that plays music and has similar UI to actual Spotify Mobile App. Made with Exoplayer and love ❤️

Spotify Clone A Spotify Clone App that can play music, and has a good looking UI that is very similar to actual Spotify Mobile App on Play Store I use

Ejemplo de una prueba técnica Junior aplicable a cualquier lenguaje
Ejemplo de una prueba técnica Junior aplicable a cualquier lenguaje

Prueba Técnica Cola Prioridad Sin Repetidos Ejemplo de una prueba técnica Junior aplicable a cualquier lenguaje. Prueba Técnica Cola Prioridad Sin Rep

Este es un ejemplo de como usar Kotlin en un proyecto Node.js, una api rest en Node.js con Express
Este es un ejemplo de como usar Kotlin en un proyecto Node.js, una api rest en Node.js con Express

Kotlin Hello Node.js Este es un ejemplo de como usar Kotlin en un proyecto Node.js, una API REST con Express Kotlin Hello Node.js Acerca de Uso Compil

Nuestro amigo R2-D2 ha sido enviado junto a Luke Skywalker debido a una serie de problemas relacionados con la contaminación en la Luna de Endor. Problema de Acceso a Datos
Nuestro amigo R2-D2 ha sido enviado junto a Luke Skywalker debido a una serie de problemas relacionados con la contaminación en la Luna de Endor. Problema de Acceso a Datos

# R2-D2 y las Lunas de Endor - Acceso a Datos Nuestro amigo R2-D2 ha sido enviado junto a Luke Skywalker debido a una serie de problemas relacionados

Aplicación android con MVVM, Room, Retrofit y Dagger Hilt, coonsumiento la API de TMDB.

TMDB Aplicación android con MVVM, Room, Retrofit y Dagger Hilt, coonsumiento la API de TMDB. To-Do: ☑ Diseño de aplicación con MVVM e inyeccion de dep

Aplicacion Android de Notas
Aplicacion Android de Notas

Note App Note App on Android using xml traditional. This project is a starting point for a Android application. Tools: Room Navigation Material design

API para calcular impostos sobre operações na bolsa e auxiliar na declaração de imposto de renda anual.

API que visa consolidar dados referetes às operações na bolsa para ajudar na declaração de imposto de renda (IRPF). Operações suportadas: Ações Day tr

🗓 Um projeto para registro de tarefas do usuário
🗓 Um projeto para registro de tarefas do usuário

✅ Um projeto para registro de tarefas do usuário 📱 Captura de telas Clique na imagem para expandir 🚀 Tecnologias Esse projeto foi desenvolvido com a

App de ejemplo para el contenido gratuito de Compose Expert
App de ejemplo para el contenido gratuito de Compose Expert

App de Ejemplo de Compose Expert Compose Expert va a ser la formación de Jetpack Compose más importante en habla hispana, donde podrás aprender todo l

Demo de uso de google maps en Android, charla para el GDG Chimbote

mapasbasico Demo de uso de google maps en Android, charla para el GDG Chimbote Puedes usar este proyecto como base para trabajar con mapas en Android.

App para consumir The Movie DB
App para consumir The Movie DB

AppTheMovie The app contains an Movies module, Images and a Locations module, the locations update every 30 minutes, the api The Movies DB was integra

O projeto Calling-Therapies é um aplicativo em desenvolvimento para o Trabalho de Conclusão de Curso da faculdade.

Calling-Therapies 📔 Informações sobre o projeto O projeto Calling-Therapies é um aplicativo em desenvolvimento para o Trabalho de Conclusão de Curso

Aplicativo que carrega os dados da News-Api usando o Hilt-Dagger para a injeção de dependência

News Api. Aplicativo Android cuja proposta que consulta a api rest da News API e retornar noticías da categoria de tecnologia. A consulta é feita usan

App de test para ingreso a Mercado Libre
App de test para ingreso a Mercado Libre

Proyecto Mercado Libre Proyecto de prueba para ingreso en Mercado Libre Tabla de contenidos Acerca del projecto Construido con Primeros pasos Pre-requ

Criando um App para Apresentar seu Portfólio do GitHub

LAB - Criando um App para Apresentar seu Portfólio do GitHub O curso pode ser acessado na plataforma da Digital Innovation One. Sobre o Autor Sou um d

App de recetario para Android
App de recetario para Android

Recetario-Kotln App de recetario para Android Capturas de pantalla Menú principal de la aplicación Lista de Recetas que se muestra al seleccionar cual

App desenvolvido para um desafio de vaga.
App desenvolvido para um desafio de vaga.

Desafio - Filmes 🎥 📼 O desafio consistia em criar um app que se assemelhasse a tela de informações do filme do app TodoMovies. Screenshot de referên

Projeto integrado das disciplinas de Programação de Dispositivos Android 1 (PA1) e Banco de Dados para Computação Móvel (BDM).
Projeto integrado das disciplinas de Programação de Dispositivos Android 1 (PA1) e Banco de Dados para Computação Móvel (BDM).

Conserte Esta Rua Aplicativo Android a ser utilizado como ferramenta de Controle Social. Sumário Sobre o Projeto Link para o Video Desenvolvido com Re

Comments
  • Se agrega Shimmer loading

    Se agrega Shimmer loading

    Se agrega strategy para manejar los distintos tipos de carga, se modifica la animacion de carga y ajustan los test para que corran con esta nueva implementacion

    opened by JereSch8 0
  • Problema con el

    Problema con el "@SerialName" de la entitie Movie

    Se resuelve problema en la Movie que ocasionaba problema al parsear el JSON, se perdian valores debido al @SerialNamed que no funcionaba de manera adecuada.

    opened by JereSch8 0
  • Hotfix/entitie movie

    Hotfix/entitie movie

    Se resuelve problema en la Movie que ocasionaba problema al parsear el JSON, se perdian valores debido al @SerialNamed que no funcionaba de manera adecuada.

    opened by JereSch8 0
Releases(v2.0.0)
Owner
Jeremias Schneider
Hola! Soy Jere, Estudio Ing. en Computación en la UNC - FCEFyN.
Jeremias Schneider
Es este repositorio, desarrollaremos e implementaremos una aplicación móvil nativa para la asignatura PAMN

BeHealthy “Have a good diet” Descripción breve del proyecto Este documento explica el objetivo de BeHealty como aplicación de software, las partes de

Fernando 5 Dec 15, 2022
ImagesApp Aplicación que consume la API de Unsplash con Retrofit y muestra una lista de imágenes

ImagesApp Aplicación que consume la API de Unsplash con Retrofit y muestra una lista de imágenes. Esta aplicación fue desarrollada usando la arquitect

Jorge S 0 Jan 4, 2022
Kotlin-GraphQL-Apollo - Sencillo cliente para consumir una API GraphQL con Apollo usando Kotlin

Kotlin GraphQL Apollo Sencillo cliente para consumir una API GraphQL con Apollo

José Luis González Sánchez 2 Jan 25, 2022
Aplicación Android para comprender como funciona el listado y las shared preferences

READ.ME Este proyecto tiene como finalidad explicar como se debe utilizar un RecyclerView con una vista bindeada a este. En el proyecto se puede ver c

Carlos Muñoz Bustamante 4 Apr 12, 2022
Sencilla aplicación web para realizar un CRUD usando Ktor y motores de plantillas similar a Laravel con PHP

Servicio web para crear una WEB App usando Kotlin y Kator así como otras tecnologías propuestas por JetBrains.

José Luis González Sánchez 1 Feb 12, 2022
Aplicación Android para búsqueda de precios de combustibles en España

GasolinerasApp Introducción El objetivo de esta aplicación es proporcionar información actualizada sobre gasolineras y precios de combustible. Esta in

Igor Recio 10 Jan 8, 2023
Aplicación Android desarrollada para cubrir las necesidades de Protección Civil del Gobierno Municipal de Atizapan de Zaragoza Edo. Mex. México

Proteccion-Civil-Atizapan-Desarrollo-Movil Aplicación Android desarrollada para cubrir las necesidades de Protección Civil del Gobierno Municipal de A

Sergio Gonzalez 2 Nov 23, 2022
Uma biblioteca completa e performática para destacar trechos de textos usando Spannable com Expressões Regulares (Regex) para Android.

Highlight Uma biblioteca completa e performática para destacar trechos de textos usando Spannable com Expressões Regulares (Regex) para Android totalm

Irineu A. Silva 16 Dec 22, 2022
💳 CreditCardView is an Android library that allows developers to create the UI which replicates an actual Credit Card.

CreditCard View CreditCardView is an Android library that allows developers to create the UI which replicates an actual Credit Card. Displaying and en

Vinay Gaba 769 Dec 14, 2022