Está en la página 1de 6

 

 
Prueba Técnica - Desarrollador Fullstack 

Instrucciones 
El  tiempo  ideal  de  ejecución  de la prueba está entre 3 y 4 horas. Si te toma más 
tiempo  igual  puedes  enviar  los  resultados  a  la  hora  que  termines,  pero  eso 
afectará la calificación de la prueba. 

La  prueba  debe  ejecutarse  usando:  Node.js,  Nest.js,  Angular,  Mongo  DB  y 
codificando en TypeScript. 

¡Buena suerte! 

 
BackEnd 
El  BackEnd  debe  tener  2  controladores:  gatos  e  imágenes.  Se  debe  crear  un 
servicio  por  cada  controlador  y  los  modelos  necesarios  para  el  intercambio  de 
datos a través de REST. 

Controlador Imágenes: 

El  controlador  de  imágenes  debe  conectarse  a  la  API  pública 


https://thecatapi.com/​.  
Puede usar la key ​f221c99b-304d-4404-b111-cbd3ddccf31a. 

El controlador debe tener 3 acciones: 

● GET  /imagenes  :  ​Debe  retornar  una  lista  de  10  imágenes  públicas 
aleatorias del API. 
● POST  /imagenes/favoritos:  ​Debe  permitir  marcar  una  de  las  imágenes 
como favorita enviando el id de la imagen en el body. 
● GET  /imagenes/favoritos:  ​Debe  retornar  la  lista  de  imágenes  marcadas 
como favoritas. 

Cada  una  de  las  acciones  corresponde  a  un punto de entrada de TheCatAPI y 


por  ende  no  requiere  del  uso  de  base  de  datos,  el  BackEnd  funcionará  como 


Información confidencial 
Kafka S.A.S - 2020 
 
 
un  intermediario  entre  el  FrontEnd  y  el  API  de  imágenes.  Para  más  información 
sobre el uso del API revisar la documentación de la misma. 

 
Controlador Gatos: 

Este  controlador  debe  proveer  un  CRUD  para  gestionar  gatos  y  debe  usar 
MongoDB para el almacenamiento de datos. 

Para cada gato se debe almacenar la siguiente información: 

● Nombre (texto) 
● Raza (texto) 
● Edad (numero) 
● Foto (texto URL) 

  

La foto del gato debe ser una URL de una de las fotos de TheCatAPI. 

El controlador debe tener 5 acciones: 

● GET /gatos : ​Debe retornar una lista de todos los gatos existentes 
● GET /gatos/:id : ​Debe retornar el gato con el id enviado en la URL 
● POST  /gatos  : ​Debe permitir crear un nuevo gato con la información 
enviada en el body 
● PUT  /gatos/:id  :  ​Debe  permitir  actualizar  el  gato  con  el  id  enviado 
en la URL usando la información enviada en el body 
● DELETE  /gatos/:id  :  ​Debe  permitir  eliminar  el  gato  con  el  id  enviado 
en la URL 

 
FrontEnd 
El  FrontEnd  debe  estar  compuesto  de  2  módulos  (además  del  módulo  base): 
gatos  e  imágenes  que  deben  ser  cargados  a  través  de  Lazy  Loading.  Cada 
módulo  tendrá  los  componentes  que  se  crean  necesarios  para  cumplir  con  el 
objetivo.  Se  debe  crear  un  servicio  por  cada  módulo  y  los  modelos  necesarios 
para el intercambio de datos a través de REST. 

La  página  debe  tener  una  barra  de  navegación  que  permita  ir a los módulos o 
regresar a la página de inicio. 


Información confidencial 
Kafka S.A.S - 2020 
 
 

  

Módulo Imágenes: 

La  única  página  del  módulo  de  imágenes  debe  permitir  ver  10  imágenes 
aleatorias  de  TheCatAPI  y  debe  permitir  marcar  cualquiera  de  esas  imágenes 
como  favorita  a  través  de  un  botón.  Recordar  que  ya  que  son  aleatorias  cada 
vez  que  se recarga la página se mostrarán nuevas imágenes. Los registros de las 
imágenes  deben ser cargados usando un Resolver de tal manera que la página 
no cargue hasta que no se hayan obtenido los datos del servidor. 

La  presentación  de  las  imágenes  se  debe  hacer  en  2  filas  de  5 imágenes cada 
una. 


Información confidencial 
Kafka S.A.S - 2020 
 
 

Módulo Gatos: 

La  página  que  se  debe  observar  al  navegar  al  módulo  debe  tener  una  lista de 
todos  los  gatos  que  se  encuentran  en  la  base  de  datos  con  su  respectiva  foto. 
En  la  parte  superior  de  la  página  debe  haber  un  botón  que  permita  ir  a  una 
página  de  creación  de  un  nuevo  registro.  Cada  gato  debe  tener  2  botones, 
uno  que  permita  ir  a  una  página  de  edición  y  uno  que  permita  eliminar  el 
registro.  Si  elimino  un  registro  se  debe  reflejar  tanto  en  la  página  como  en  el 
BackEnd.  Los  registros  de  los  gatos  deben  ser  cargados  usando  un  Resolver  de 
tal  manera  que  la  página  no  cargue  hasta  que no se hayan obtenido los datos 
del servidor. 


Información confidencial 
Kafka S.A.S - 2020 
 
 

En  la  página  de  creación  debe  haber  un  formulario  que  permita  ingresar  el 
nombre,  raza  y  edad  del  gato,  además  de  un  botón  que permite ver la lista de 
imágenes  que  ha  marcado  como  favoritas  y  escoger  una  de  ellas  cuya  URL 
será  asignada  al  atributo  ​Foto  del  gato  que  está  creando  (Se  sugiere  el  uso  de 
un  modal  para  mostrar  la  lista  de  imágenes  favoritas).  Después  de  seleccionar 
la  foto,  esta  se  debe  mostrar  debajo  del  formulario  y  debe  permitir  cambiar  la 
foto  haciendo  click  en  un  botón.  Esta  página  debe  tener  2  botones:  uno  que 
me permita guardar y regresar a la lista de gatos y otro para cancelar y regresar 
a la lista de gatos. 

La  página  de  edición  deberá tener lo mismo que la página de creación pero el 


formulario  tendrá  los  datos  del  gato  que  estoy  editando.  Estos  datos  deben  ser 
obtenidos usando la acción del BackEnd que permite obtener un gato con su id 
y  debe  obtenerse  usando  un  Resolver  de  tal  manera  que  la  página  no  cargue 


Información confidencial 
Kafka S.A.S - 2020 
 
 
hasta  que  no  se  hayan  obtenido  los  datos del servidor. Puede reutilizar el mismo 
componente para la creación y la edición si lo desea. 

  

Aunque  no  es  necesario  se  sugiere  usar  una  librería  de  estilos  para  la 
organización y presentación del contenido (Bootstrap, Material).  


Información confidencial 
Kafka S.A.S - 2020 

También podría gustarte