Skip to content

Este es el repositorio para el proyecto BACKEND de Codo a Codo - NodeJs#24138 G21 llamada PetShop es una tienda virtual de productos para mascotas.

Notifications You must be signed in to change notification settings

EduMMorenolp/PetShopAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Backend para Tienda de Mascotas (Pet Shop)

Este repositorio contiene el backend de una aplicación de ventas para una tienda de mascotas, desarrollado con Node.js, Express y MySQL. La aplicación permite la gestión de productos, categorías, usuarios, carritos de compra y órdenes de compra.

Resumen del Flujo de Trabajo

  • master: Rama de producción, siempre estable.
  • pre-development: Rama de pre-desarrollo para integración y pruebas.
  • feature/*: Ramas para desarrollar nuevas características o correcciones de errores.
  • bugfix/*: Ramas para corregir errores encontrados durante el desarrollo.

Integrantes

Nombre Rol GitHub LinkedIn
Ferreyra Emilse Antonella Desarrollo Web Full Stack Front-End / Back-End EmiFerreyra Emilse Antonella Ferreyra
Guillermo Darío Arias Desarrollo Web Full Stack Front-End / Back-End misterio07 Dario Arias
Eduardo M Moreno Desarrollo Web Full Stack Front-End / Back-End EduMMorenolp Eduardo M Moreno
Luis Amaison Desarrollo Web Full Stack Front-End / Back-End LuisDev6 Luis Amaison

Características

  • CRUD de Usuarios: Registro, login, actualización y eliminación de usuarios.
  • CRUD de Productos: Creación, lectura, actualización y eliminación de productos.
  • CRUD de Categorías: Creación, lectura, actualización y eliminación de categorías.
  • Gestión de Carrito: Agregar, actualizar y eliminar productos en el carrito de compra.
  • Gestión de Órdenes: Creación y visualización de órdenes de compra.
  • Autenticación: Implementación de JWT para la autenticación de usuarios.
  • Relaciones de Base de Datos: Relaciones uno a muchos entre categorías y productos, usuarios y carritos, y usuarios y órdenes.

Tecnologías Utilizadas

  • Node.js
  • Express
  • MySQL
  • JWT (JSON Web Tokens)
  • Bcryptjs (dependencies)
  • Dotenv (dependencies)
  • Morgan (dependencies)

Estructura de archivos

  • 📁 backend
    • 📁 config
      • 📄 database.js
      • 💽 database.sql
    • 📁 controllers
      • 📄 userController.js
      • 📄 productController.js
      • 📄 categoryController.js
      • 📄 cartController.js
      • 📄 orderController.js
    • 📁 middleware
      • 📄 authMiddleware.js
    • 📁 routes
      • 📄 home.routes.js
      • 📄 user.routes.js
      • 📄 product.routes.js
      • 📄 category.routes.js
      • 📄 cart.routes.js
      • 📄 order.routes.js
    • 📄 .env (archivo de configuración requerido)
    • 📄 .gitignore
    • 📄 package.json
    • 📄 server.js

Estructura de la Base de Datos

El esquema de la base de datos utiliza MySQL y consta de las siguientes tablas:

Usuarios

Campo Tipo Descripción
id INT Identificador único del usuario
nombre VARCHAR Nombre del usuario
email VARCHAR Correo electrónico del usuario
contraseña VARCHAR Contraseña del usuario (hash)
rol ENUM Rol del usuario (admin, cliente)

Categorías

Campo Tipo Descripción
id INT Identificador único de la categoría
nombre VARCHAR Nombre de la categoría

Productos

Campo Tipo Descripción
id INT Identificador único del producto
nombre VARCHAR Nombre del producto
descripcion TEXT Descripción del producto
precio DECIMAL Precio del producto
imagen VARCHAR URL de la imagen del producto
categoria_id INT ID de la categoría a la que pertenece el producto

Carrito

Campo Tipo Descripción
id INT Identificador único del item de carrito
usuario_id INT ID del usuario
producto_id INT ID del producto
cantidad INT Cantidad del producto en el carrito

Órdenes

Campo Tipo Descripción
id INT Identificador único de la orden
usuario_id INT ID del usuario
total DECIMAL Total de la orden
estado ENUM Estado de la orden (pendiente, completada, cancelada)
fecha_pedido TIMESTAMP Fecha y hora del pedido

OrdenDetalles

Campo Tipo Descripción
id INT Identificador único del detalle de la orden
orden_id INT ID de la orden
producto_id INT ID del producto
cantidad INT Cantidad del producto en la orden
precio DECIMAL Precio del producto en la orden

Requisitos Previos

  • Node.js instalado
  • MySQL instalado
  • Crear un archivo .env en la raíz del proyecto con las siguientes variables de entorno:
DB_HOST=tu_host_de_base_de_datos
DB_USER=tu_usuario_de_base_de_datos
DB_PASSWORD=tu_contraseña_de_base_de_datos
DB_NAME=nombre_de_tu_base_de_datos
JWT_SECRET=tu_secreto_para_jwt

Instalación

  1. Clona el repositorio:
git clone https://github.com/EduMMorenolp/PetShopAPI.git
  1. Navega al directorio del proyecto:
cd PetShopAPI
  1. Instala las dependencias:
npm install
  1. Inicia el servidor:
npm run dev

Uso

Endpoints de la API

Usuarios

  • POST user/registro - Crear una cuenta de cliente.
  • POST user/login - Iniciar sesión y obtener un token.
  • GET user/admin/usuarios - Obtener todos los usuarios (requiere rol de administrador y token).
  • GET user/admin/usuarios/:id - Obtener un usuario por ID (requiere rol de administrador y token).
  • PUT user/admin/usuarios/:id - Actualizar un usuario por ID (requiere rol de administrador y token).
  • DELETE user/admin/usuarios/:id - Borrar un usuario por ID (requiere rol de administrador y token).

Productos

  • POST /admin/producto - Crear un nuevo producto (requiere rol de administrador y token).
  • GET /productos - Obtener todos los productos disponibles.
  • GET /producto/:id - Obtener un producto por ID.
  • PUT /admin/producto/:id - Actualizar un producto por ID (requiere rol de administrador y token).
  • DELETE /admin/producto/:id - Borrar un producto por ID (requiere rol de administrador y token).

Categorías

  • POST /admin/categorias - Crear una nueva categoría (requiere rol de administrador y token).
  • GET /categoria - Obtener todas las categorías disponibles.
  • GET /categoria/:id - Obtener una categoría por ID.
  • PUT /admin/categoria/:id - Actualizar una categoría por ID (requiere rol de administrador y token).
  • DELETE /admin/categoria/:id - Borrar una categoría por ID (requiere rol de administrador y token).

Carrito de Compra

  • POST /carrito/agregar/:idProducto - Agregar un producto al carrito de compra.
  • PUT /carrito/actualizar/:idProducto - Actualizar la cantidad de un producto en el carrito de compra.
  • DELETE /carrito/eliminar/:idProducto - Eliminar un producto del carrito de compra.

Órdenes de Compra

  • POST /ordenes/crear - Crear una nueva orden de compra.
  • GET /ordenes - Obtener todas las órdenes de compra.
  • GET /ordenes/:id - Obtener una orden de compra por ID.
  • PUT /ordenes/actualizar/:id - Actualizar una orden de compra por ID.
  • DELETE /ordenes/eliminar/:id - Eliminar una orden de compra por ID.

Contribución

Las contribuciones son bienvenidas. Para sugerencias de nuevas características, mejoras o correcciones de errores, por favor abre un issue o una pull request.

Licencia

Este proyecto está bajo la Licencia MIT.

About

Este es el repositorio para el proyecto BACKEND de Codo a Codo - NodeJs#24138 G21 llamada PetShop es una tienda virtual de productos para mascotas.

https://edudev.alwaysdata.net/petshopAPI/

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published