Este Proyecto individual realizado en Henry busca poner en páctica las habilidades aprendidas en un a app-catálogo de Dogs
- Construir una App utlizando React, Redux, Node y Sequelize.
- Afirmar y conectar los conceptos aprendidos en la carrera.
- Aprender mejores prácticas.
- Aprender y practicar el workflow de GIT.
- Usar y practicar testing.
IMPORTANTE: Es necesario contar minimamente con la última versión estable de Node y NPM. Asegurarse de contar con ella para poder instalar correctamente las dependecias necesarias para correr el proyecto.
Actualmente las versiónes necesarias son:
- Node: 12.18.3 o mayor
- NPM: 6.14.16 o mayor
Para verificar que versión tienen instalada:
node -v
npm -v
El boilerplate cuenta con dos carpetas: api
y client
. En estas carpetas estará el código del back-end y el front-end respectivamente.
En api
crear un archivo llamado: .env
que tenga la siguiente forma:
DB_USER=usuariodepostgres
DB_PASSWORD=passwordDePostgres
DB_HOST=localhost
Reemplazar usuariodepostgres
y passwordDePostgres
con tus propias credenciales para conectarte a postgres. Este archivo va ser ignorado en la subida a github, ya que contiene información sensible (las credenciales).
Adicionalmente será necesario que creen desde psql una base de datos llamada dogs
El contenido de client
fue creado usando: Create React App.
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
IMPORTANTE: Para poder utilizar esta API externa es necesario crearse una cuenta para obtener una API Key que luego debera ser incluida en todos los request que hagamos a rawg simplemente agregando ?api_key={YOUR_API_KEY}
al final de cada endpoint. Agregar la clave en el archivo .env
para que la misma no se suba al repositorio por cuestiones de seguridad y utilizarla desde allí.
- React
- Redux
- Express
- Sequelize - Postgres
Pagina inicial: Una landing page con
- Alguna imagen de fondo representativa al proyecto
- Botón para ingresar al home (
Ruta principal
)
Ruta principal: Contiene
- Input de búsqueda para encontrar razas de perros por nombre
- Área donde se verá el listado de razas de perros. Muestra su:
- Imagen
- Nombre
- Temperamento
- Peso
- Botones/Opciones para filtrar por:
- Temperamento
- Raza existente (es decir las que vienen de la API) o agregada por nosotros (creadas mediante el form)
- Botones/Opciones para ordenar tanto ascendentemente como descendentemente las razas de perro por:
- Orden alfabético
- Peso
- Paginado para ir buscando y mostrando las siguientes razas, mostrando 8 razas por página.
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 creación de raza de perro: Contiene
- Un formulario controlado con JavaScript con los siguientes campos:
- Nombre
- Altura (Diferencia entre altura mínima y máxima)
- Peso (Diferencia 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
El modelo de la base de datos contiene las siguientes entidades:
- Raza con las siguientes propiedades:
- ID *
- Nombre *
- Altura *
- Peso *
- Años de vida
- Temperamento con las siguientes propiedades:
- ID
- Nombre
Se debe desarrolló un servidor en Node/Express con las siguientes rutas:
- GET /dogs:
- Obtener un listado de las razas de perro
- Debe devolver solo los datos necesarios para la ruta principal
- GET /dogs?name="...":
- Obtener un listado de las razas de perro que contengan la palabra ingresada como query parameter
- Si no existe ninguna raza de perro mostrar un mensaje adecuado
- GET /dogs/{idRaza}:
- Obtener el detalle de una raza de perro en particular
- Debe traer solo los datos pedidos en la ruta de detalle de raza de perro
- Incluir los temperamentos asociados
- GET /temperament:
- Obtener todos los temperamentos posibles
- En una primera instancia deberán obtenerlos desde la API externa y guardarlos en su propia base de datos y luego ya utilizarlos desde allí
- 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