Esta prueba tiene como objetivo evaluar tu competencia en la construcción de una API en Ruby on Rails que consuma una API externa, almacene los datos obtenidos en una base de datos local PostgreSQL y permita a los usuarios recuperar la información almacenada.
Se te pide crear una aplicación en Rails, específicamente una API, que realice lo siguiente:
- Poblar la tabla 'Articles': Obtener datos de una API externa de noticias y guardarlos en la tabla 'Articles' de tu base de datos local PostgreSQL.
- Recuperar datos de noticias: Implementar un endpoint que permita a los usuarios obtener noticias de la tabla 'Articles.
- Utiliza PostgreSQL como la base de datos para esta aplicación.
- Crear una aplicación de Ruby on Rails que sea unicamente API.
- La aplicación debe obtener automáticamente datos de noticias de la API externa y almacenarlos en la tabla 'Articles' en la primera ejecución o si la tabla 'Articles' está vacía. Si la tabla 'Articles' ya contiene datos, la aplicacion no deberia de hacer el llamado a la API externa.
- Asegúrate de que la aplicación obtenga y almacene al menos 20 artículos de la API.
- El endpoint de la API para obtener noticias debe ser
/articles
y debe devolver los datos de noticias almacenados en formato JSON.
Tu entrega será evaluada en función de los siguientes criterios:
- Funcionalidad: ¿La aplicación obtiene correctamente los datos de la API y los almacena en la tabla 'Articles'? ¿Los usuarios pueden recuperar datos de noticias a través del endpoint de la API?
- Calidad del código: ¿El código está bien estructurado, es legible y sigue las convenciones de Rails? ¿La gestión de errores y los registros están implementados correctamente?
- Manejo de la base de datos: ¿Está configurado correctamente PostgreSQL y los datos obtenidos están almacenados con precisión en la tabla 'Articles'?
- Bonificaciones: Se considerarán funcionalidades adicionales o mejoras más allá de los requisitos básicos.
Esta prueba tiene como objetivo evaluar tu capacidad para crear una aplicación en Flutter que consuma el endpoint /articles
proporcionado por la API en Ruby on Rails que creaste en el paso anterior, puedes ver el diseño acá.
Tu tarea es crear una aplicación en Flutter que realice lo siguiente:
- Consumir Endpoint '/articles': Desarrollar una aplicación en Flutter que se conecte al endpoint
/articles
de la API en Ruby on Rails. - Recuperar y Mostrar Datos de Noticias: Implementar una interfaz de usuario que muestre los datos de noticias recuperados de la API de Rails.
- Crear las vistas correspondientes: Crear las vistas solicitadas por partes del entrevistador.
Asegúrate de cumplir con los siguientes requisitos al desarrollar la aplicación en Flutter, puede encontrar el diseño acá:
- La aplicación debe ser capaz de realizar solicitudes HTTP al endpoint
/articles
de la API en Ruby on Rails. - Utiliza el método adecuado en Flutter para realizar llamadas a la API.
- Muestra los datos de noticias obtenidos de la API en una interfaz de usuario de manera legible y ordenada.
- Se debe de crear una vista principal, que es la vista correspondiente a cuando la aplicacion carga por primera vez. Esta vista debera de contener una lista con las 20 noticias (o la cantidad de noticias que el usuario haya escogido en la prueba anterior). Cada item dentro de la lista debe de contener la imagen de la noticia, su titulo y la descripcion.
- Se debe crear la vista de detalles para cada noticia, esta vista se cargara al darle click a un item de la lista en la vista principal. Esta vista deberia de contener toda la informacion recolectada de la API.
Tu entrega será evaluada en base a los siguientes criterios:
- Funcionalidad: ¿La aplicación de Flutter se conecta con éxito al endpoint
/articles
de la API de Rails y muestra los datos de noticias obtenidos? - Interfaz de Usuario: ¿La interfaz de usuario es amigable y presenta los datos de manera clara y legible?
- Manejo de Datos: ¿La aplicación en Flutter maneja los datos de manera efectiva, sin errores ni inconsistencias?
- Código y Estructura: ¿El código está organizado, sigue las mejores prácticas de Flutter y es fácil de entender?
- Manejo de Errores: ¿La aplicación maneja adecuadamente los errores en caso de problemas de conectividad o de datos faltantes?
- Bono: Se considerarán funcionalidades adicionales o mejoras más allá de los requisitos básicos.
Una vez que hayas completado las tareas, sube tu codigo a un repositorio de GitHub con su docmentacion para su debida evaluacion.
Asegúrate de manejar de manera segura la información sensible (claves de API, credenciales) y de no exponerlas directamente en tu código o repositorio.