PRUEBAS TÉCNICAS basadas en competencias de desarrollo para contratación de talento humano Front-end Developer Tipo de solución Aplicación móvil Tecnología para entregar Javascript / React Native Formato de entrega Repo en Github a correo [email protected] Fecha y hora de entrega 1 de Abril de 2023 23:59 GMT-6 PRUEBA A DESARROLLAR Antecedentes En un pueblo donde se desarrollan artesanías y a su vez es visitada por turistas, la población local necesita una aplicación móvil donde puedan colocar sus productos y a través de la misma app los turistas puedan realizar sus reservas de productos (No pago en línea) para impulsar la economía local de dicha comunidad. Dicha aplicación va enfocada a trabajar en base a los ODS 1 - Fin de la pobreza 8 - Trabajo decente y crecimiento económico 11 - Ciudades y comunidades sostenibles Los usuarios han recibido la capacitación para que puedan crear su usuario y cargar sus productos, así los clientes/turistas que descarguen la app, podrán realizar las reservas de dichos productos. ALCANCE USUARIO ARTESANO Con la siguiente API desarrollar la aplicación móvil POST ENDPOINT PARAMS https://dummyjson.com/users/a dd firstName: string lastName: string age: int email: string username: string password: string gender: string (male, female). POST https://dummyjson.com/auth/lo gin GET https://dummyjson.com/auth/pr oducts/category/handcraft POST https://dummyjson.com/auth/pr oducts username: string password: string N/A title: string, description: string price: float discountPercent age: float stock: 1 category: string DESCRIPTION Crear pantalla para registrar los usuarios y obtener el Id devuelto. Se deberá crear un usuario para el artesano. Crear pantalla para iniciar sesión a través del username y password, se deberá almacenar el token de autenticación de manera local utilizando redux persist para las siguientes peticiones a través de token Bearer Obtener los productos de los artesanos El artesano deberá tener una interfaz donde pueda crear un producto. Para la categoría dejar siempre “handcraft” y el stock en 1, al crear el producto, la app deberá navegar a ver el detalle del producto ENDPOINT PARAMS DESCRIPTION N/A La app del artesano deberá tener una pantalla donde se muestran todas las reservas que se tienen, puede ser el home o crear otra aparte PUT https://dummyjson.com/auth/to dos/{ID} ID del todo body completed: bool El artesano deberá tener una pantalla donde podrá decir que la reserva del producto ya está lista, cambiando el TODO de false a true y deberá desaparecer del listado de TODOS DELETE https://dummyjson.com/auth/to dos/{ID} ID de todo Eliminar el TODO que se pasó de false a true GET https://dummyjson.com/auth/to dos/ ALCANCE USUARIO TURISTA Con la siguiente API desarrollar la aplicación móvil POST POST ENDPOINT PARAMS https://dummyjson.com/users/a dd firstName: string lastName: string age: int email: string username: string password: string gender: string (male, female) https://dummyjson.com/auth/lo gin GET https://dummyjson.com/auth/pr oducts/category/handcraft GET https://dummyjson.com/auth/pr oducts/{ID} username: string password: string N/A ID de producto DESCRIPTION Crear pantalla para registrar los usuarios y obtener el Id devuelto. Se deberá crear un usuario para el turista Crear pantalla para iniciar sesión a través del username y password, se deberá almacenar el token de autenticación de manera local utilizando redux persist para las siguientes peticiones a través de token Bearer Obtener los productos y mostrarlos en pantalla de manera atractiva hacia el usuario (con botón para realizar la reserva directamente o ver más al darle tap al producto en sí) Mostrar el detalle de un producto, con botón de realizar la reserva POST GET ENDPOINT PARAMS DESCRIPTION https://dummyjson.com/auth/ca rts/add userId: int products: [{ id: int, quantity: int, }] Agregar el producto reservado al carrito de compra, se pueden agregar más de un producto en la llave “products” ya que acepta un array con los json de cada producto. ID de usuario Mostrar en otra pantalla los productos del carrito, dicha pantalla debe tener navegación al home (y viceversa) cuando se desee y agregar más productos que aparezcan reflejados en dicho carrito todo: string completed:bool userId: int Se creará la reserva con el completed false, en el todo: se deberá colocar “Reserva de producto: NOMBRE PROD CONCATENADO” ID de carrito Luego de realizar la reserva, se deberá eliminar el carrito y regresar al home https://dummyjson.com/auth/ca rts/user/{ID} POST https://dummyjson.com/auth/to dos/add DELETE https://dummyjson.com/auth/ca rts/{ID} ¿QUÉ TE EVALUAREMOS? INDICADOR PUNTAJE Conocimiento previo de envío de parámetros según métodos descritos en API 2% Creación de interfaz fácil de utilizar para el artesano considerando el poco uso de herramientas tecnológicas 5% Flujo dinámico para ambos roles 7% Lógica básica de envío de parámetros entre pantallas 7% Clean code programación orientada a objetos 7% Legibilidad del código: nombres de métodos y variables claras, autodocumentado, métodos pequeños, no comentarios innecesarios. 8% Reutilización de funciones que agilicen procesos y cargas 8% Control de excepciones para experiencia de usuario 8% Señalización de acciones a través de paquetería de iconos 8% Utilización de useStates y useEffects 10% ¿QUÉ TE EVALUAREMOS? INDICADOR PUNTAJE Utilización de Redux Persist para almacenamiento local 10% Utilización de herramientas como Expo para la exportación en Android e iOS 10% Realización de pruebas unitarias de alta cobertura (deben ser satisfactorias) 10% PUNTOS ADICIONALES Ejecutable en APK e IPA Interfaz gráfica amigable y utilización de colores en las pantallas Uso de librerías de Geolocalización y mapas o cualquier otro elemento creativo o tecnológico para mejorar la experiencia del cliente y/o agilizar la programación