Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/drako01/backend-alejandrodistefano
Backend de un eCommerce de productos de tenis
https://github.com/drako01/backend-alejandrodistefano
backend express javascript mongodb mongodb-atlas nodejs nodemon
Last synced: about 2 months ago
JSON representation
Backend de un eCommerce de productos de tenis
- Host: GitHub
- URL: https://github.com/drako01/backend-alejandrodistefano
- Owner: Drako01
- Created: 2023-06-10T14:23:31.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-28T20:11:48.000Z (5 months ago)
- Last Synced: 2024-07-28T21:21:47.225Z (5 months ago)
- Topics: backend, express, javascript, mongodb, mongodb-atlas, nodejs, nodemon
- Language: JavaScript
- Homepage:
- Size: 11.3 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Programación Backend
Lenguaje y Herramientas
---
---
## Descripción del Proyecto: E-commerce Backend
### Descripción General
## Una vez instaladas las Librerias, se recomienda generar el archivo .ENV para las variables de Entorno y ubicarlo en la carpeta src/server/
Este proyecto es un backend completo para una aplicación de e-commerce, desarrollado con Node.js y Express, y utilizando MongoDB como base de datos. La aplicación permite la gestión de productos, carritos de compras, niveles de usuario, y cuenta con diversas características de seguridad y funcionalidad avanzada, como la integración de una pasarela de pagos. Las vistas se han implementado utilizando Handlebars para ofrecer una experiencia de usuario dinámica y eficiente.
### Características Principales
1. **Gestión de Productos**:
- CRUD (Crear, Leer, Actualizar, Eliminar) de productos.
- Categorías y subcategorías de productos.
- Gestión de inventario y precios.2. **Carrito de Compras**:
- Añadir, actualizar y eliminar productos en el carrito.
- Persistencia de carritos de compras para usuarios autenticados.3. **Niveles de Usuario**:
- Roles de usuario: administrador, vendedor y cliente.
- Control de acceso basado en roles para ciertas rutas y acciones.4. **Seguridad**:
- Autenticación y autorización de usuarios utilizando JSON Web Tokens (JWT).
- Encriptación de contraseñas utilizando bcrypt.
- Protección contra ataques comunes como XSS y CSRF.5. **Pasarela de Pagos**:
- Integración con pasarelas de pago populares para procesar transacciones.
- Gestión de órdenes y confirmaciones de pago.6. **Middlewares**:
- Middlewares personalizados para la validación de datos, autenticación de usuarios, y manejo de errores.
- Logger para el registro de actividades y errores.7. **Arquitectura por Capas**:
- **Controladores**: Manejan las solicitudes HTTP y responden con los datos apropiados.
- **Modelos**: Definen la estructura de los datos y las operaciones de la base de datos.
- **Servicios**: Contienen la lógica de negocio y operaciones complejas.
- **Middlewares**: Gestión de autenticación, validación y manejo de errores.
- **Config**: Configuración de la aplicación, incluyendo variables de entorno y configuraciones de la base de datos.
- **Test**: Pruebas unitarias y de integración para asegurar la calidad y funcionalidad del código.### Tecnologías Utilizadas
- **Node.js**: Entorno de ejecución para JavaScript en el servidor.
- **Express**: Framework web para Node.js que facilita la creación de aplicaciones web y APIs.
- **MongoDB**: Base de datos NoSQL orientada a documentos.
- **Mongoose**: ODM (Object Data Modeling) para MongoDB, que facilita la interacción con la base de datos.
- **Handlebars**: Motor de plantillas para generar vistas dinámicas en HTML.
- **JWT**: JSON Web Tokens para la autenticación y autorización.
- **bcrypt**: Librería para el hash de contraseñas.
- **Pasarelas de Pago**: Integración con servicios de pago como Stripe o PayPal.
- **Jest/Mocha**: Frameworks de testing para realizar pruebas unitarias y de integración.### Configuración del Proyecto
El proyecto se organiza de la siguiente manera:
- **src/server**: Carpeta principal del servidor.
- **controllers**: Contiene los controladores de la aplicación.
- **models**: Define los esquemas y modelos de MongoDB.
- **services**: Contiene la lógica de negocio.
- **middlewares**: Middlewares para validación, autenticación, etc.
- **config**: Archivos de configuración y variables de entorno.
- **views**: Plantillas Handlebars para las vistas.
- **tests**: Pruebas unitarias y de integración.### Ejecución del Proyecto
Para ejecutar el proyecto, sigue estos pasos:
1. **Instalación de Dependencias**:
```bash
npm install
```2. **Configuración de Variables de Entorno**:
Crea un archivo `.env` con las variables necesarias como la URL de MongoDB, las claves para JWT, y las credenciales de la pasarela de pagos.3. **Ejecución del Servidor**:
```bash
npm start
```
4. **Ejecución del Módulo de Test**:
```bash
npm test
```### Documentación de API
La documentación de la API se encuentra disponible y es accesible a través de Swagger en la ruta:
```
http://localhost:8080/docs-api
```Esta documentación proporciona detalles sobre todas las rutas disponibles, los métodos HTTP soportados, y los datos esperados.
---
---
### Autor: Alejandro Daniel Di Stefano
---