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.
- 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.
Nombre | Rol | GitHub | |
---|---|---|---|
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 |
- 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.
- Node.js
- Express
- MySQL
- JWT (JSON Web Tokens)
- Bcryptjs (dependencies)
- Dotenv (dependencies)
- Morgan (dependencies)
- 📁 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
- 📁 config
El esquema de la base de datos utiliza MySQL y consta de las siguientes tablas:
Campo | Tipo | Descripción |
---|---|---|
id | INT | Identificador único del usuario |
nombre | VARCHAR | Nombre del usuario |
VARCHAR | Correo electrónico del usuario | |
contraseña | VARCHAR | Contraseña del usuario (hash) |
rol | ENUM | Rol del usuario (admin, cliente) |
Campo | Tipo | Descripción |
---|---|---|
id | INT | Identificador único de la categoría |
nombre | VARCHAR | Nombre de la categoría |
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 |
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 |
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 |
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 |
- 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
- Clona el repositorio:
git clone https://github.com/EduMMorenolp/PetShopAPI.git
- Navega al directorio del proyecto:
cd PetShopAPI
- Instala las dependencias:
npm install
- Inicia el servidor:
npm run dev
- URL PetShopAPI : https://edudev.alwaysdata.net/petshopAPI/
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).
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).
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).
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.
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.
Las contribuciones son bienvenidas. Para sugerencias de nuevas características, mejoras o correcciones de errores, por favor abre un issue o una pull request.
Este proyecto está bajo la Licencia MIT.