Resumen
El proyecto es un sitio web de comercio electrónico backend (Nest) donde los usuarios pueden comprar y vender productos en línea. Se estructuró de manera organizada para gestionar usuarios, productos y órdenes de compra de una manera clara y fácil de entender. Además, se implementaron funciones de autenticación para garantizar la seguridad de los usuarios al iniciar sesión y registrarse. Todo el sitio web se desplegó utilizando contenedores Docker en la plataforma Render, lo que significa que está listo para ser utilizado en línea de manera eficiente y segura.
Deploy
https://nest-demo-latest-4y3q.onrender.com/api
Estructura del proyecto
El proyecto sigue la estructura de directorios recomendada por NestJS. A continuación, se presenta un resumen de los directorios más importantes:
- Estructura del proyecto:
auth
: Maneja los servicios de signin y signup.file-upload
: Se usa Cloudinary para la carga de archivos y generar un URL.users
: Controla la lógica de usuarios, protege rutas según la autenticación, y utiliza DTO.decorators
: Es un decorador personalizado donde se define el rol del usuario (admin o user).middlewares
: Se utiliza un middleware global para indicar la ruta, fecha y hora.products
: Controla la lógica de los productos y protege las rutas según la autenticación.orders
: Controla la lógica de las órdenes que realizan los usuarios, protege las rutas según la autenticación y utiliza DTO.categories
: Agrega categorías de productos.
Módulos y funcionalidades
Autenticación y autorización
El módulo auth
se encarga de la autenticación y autorización de usuarios. Incluye los siguientes archivos:
auth.controller.ts
: Controlador para manejar rutas relacionadas con la autenticación.auth.guard.ts
: Guardia de autenticación para proteger rutas.auth.service.ts
: Servicio para manejar la lógica de autenticación.roles.enum.ts
: Enumeración de roles de usuario.
Carga de archivos
El módulo file-upload
permite cargar archivos en la aplicación. Incluye los siguientes archivos:
file-upload.controller.ts
: Controlador para manejar rutas relacionadas con la carga de archivos.file-upload.module.ts
: Módulo que configura el servicio de carga de archivos.file-upload.service.ts
: Servicio para manejar la lógica de carga de archivos.file-upload.repository.ts
: Repositorio para almacenar información de los archivos cargados.
Usuarios
El módulo users
gestiona los usuarios de la aplicación. Incluye los siguientes archivos:
users.controller.ts
: Controlador para manejar rutas relacionadas con los usuarios.users.dto.ts
: Objetos de transferencia de datos (DTO) para definir las entradas y salidas de datos.users.module.ts
: Módulo que configura el servicio de usuarios.users.repository.ts
: Repositorio para almacenar y recuperar información de los usuarios.users.service.ts
: Servicio para manejar la lógica de los usuarios.
Productos
El módulo products
gestiona los productos de la aplicación. Incluye los siguientes archivos:
products.controller.ts
: Controlador para manejar rutas relacionadas con los productos.products.dto.ts
: Objetos de transferencia de datos (DTO) para definir las entradas y salidas de datos.products.module.ts
: Módulo que configura el servicio de productos.products.repository.ts
: Repositorio para almacenar y recuperar información de los productos.products.service.ts
: Servicio para manejar la lógica de los productos.
Ordenes
El módulo orders
gestiona los ordenes de la aplicación. Incluye los siguientes archivos:
orders.controller.ts
: Controlador para manejar rutas relacionadas con los Ordenes.orders.dto.ts
: Objetos de transferencia de datos (DTO) para definir las entradas y salidas de datos.orders.module.ts
: Módulo que configura el servicio de Ordenes.orders.repository.ts
: Repositorio para almacenar y recuperar información de los Ordenes.orders.service.ts
: Servicio para manejar la lógica de los Ordenes.
Endpoints
Autenticación
- POST /auth/login: Realiza el inicio de sesión de un usuario.
- POST /auth/register: Registra un nuevo usuario.
Usuarios
- GET /users: Obtiene una lista de usuarios.
- GET /users/:id: Obtiene un usuario específico por su ID.
- PUT /users/:id: Actualiza un usuario específico por su ID.
- DELETE /users/:id: Elimina un usuario específico por su ID.
Productos
- GET /products: Obtiene una lista de productos.
- GET /products/:id: Obtiene un producto específico por su ID.
- POST /products: Crea un nuevo producto.
- PUT /products/:id: Actualiza un producto específico por su ID.
- DELETE /products/:id: Elimina un producto específico por su ID.
Órdenes
- GET /orders: Obtiene una lista de órdenes.
- GET /orders/:id: Obtiene una orden específica por su ID.
- POST /orders: Crea una nueva orden.
- PUT /orders/:id: Actualiza una orden específica por su ID.
- DELETE /orders/:id: Elimina una orden específica por su ID.