¡Gracias por participar en el programa de aprendizaje de Android! Aquí encontraras las instrucciones del desafío.
El propósito de este desafío es que puedas demostrar tus habilidades de desarrollo en Android. Esta es tu oportunidad para demostrar todo lo que has aprendido durante el curso. En este desafío, construirás una aplicación de Android completa por tu propia cuenta. No queremos limitarte, por eso, mejor solicitamos que construyas una aplicación desde cero. Esperamos que encuentres este ejercicio desafiante y llamativo. El propósito es construir una aplicación que use la API pública de Bitso, la cuál debe incluir:
- Una pantalla que muestre todas las monedas disponibles
- Una pantalla de detalle para cada moneda
- Persistencia local
Estos son los requerimientos principales que evaluaremos:
- Hacer uso de todo lo que has aprendido durante el curso:
- Mejores prácticas
- Diseño de API
- Diseño de UI
- Patrones de diseño
Para publicar tu trabajo, deberás seguir estos pasos:
- Crear un
pull request
con tu código, apuntando a la ramamaster
- Llenar este formato
- Mantente al pendiente de la retroalimentación.
- Genera los cambios conforme a los comentarios de tu mentor.
Para empezar, sigue los siguientes pasos:
- Realiza
Fork
a este proyecto - Convierte tu proyecto en privado
- Concede accesos a este proyecto a tu mentor
- Genera
commit
y sube tus cambios de manera periódica - Realiza los cambios según los comentarios de tu mentor
- ¡Diviértete!
Proporcionamos las fechas de entrega para que pueda organizarse; por favor, tome este desafío con seriedad e intente progresar constantemente. Vale la pena mencionar que solamente podrás obtener retroalimentación del equipo de revisión para tu primera entregable, de tal manera tendrás la oportunidad de corregir o mejorar tu código según nuestras sugerencias. Para el último entregable, proporcionaremos cierta retroalimentación, pero ya no habrá una última revisión posterior a ello. Si estás teniendo conflictos con algo, contacta a tu menor o cualquier encargada para obtener ayuda a tiempo. Siéntete libre de usar el canal de Slack.
Con base en el material de autoestudio y las mentorías hasta este entregable, sugerimos que desarrolles lo siguiente:
- Crear un cliente de red para poder consumir los siguientes servicios haciendo uso de
GsonAdapter
para obtener las clases de manera sencilla: - Busca imágenes que representen las monedas y agrega dichas imágenes a la lista de monedas.
- Trabaja con MVVM y LiveData para poder diseñar la aplicación:
- Crear una pantalla que va a mostrar una lista de las monedas utilizando el servicio
available-books
- Crear una pantalla de detalle que mostrará el último precio, el más alto y el más bajo. Además, mostrar una lista de
bids
yasks
haciendo uso del servicioorder-book
- Crear una pantalla que va a mostrar una lista de las monedas utilizando el servicio
- Hacer uso de buenas prácticas
Nota: la lista anterior de este entregable es sólo una guía para ayudarte a distribuir la carga de trabajo; puedes entregar más o menos elementos si es necesario. De igual manera, si entregas menos elementos en este punto, tendrás que cubrir los elementos restantes en el siguiente entregable.
Con base en el material de autoestudio y las mentorías hasta este entregable, sugerimos que desarrolles lo siguiente:
- Agregar persistencia utilizando
Room
para poder usar la aplicación cuando no se cuente con conexión a internet. - Agregar la librería
OkHttp
para hacer uso delHttpLoggingInterceptor
para todos los eventos de red, y además añadir el headerUser-Agent
- Implementar
function type
,lambdas
yextension function
- Agregar algunas pruebas unitarias y de vista.
- Hacer refactor de la vista, actualiza tus layouts haciendo uso de
ConstraintLayout
- Hacer uso de buenas prácticas
Nota: la lista anterior de este entregable es sólo una guía para ayudarte a distribuir la carga de trabajo; puedes entregar más o menos elementos si es necesario. De igual manera, si entregas menos elementos en este punto, tendrás que cubrir los elementos restantes en el siguiente entregable.
- Agrega un
linter
para poder hacer análisis estático de tu código. - Has uso de algunas características avanzadas de Kotlin como:
inline functions
,tail recursive
,delegated properties
ycollection operations
- Implementa
coroutines
y usasuspend functions
con Retrofit. - Implementa Hilt como framework de inyección de dependencias.
- Implementa
navigation component
para navegar entre las distintas pantallas. - Implementa RxJava2 o RxJava3, envuelve la respuesta de Retrofit y crea un
observable
que vaya a ser observado o cambia la respuesta de Retrofit a unObservable
. - Hacer uso de buenas prácticas
Importante: este es el último entregabble, por lo cual todos los requerimientos deben ser incluidos. Proveeremos retroalimentación de tu entregable y tendrás 3 días más para aplicar los cambios. En el tercer día, dejaremos de recibir cambios a las 11:00 a.m.