Documentación Técnica

Documentación completa del sistema Handmade Bags Store. Arquitectura, base de datos, instalación y configuración del proyecto.

Node.js Express.js Sequelize ORM PostgreSQL Bootstrap 5 EJS
Handmade Bags Store - Documentación

Resumen del Proyecto

Descripción

Aplicación web completa desarrollada para gestionar usuarios y pedidos de una tienda de handmade bags artesanales. Cada producto es único, hecho a mano con amor y dedicación artesanal. El proyecto implementa operaciones CRUD completas con transacciones y validaciones robustas.

Características Principales
  • CRUD completo para usuarios y pedidos
  • Base de datos PostgreSQL con Sequelize ORM
  • Transacciones para garantizar consistencia
  • Interfaz web responsive con Bootstrap 5
  • API REST completa con documentación
  • Validaciones robustas en frontend y backend
  • Seguridad con hash de contraseñas
Información del Desarrollador

Desarrolladora: Magdalena Inalaf G.

Rol: Desarrolladora Full Stack

GitHub: @MagdaIG

LinkedIn: @minalaf

Portfolio: inalaf.ca

Email: magda.inalaf@gmail.com

Instalación y Configuración

Prerrequisitos
Instalación Local
# 1. Clonar el repositorio git clone https://github.com/MagdaIG/bags-shop-node-express.git cd bags-shop-node-express # 2. Instalar dependencias npm install # 3. Configurar variables de entorno cp env.example .env # 4. Sincronizar la base de datos npm run db:sync # 5. Poblar con datos de ejemplo npm run db:seed # 6. Iniciar la aplicación npm run dev
Variables de Entorno
# Puerto del servidor PORT=3001 # Configuración de PostgreSQL DB_HOST=localhost DB_PORT=5432 DB_NAME=tienda_online DB_USER=postgres DB_PASSWORD=lalala # Configuración de bcrypt BCRYPT_ROUNDS=12 # Entorno NODE_ENV=development
Scripts Disponibles
  • npm run dev - Inicia servidor con nodemon
  • npm run db:sync - Sincroniza modelos con la BD
  • npm run db:seed - Pobla la BD con datos de ejemplo
  • npm start - Inicia servidor en producción

Estructura del Proyecto

bags-shop-node-express/ ├── src/ # Código fuente de la aplicación │ ├── app.js # Aplicación principal │ ├── config/ # Configuración │ │ └── database.js # Configuración de PostgreSQL │ ├── controllers/ # Controladores │ │ ├── users.controller.js │ │ └── orders.controller.js │ ├── db/ # Base de datos │ │ ├── models/ # Modelos Sequelize │ │ │ ├── User.js │ │ │ └── Order.js │ │ ├── seed/ # Datos de ejemplo │ │ └── index.js # Configuración de BD │ ├── middleware/ # Middleware personalizado │ ├── routes/ # Rutas de la aplicación │ └── views/ # Plantillas EJS ├── docs/ # Documentación técnica HTML ├── public/ # Archivos estáticos │ ├── css/ │ │ └── theme.css # Estilos personalizados │ └── img/ # Imágenes de productos ├── docker/ # Configuración de Docker ├── package.json # Dependencias y scripts ├── docker-compose.yml # Configuración de PostgreSQL ├── env.example # Variables de entorno de ejemplo └── README.md # Documentación principal

Base de Datos

Modelo Usuario
  • id - INTEGER, PK, autoincrement
  • nombre - STRING(60), validación 2-60 caracteres
  • email - STRING(100), único, formato válido
  • password - STRING(255), hash bcrypt, min 8 caracteres
  • createdAt - TIMESTAMP, automático
  • updatedAt - TIMESTAMP, automático
Modelo Pedido
  • id - INTEGER, PK, autoincrement
  • usuario_id - INTEGER, FK -> User.id
  • producto - STRING(100), 1-100 caracteres
  • cantidad - INTEGER, mayor a 0
  • fecha_pedido - DATEONLY, default NOW()
  • createdAt - TIMESTAMP, automático
  • updatedAt - TIMESTAMP, automático
Asociaciones
// Relación uno a muchos User.hasMany(Order, { foreignKey: 'usuario_id', onDelete: 'CASCADE' }); Order.belongsTo(User, { foreignKey: 'usuario_id' });
Validaciones
  • Email único: Validación a nivel de base de datos
  • Contraseña segura: Mínimo 8 caracteres + número
  • Hash bcrypt: 12 rounds de seguridad
  • Transacciones: Rollback automático en errores

Stack Tecnológico

Backend
Node.js
Express.js
Sequelize ORM
Base de Datos
PostgreSQL
Transacciones
Frontend
EJS
Bootstrap 5
CSS3
Herramientas
bcryptjs
Morgan
Nodemon

Productos Disponibles

  • Book Quilted Bag $39.00 CAD
  • Drawstring Bag $31.00 CAD
  • Drawstring Minibag $21.00 CAD
  • Laptop Quilted Bag $63.00 CAD
  • Makeup Bag Lavender $35.00 CAD
  • Makeup Quilted $36.00 CAD
  • Mini Pouch $25.00 CAD
  • Money Bag $28.00 CAD
  • Round Bag $42.00 CAD
  • Scrunchies $11.00 CAD
  • Tote Bag $49.00 CAD

Enlaces Relacionados