Construir una tienda online que despliegue productos agrupados por la categoría a la que pertenecen..
para poder utilizar el proyecto en localhost en necesario clonar y tener los siguientes programas:
cd existing_folder
git clone [email protected]:Herdro/bsale-backend.git
Una vez ya clonado el repositorio es necesario instalar las dependencias con el siguiente comando:
npm install
Se debe crear el archivo con las variables de entono en la carpeta raiz ./.env
con los siguientes valores:
# Express
PORT =
# Data Base MySQL
DB_HOST =
DB_USER =
DB_PASS =
DB_NAME =
Crado el archivo se ejecuta el siguiente comando:
npm run start
El cual ejecutará nodemon src/index.js
Dependiendo del entorno donde se ejecuten se deben configuirar las variables de entorno las contemplan las misma que el punto anterior
# Express
PORT =
# Data Base MySQL
DB_HOST =
DB_USER =
DB_PASS =
DB_NAME =
A diferencia de ejecutarlo en producción se ejecutará el siguiente comando:
npm run start:prod
Este ejecutará node src/index.js
- despliegue backend y frontend
- backend (API rest)
- conección a bases de datos
- Manipular datos
- filtro
- busqueda
- ordenar
- paginación
- frontend (APP consumo)
- backend (API rest)
Para crear un orden estructurado del uso de las herramienta se usara de la siguiente manera:
/products/
- GET - product list/products/category/
- GET - product's category list/product/search/
- GET - search product
Para solucionar los distintos procesos usare las siguientes herramientas:
- Sequelize (ORM)
- joi (validador de esquemas)
- @hapi/boom (error handler)
- Express (router)
Para mantener un orden estructurados de los procesos usare una arquitectura exagonal:
bsale
├── configs
│ ├── environmet.js
│ └── mysql.js
└── src
├── domains
│ └── DB
├── drivers
│ ├── router
│ └── MySQL
├── useCases
│ └── productsServices
└── utils
└── validator
- URL:
/products/
- Method:
GET
- Query: (to request additional information)
- priceMax:
integer
- PriceMin:
integer
- discount:
enum("ASD", "DESC")
- category:
string
- limit:
integer
- page:
integer
- nameOrder:
enum("ASD", "DESC")
- priceOrder:
enum("ASD", "DESC")
- search:
string
- priceMax:
- Use: Get all product
- Code:
200 OK
- Instance: in case get product's list successfully
- Example:
{
{
"id": "integer()",
"name": "varchar()",
"urlImage": "varchar(URL)",
"price": "float()",
"discount": "integer()",
"category": {
"name": "varchar()",
}
},
...
}
- URL:
/products/category
- Method:
GET
- Use: Get all product's category
- Code:
200 OK
- Instance: in case get product's list successfully
- Example:
{
[
"category1",
"category2",
...
]
}