Coder Social home page Coder Social logo

yapechallenge's Introduction

YapeChallenge

Challenge for Yape

UI

Pude haberlo hecho 100% en Jetpack Compose, pero para ir más hacia lo clásico, elegí XML. Si tuviese que elegir, iria por Jetpack Compose. De acuerdo a lo leido en diversos foros, el rendimiento es mejor que con XML, y de paso es mucho mas simple trabajar con listas, ya que no necesita Adapters.

Arquitectura

Para esta demo, elegí la clásica arquitectura MVVM + Clean Architecture (data, domain, presentation).

Librerias

Navigation components: Una activity, hosteando tantos fragments como views necesite en la App, orquestando la navegación con el Nav Graph y también los argumentos.

Libreria de terceros

  • Retrofit para la llamada al "backend"
  • Glide para cargar imagenes desde la web a un container de la vista de XML
  • Dagger Hilt para inyección de dependencias
  • Google maps

Patrones de diseño

  • Observer -> El livedata principal que trae las recetas
  • Adapter -> Usado por ejemplo en el Recycler View Adapter
  • Dependency Injections -> Dagger Hilt
  • Singleton -> Para tenes una instancia común en todo el proyecto de Retrofit por ejemplo
  • Builder -> Para crear la instancia de Retrofit
  • Facadde -> Repository interface

Testing

Para realizar las pruebas unitarias del UseCase y del ViewModel, utilicé Junit4 [Los test cases pasan satisfactoriamente]

Funcionamiento de la App

MainScreen, la cual al crearse escucha un livedata en el ViewModel, este Livedata alimenta la Recycler View con las recetas traidas desde la API. Al hacer click sobre una receta, pasa por Arguments la recipe seleccionada al fragmento de Detail, este muestra la imagen y una descripción ficticia. Al hacer click sobre el ícono de Mapa, lleva a una tercera Screen, que recive por Argumentos un objeto la clase Location(val lat: String, y val long:String), posteriormente parsea esto a LatLong, y con eso dibuja el PIN en el Mapa.

Imagenes

y1 y2 y3 y4

yapechallenge's People

Contributors

devmcgann avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.