/VerPerros

App utlizando React, Redux, Node y Sequelize y la API https://thedogapi.com/

Primary LanguageJavaScript

Individual Project - Henry Dogs

##Link del Pryecto: https://verperros-6qidov6m2-williamcortes.vercel.app/

Objetivos del Proyecto

  • Construir una App utlizando React, Redux, Node, Sequelize y Postgres.
  • Afirmar y conectar los conceptos aprendidos en la carrera de Soy Henry.
  • Aprender mejores prácticas.
  • Aprender y practicar el workflow de GIT.
  • Usar y practicar testing.

BoilerPlate

El boilerplate cuenta con dos carpetas: api y client. En estas carpetas estará el código del back-end y el front-end respectivamente.

Enunciado

La idea general es crear una aplicación en la cual se puedan ver distintas razas de perro junto con información relevante de las mismas utilizando la api externa the dog api y a partir de ella poder, entre otras cosas:

  • Buscar perros
  • Filtrarlos / Ordenarlos
  • Agregar nuevos perros

Ruta principal: Contiene

  • Input de búsqueda para encontrar razas de perros por nombre
  • Área donde se verá el listado de razas de perros. Deberá mostrar su:
    • Imagen
    • Nombre
    • Temperamento
  • Botones/Opciones para filtrar por por temperamento y por raza existente o agregada por nosotros
  • Botones/Opciones para ordenar tanto ascendentemente como descendentemente las razas de perro por orden alfabético y por peso
  • Paginado para ir buscando y mostrando las siguientes razas

Ruta de detalle de raza de perro: Contiene

  • Los campos mostrados en la ruta principal para cada raza (imagen, nombre y temperamento)
  • Altura
  • Peso
  • Años de vida

Ruta de perros Favoritos: Contiene

  • Todos los perros agregados a fovoritos y la opción de eliminarlos de esta ruta.

Ruta de creación de raza de perro: Contiene

  • Un formulario controlado con los siguientes campos
    • Nombre
    • Altura (Diferenciar entre altura mínima y máxima)
    • Peso (Diferenciar entre peso mínimo y máximo)
    • Años de vida
  • Posibilidad de seleccionar/agregar uno o más temperamentos
  • Botón/Opción para crear una nueva raza de perro

Base de datos

El modelo de la base de datos tiene las siguientes entidades:

  • Raza con las siguientes propiedades:
    • ID *
    • Nombre *
    • Altura *
    • Peso *
    • Años de vida
  • Temperamento con las siguientes propiedades:
    • ID
    • Nombre

La relación entre ambas entidades es de muchos a muchos ya que una raza de perro puede tener varios "temperamentos" en simultaneo y, a su vez, un "temperamento" puede corresponder a múltiples razas de perro distintas. Por ejemplo la raza pug es docil, inteligente y sociable (entre otras). Pero a su vez existen otras razas de perro que también son sociables o inteligentes.

Backend

Se desarrolló un servidor en Node/Express con las siguientes rutas:

  • GET /dogs:

    • Obtiene un listado de las primeras 8 razas de perro
  • GET /dogs?name="...":

    • Obtiene un listado de las primeras 8 razas de perro que contengan la palabra ingresada como query parameter
  • GET /dogs/{idRaza}:

    • Obtiene el detalle de una raza de perro en particular
    • Incluye los temperamentos asociados
  • GET /temperament:

    • Obtiene todos los temperamentos posibles
  • POST /dog:

    • Recibe los datos recolectados desde el formulario controlado de la ruta de creación de raza de perro por body
    • Crea una raza de perro en la base de datos