Build an App using React, Redux, Node and Sequelize.

Overview

portada

Individual Project - Henry Pokémon

portada2

Objetivos del Proyecto

  • Construir una App utilizando 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.

Horarios y Fechas

El proyecto tendrá una duración máxima de tres semanas. En el caso de que completan todas las tareas antes de dicho lapso podrán avisar a su Instructor para coordinar una fecha de presentación del trabajo (DEMO).

Comenzando

  1. Forkear el repositorio para tener una copia del mismo en sus cuentas
  2. Clonar el repositorio en sus computadoras para comenzar a trabajar

Tendrán un boilerplate con la estructura general tanto del servidor como de cliente.

IMPORTANTE: Es necesario contar mínimamente con la última versión estable de Node y NPM. Asegurarse de contar con ella para poder instalar correctamente las dependencies necesarias para correr el proyecto.

Actualmente las versiones 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

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.

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 a 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 pokemon

El contenido de client fue creado usando: Create React App.

Enunciado

La idea general es crear una aplicación en la cual se puedan ver los distintos Pokemon utilizando la api externa pokeapi y a partir de ella poder, entre otras cosas:

  • Buscar pokemons
  • Filtrarlos / Ordenarlos
  • Crear nuevos pokemons

IMPORTANTE: Para las funcionalidades de filtrado y ordenamiento NO pueden utilizar los endpoints de la API externa que ya devuelven los resultados filtrados u ordenados, sino que deben realizarlo ustedes mismos. En particular alguno de los ordenamientos o filtrado debe si o si realizarse desde el frontend.

Únicos Endpoints/Flags que pueden utilizar

Requerimientos mínimos:

A continuación se detallarán los requerimientos mínimos para la aprobación del proyecto individual. Aquellos que deseen agregar más funcionalidades podrán hacerlo. En cuanto al diseño visual no va a haber wireframes ni prototipos prefijados, sino que tendrán libertad de hacerlo a su gusto, pero tienen que aplicar los conocimientos de estilos vistos en el curso para que quede agradable a la vista.

IMPORTANTE: No se permitirá utilizar librerías externas para aplicar estilos a la aplicación. Tendrán que utilizar CSS con algunas de las opciones que vimos en dicha clase (CSS puro, CSS Modules o Styled Components)

Tecnologías necesarias:

  • React
  • Redux
  • Express
  • Sequelize - Postgres

Frontend

Se debe desarrollar una aplicación de React/Redux que contenga las siguientes pantallas/rutas.

Pagina inicial: deben armar una landing page con

  • Alguna imagen de fondo representativa al proyecto
  • Botón para ingresar al home (Ruta principal)

Ruta principal: debe contener

  • Input de búsqueda para encontrar pokemons por nombre (La búsqueda será exacta, es decir solo encontrará al pokemon si se coloca el nombre completo)
  • Área donde se verá el listado de pokemons. Al iniciar deberá cargar los primeros resultados obtenidos desde la ruta GET /pokemons y deberá mostrar su:
    • Imagen
    • Nombre
    • Tipos (Eléctrico, Fuego, Agua, etc.)
  • Botones/Opciones para filtrar por tipo de pokemon y por pokemon existente o creado por nosotros
  • Botones/Opciones para ordenar tanto ascendentemente como descendentemente los pokemons por orden alfabético y por fuerza
  • Paginado para ir buscando y mostrando los siguientes pokemons, 12 pokemons por página.

IMPORTANTE: Dentro de la Ruta Principal se deben mostrar tanto los pokemons traídos desde la API como así también las de la base de datos. Por otro lado, si revisan el endpoint que trae todos los pokemons verán que no muestra la información del pokemon, sino una URL para hacer un sub-request y obtener los datos de allí. Tendrán que por cada pokemon que van a mostrar hacer otro request a esa URL para obtener su imagen y tipos. Debido a que esto puede hacer que la búsqueda sea muy lenta limitar el resultado total a 40 pokemons totales.

Ruta de detalle de Pokemon: debe contener

  • Los campos mostrados en la ruta principal para cada pokemon (imagen, nombre y tipos)
  • Número de Pokemon (id)
  • Estadísticas (vida, fuerza, defensa, velocidad)
  • Altura y peso

Ruta de creación: debe contener

  • Un formulario controlado con JavaScript con los campos mencionados en el detalle del Pokemon
  • Posibilidad de seleccionar/agregar más de un tipo de Pokemon
  • Botón/Opción para crear un nuevo Pokemon

Es requisito que el formulario de creación esté validado con JavaScript y no solo con validaciones HTML. Pueden agregar las validaciones que consideren. Por ejemplo: Que el nombre del Pokemon no pueda contener caracteres numéricos, que la altura no pueda ser superior a determinado valor, etc.

Base de datos

El modelo de la base de datos deberá tener las siguientes entidades (Aquellas propiedades marcadas con asterisco deben ser obligatorias):

  • Pokemon con las siguientes propiedades:
    • ID (Número de Pokemon) *: No puede ser un ID de un pokemon ya existente en la API pokeapi
    • Nombre *
    • Vida
    • Fuerza
    • Defensa
    • Velocidad
    • Altura
    • Peso
  • Tipo con las siguientes propiedades:
    • ID
    • Nombre

La relación entre ambas entidades debe ser de muchos a muchos, ya que un pokemon puede pertenecer a más de un tipo y, a su vez, un tipo puede incluir a muchos pokemons.

IMPORTANTE: Pensar como modelar los ID de los pokemons en la base de datos. Existen distintas formas correctas de hacerlo, pero tener en cuenta que cuando hagamos clic en alguno, este puede provenir de la API o de la Base de Datos por lo que cuando muestre su detalle no debería haber ambigüedad en cuál se debería mostrar. Por ejemplo si en la API el pokemon Bulbasaur tiene id = 1 y en nuestra base de datos creamos un nuevo pokemon Henry con id = 1, ver la forma de diferenciarlos cuando querríamos acceder al detalle del mismo.

Backend

Se debe desarrollar un servidor en Node/Express con las siguientes rutas:

IMPORTANTE: No está permitido utilizar los filtrados, ordenamientos y paginados brindados por la API externa, todas estas funcionalidades tienen que implementarlas ustedes.

  • GET /pokemons:
    • Obtener un listado de los pokemons desde pokeapi.
    • Debe devolver solo los datos necesarios para la ruta principal
  • GET /pokemons/{idPokemon}:
    • Obtener el detalle de un pokemon en particular
    • Debe traer solo los datos pedidos en la ruta de detalle de pokemon
    • Tener en cuenta que tiene que funcionar tanto para un ID de un pokemon existente en pokeapi o uno creado por ustedes
  • GET /pokemons?name="...":
    • Obtener el pokemon que coincida exactamente con el nombre pasado como query parameter (Puede ser de pokeapi o creado por nosotros)
    • Si no existe ningún pokemon mostrar un mensaje adecuado
  • POST /pokemons:
    • Recibe los datos recolectados desde el formulario controlado de la ruta de creación de pokemons por body
    • Crea un pokemon en la base de datos
  • GET /types:
    • Obtener todos los tipos de pokemons posibles
    • En una primera instancia deberán traerlos desde pokeapi y guardarlos en su propia base de datos y luego ya utilizarlos desde allí

Testing

  • Al menos tener un componente del frontend con sus tests respectivos
  • Al menos tener una ruta del backend con sus tests respectivos
  • Al menos tener un modelo de la base de datos con sus tests respectivos
You might also like...

This command line helps you create components, pages and even redux implementation for your react project

This command line helps you create components, pages and even redux implementation for your react project

react-help-create This command line helps you create components, pages and even redux implementation for your react project. How to install it? To ins

Dec 10, 2022

Travelers' Hub with React and Redux

Spacex Travelers' Hub with React and Redux This website displays a list of all available SpaceX rockets. Users can book each rocket by clicking the re

Dec 18, 2022

React-app - Building volume rendering web app with VTK.js,react & HTML Using datasets provided in vtk examples (head for surface rendering and chest for ray casting)

SBE306 Assignment 4 (VTK) data : Directory containing Head and Ankle datasets Description A 3D medical viewer built with vtk-js Team Team Name : team-

Jul 19, 2022

Boilerplate for Truffle, Web3.js, React, Redux Toolkit

Truffle, React, Redux Toolkit, Web3.js boilerplate What it's for Currently, it's a nightmare and takes forever trying to get React working with Truffl

Jun 9, 2022

Redux-Toolkit example with React Hooks CRUD Application, Axios, Rest API, Bootstrap

Redux-Toolkit example with React Hooks CRUD Application, Axios, Rest API, Bootstrap

Redux-Toolkit CRUD example with React Hooks, Axios & Web API Build Redux-Toolkit CRUD application with React Hooks and Rest API calls in that: Each it

Dec 27, 2022

A React Native starter template project with built-in navigation & redux toolkit.

react-native-template A React Native starter template project with built-in navigation & redux toolkit. What's included? @react-native-async-storage/a

Oct 29, 2022

Stocks Market SPA React-Redux Capstone project

Stocks Market SPA React-Redux Capstone project

Stocks Market SPA React-Redux Capstone project Capstone SPA project using React, Redux and API for the stocks market. Displaying stocks market informa

May 20, 2022

Mutated data-store for SolidJS, inspired by React-Redux

solid-mutant Mutated data-store for SolidJS, inspired by React-Redux. Synopsis Redux relies on immutability and referential equality to allow applicat

Mar 15, 2022

This is best boilerplate project using Next.js, Typescript, Redux, Styled-component.

GL-Next boilerplate Start your next Next project in seconds A highly scalable, offline-first foundation with the best DX and a focus on performance an

Sep 1, 2022
Owner
Rei Orozco
Industrial Engineer
Rei Orozco
Redux-todos - simple react, redux todos

Redux Todos Please star this repo if you like ⭐ It's motivates me a lot! Getting Started This project was bootstrapped with Create React App. Stack Av

Ruslan Shvetsov 2 Jul 29, 2022
Shows how React components and Redux to build a friendly user experience with instant visual updates and scaleable code in ecommerce applications

This simple shopping cart prototype shows how React components and Redux can be used to build a friendly user experience with instant visual updates and scaleable code in ecommerce applications.

Alan Vieyra 4 Feb 1, 2022
Starter Antd 4.0 Admin App Mern( Node.js / React / Redux / Ant Design ) Crud & Auth , Dashboard

Starter Antd Admin (Crud & auth) Mern App (Express.js / React / Redux / MongoDB) App built for DigitalOcean MongoDB Hackathon CRM Starter Mern Antd Ad

Salah Eddine Lalami 208 Jan 8, 2023
A web application to search all the different countries in the world and get details about them which can include languages, currencies, population, domain e.t.c This application is built with CSS, React, Redux-Toolkit and React-Router.

A web application to search all the different countries in the world and get details about them which can include languages, currencies, population, domain e.t.c This application is built with CSS, React, Redux-Toolkit and React-Router. It also includes a theme switcher from light to dark mode.

Franklin Okolie 4 Jun 5, 2022
React + Redux starter kit / boilerplate with Babel, hot reloading, testing, linting and a working example app built in

A comprehensive starter kit for rapid application development using React. Why Slingshot? One command to get started - Type npm start to start develop

Cory House 9.8k Dec 22, 2022
Netflix clone app with React.js and Redux

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Moustapha Mahmoud 5 Dec 9, 2022
This app simulates a simple bookstore, and it was created using ReactJS and Redux.

Bookstore About The Bookstore is a website similar to the "Awesome Books" website built in the previous Microverse module (see live version). My goal

Enio N. de Souza 6 Oct 3, 2021
Next-gen, highly customizable content editor for the browser - based on React and Redux and written in TypeScript. WYSIWYG on steroids.

ReactPage ReactPage is a smart, extensible and modern editor ("WYSIWYG") for the web written in React. If you are fed up with the limitations of conte

null 9.1k Jan 6, 2023
USA Covid-19 Tracker is a mobile-first application built with React and Redux to give precise information about the virus behavior in the United States. Great transitions and user feedback made with plain CSS.

React.js USA Covid-19 Tracker This application allows the public to keep track of the stadistics of the Covid-19 Pandemic in the United Stated. You wi

Rafael Echart 14 Oct 25, 2022
A website built with React, Redux, and Tailwind for styling. The project is displaying a list of books, adding, and removing books.

Bookstore "Bookstore" is a website built with React, Redux, and Tailwind for styling. The project is displaying a list of books, adding, and removing

Shady Shawkat 5 Dec 19, 2022