Desafio técnico para evaluar el conocimiento de los aspirantes a unirse al equipo de Backend.
Recientemente te has unido a un equipo que esta desarrollando una aplicación mobile para una gran compañía de e-commerce.
Esta aplicación esta dirigida a dispositivos de bajo rendimiento hasta dispositivos con gran poder de procesamiento.
El cliente ya cuenta con un backend establecido que contiene todas las reglas e información de negocio, pero algunos sistemas dependen de tecnologías legadas que pueden ser inestables.
Tu eres responsable de construir la API que integrará con estos servicios y proveerá todas las informaciones que Mobile necesita.
Para las próximas iteraciones, el equipo va a trabajar en la Pantalla de Início y tu debes construir todo(s) los endpoint(s) que se requieran para integrar con los servicios y proveer la información para la pantalla.
Necesitarás consumir los siguientes servicios:
- Categorias: https://cs-hsa-api-categories.herokuapp.com/docs
- Cupones: https://cs-hsa-api-coupons.herokuapp.com/docs
El equipo Mobile necesita construir una pantalla de inicio que debe mostrar:
- Carrusel con Top 5 categorias.
- Carrusel con cupones que no han expirado.
- Tabla (Grid) con las categorias restantes.
- Mobile no necesita de todas las imagenes del modelo de categorías, pero solamente el icono y la imagen más pequeña. Tu podrías tener que filtrar la respuesta, si tu quieres.
- La API de Cupones es inestable y a veces demora en responder.
- La API de Categorias responde un modelo complejo de manejar.
Eres libre para implementar la solución de la forma que consideres mejor, pero debes considerar el escenario, objetivo, implicaciones de performance y stack/pool de tecnología propuesta abajo.
- Nos enfocamos mucho en la calidad de nuestros proyectos y nos gustaría ver alguna estrategia aplicada. Puedes usar, por ejemplo, Pruebas Unitárias;
- No queremos que la experiencia de usuario se vea afectada por el rendimiento de los servicios;
- Usted tiene 1 semana para completar el desafio. Si necesitas mas tiempo, no hay problema, puede hablar con nosotros y veremos que podemos hacer :)
- Java 8 o superiores.
- Cualquier Framework Web. Sugerencia: Spring Boot.
- Cualquier API Client. Sugerencia: Feign.
- De preferencia Gradle como sistema de compilación.
- Tu eres libre para escoger librerias y frameworks de pruebas que mas te guste. Nuestra sugerencia es: JUnit, Mockito.
Siga los pasos para implementar y enviar este desafio:
- Haga un Fork a este repositorio. Mira esta guía para mayores informaciones: How to Fork a repository.
- Implemente el desafio.
- Después de completar el desafio, realise un Pull Request a este repositorio, utilisando la interface de Github. Check this guide for more details.
- Si es posible, deja tu repositorio publico para hacer la revision de codigo mas sencilla.
No intente hacer un PUSH directo a ESTE repositorio!