Sistema web para exhibir y gestionar el catálogo de productos artesanales de Ideancestral, una tienda ubicada en el Mercado Artesanal La Mariscal, Quito, Ecuador.
- Catálogo completo de productos con filtros por categoría
- Vista de detalle con galería de imágenes por producto
- Carrito de compras con envío de pedidos por WhatsApp
- Promociones por temporada (Navidad, Día de la Madre, Fiestas de Quito, Inti Raymi)
- Internacionalización: Español, Inglés y Portugués
- Modo oscuro / claro
- Carrusel animado en el banner principal
- Diseño responsive (móvil, tablet y escritorio)
- Botón flotante de contacto por WhatsApp
- Panel de administración con acceso protegido
- CRUD completo de productos, categorías e imágenes
- Gestión de promociones por temporada
- Subida de múltiples imágenes por producto
- Control de visibilidad y productos destacados
- Autenticación segura con JWT y refresh tokens
- Registro de auditoría de acciones administrativas
| Capa | Tecnología |
|---|---|
| Frontend | Vue 3 (Composition API), Vite, Pinia, Vue Router, Axios, vue-i18n |
| Backend | Node.js, Express, Multer, JWT, bcryptjs, Zod, Pino |
| Base de datos | PostgreSQL |
| Seguridad | Helmet, express-rate-limit, sanitización XSS, validación MIME |
| Infraestructura | Docker Compose, Render |
IdeAncestral/
├── frontend/
│ └── src/
│ ├── views/ # CatalogoView, CategoriaView, ProductoDetalleView, AdminView
│ ├── components/ # ThemeToggle, LanguageSwitcher, ToastContainer
│ ├── stores/ # carrito, theme, language (Pinia)
│ ├── composables/ # useCarrito, useToast
│ ├── i18n/ # Traducciones: es, en, pt
│ └── router/
│
├── backend/
│ ├── routes/ # productos, categorias, imagenes, auth, promociones
│ ├── middleware/ # Autenticación JWT
│ ├── database/ # schema.sql, seed.sql, migraciones, conexión
│ ├── scripts/ # Inicialización de BD y creación de admin
│ ├── utils/ # Sanitización, validaciones
│ └── server.js
│
├── docs/ # Guías de despliegue, seguridad y devops
├── docker-compose.yml
└── package.json
- Node.js v18 o superior
- PostgreSQL v12 o superior (o Docker)
git clone https://github.com/DavidAucancela/IDEANCESTRAL.git
cd IdeAncestralnpm run install:all# Backend
cp backend/.env.example backend/.env
# Editar backend/.env con los valores del entorno# Frontend
# Crear frontend/.env con la URL de la API
VITE_API_URL=<URL del backend>/apicd backend
node scripts/init-db.js # Solo esquema
node scripts/init-db.js --seed # Con datos de ejemplocd backend
# Configurar ADMIN_USER, ADMIN_EMAIL y ADMIN_PASSWORD en .env
node scripts/create-admin.jsnpm run dev # Frontend + Backend simultáneamentecp .env.example .env # Completar DB_PASSWORD y JWT_SECRET
docker-compose up --buildAcceso local tras levantar los contenedores: http://localhost:5173
Consulta docs/RENDER_DEPLOY.md para la guía completa.
Variables de entorno requeridas en producción:
NODE_ENVDATABASE_URL(o variables individuales de BD)JWT_SECRET(mínimo 32 caracteres — generar conopenssl rand -base64 32)FRONTEND_URL
- Contraseñas hasheadas con bcrypt
- JWT con expiración corta y refresh tokens de larga duración
- Rate limiting global y en endpoints de autenticación
- Headers de seguridad HTTP con Helmet
- CORS restringido por origen
- Sanitización de inputs contra XSS
- Validación de tipo MIME real en archivos subidos
- Acceso a archivos estáticos protegido (solo archivos registrados en BD)
- HTTPS obligatorio en producción
- Auditoría de acciones del administrador
| Comando | Descripción |
|---|---|
npm run dev |
Inicia frontend y backend en modo desarrollo |
npm run dev:frontend |
Solo el frontend |
npm run dev:backend |
Solo el backend |
npm run build |
Compila el frontend para producción |
npm run install:all |
Instala dependencias de todos los módulos |
npm run db:start |
Inicia solo la base de datos con Docker |
npm run db:stop |
Detiene el contenedor de la base de datos |
| Documento | Contenido |
|---|---|
docs/RENDER_DEPLOY.md |
Guía de despliegue en Render |
docs/SEGURIDAD-IMPLEMENTADA.md |
Detalle de medidas de seguridad |
docs/DEVOPS_GUIA.md |
Guía de operaciones y Docker |
docs/SETUP.md |
Configuración detallada del entorno |
docs/PRUEBAS.md |
Guía de pruebas |
- Email: mary_cecy_ma@hotmail.com
- Teléfono: (02) 2227781 / +593 987 999 136 / +593 978 752 422
- Instagram: @ideancestral
- Ubicación: Jorge Washington y Juan León Mera, Mercado Artesanal La Mariscal, Quito, Ecuador
Este proyecto es privado y pertenece a Ideancestral.