Tunealo
Plataforma eCommerce + Marketplace
- Versión: 1.0.0
- Cliente: Tunealo (antes Autozone)
- Estado: Desarrollo / Beta
- Framework: Next.js
Documentación técnica oficial para el desarrollo, despliegue y mantenimiento de la plataforma Tunealo.
Alcance del proyecto
El objetivo es transformar la marca Autozone en Tunealo mediante una solución tecnológica robusta. La plataforma opera bajo un modelo híbrido:
- eCommerce directo: Comercialización del inventario propio de Tunealo.
- Marketplace: Permite a vendedores independientes (terceros) registrarse, cargar inventario y vender productos, generando comisiones para la plataforma.
Funcionalidades principales
- Interfaz visual estilo Pinterest (Grid Masonry).
- Sistema de gestión de usuarios (Compradores y Vendedores).
- Carrito de compras con persistencia en base de datos.
- Chat en tiempo real entre compradores y vendedores.
- Panel de control para vendedores.
Stack tecnológico
| Área | Tecnología | Descripción |
|---|---|---|
| Frontend | Next.js (React) | Uso del App Router, Server Components y Client Components. |
| Backend | Node.js (Next API Routes) | Endpoints RESTful integrados en la misma arquitectura Next.js (`src/app/api`). |
| Base de datos | MySQL | Base de datos relacional para usuarios, productos y transacciones. |
| Estilos | CSS Modules / CSS Global | Diseño responsivo y personalizado (`globals.css`, `page.module.css`). |
| Autenticación | JWT / Context API | Manejo de estado global con `AuthContext`. |
Instalación y configuración
Prerrequisitos
- Node.js (v18 o superior)
- MySQL Server (Local o Remoto)
- Git
Pasos de configuración
1. Clonar el repositorio:
git clone https://github.com/camlo43/marketplace.git
cd marketplace
2. Instalar dependencias:
npm install
3. Configurar base de datos:
Navegue a la carpeta /DB y ejecute los scripts SQL en el siguiente orden en su gestor de MySQL:
create_database_and_tables.sql(Crea la estructura)add_images.sql(Puebla datos iniciales de imágenes)migrate_all_products.sql(Migración de datos de prueba)
4. Variables de entorno:
Configure el archivo de conexión en src/lib/db.js o cree un archivo .env si el proyecto ha sido actualizado para usarlo. Asegúrese de que las credenciales de MySQL sean correctas.
5. Ejecutar scripts de mantenimiento (opcional):
Si necesita descargar imágenes de prueba o corregir el carrito:
node scripts/download-images.js
node scripts/fix_cart_duplicates.js
6. Iniciar el servidor de desarrollo:
npm run dev
La aplicación estará disponible en http://localhost:3000.
Arquitectura del sistema
Estructura de Archivos
El proyecto sigue la estructura estándar de Next.js App Router:
/marketplace
├── DB/ # Scripts SQL para creación y migración
├── public/ # Assets estáticos (imágenes, svgs)
├── scripts/ # Scripts de utilidad (JS/Python) para mantenimiento
├── src/
│ ├── app/ # Rutas de la aplicación (Pages & API)
│ │ ├── api/ # Backend endpoints
│ │ ├── cart/ # Página del carrito
│ │ ├── login/ # Página de login
│ │ ├── marketplace/ # Página principal de productos
│ │ ├── product/[id]/ # Detalle de producto dinámico
│ │ └── seller/[id]/ # Perfil público del vendedor
│ ├── components/ # Componentes UI reutilizables (Header, ProductCard)
│ ├── context/ # Estado global (Auth, Cart, Message)
│ └── lib/ # Utilidades y conexión a BD
└── package.json # Dependencias y scripts npm
Esquema de base de datos
El sistema utiliza MySQL con las siguientes tablas principales (basado en create_database_and_tables.sql):
| Tabla | Descripción |
|---|---|
users |
Almacena información de clientes y vendedores. Incluye campos para roles (tipo de usuario). |
products |
Inventario principal. Contiene título, descripción, precio, stock, y referencia al seller_id. |
cart |
Persistencia del carrito de compras por usuario. Relaciona user_id y product_id. |
messages |
Sistema de chat interno. Almacena remitente, destinatario y contenido del mensaje. |
reservations |
Manejo de órdenes o productos apartados. |
Documentación API (REST)
La API se encuentra en src/app/api/. A continuación se detallan los endpoints principales.
Autenticación & Usuarios
/api/users| Método | Endpoint | Descripción |
|---|---|---|
| POST | /login |
Verifica credenciales y retorna sesión de usuario. |
| POST | /register |
Registra un nuevo usuario en la plataforma. |
| GET | /[id] |
Obtiene detalles de un usuario específico. |
| GET | /[id]/seller |
Obtiene información pública del perfil de vendedor. |
Productos
/api/products| Método | Endpoint | Descripción |
|---|---|---|
| GET | / |
Obtiene el listado de todos los productos (Marketplace). |
| POST | / |
Crea un nuevo producto (solo vendedores). |
| GET | /[id] |
Obtiene detalles completos de un producto. |
Carrito de compras
/api/cart// Ejemplo de payload para POST /api/cart
{
"userId": 1,
"productId": 105,
"quantity": 1
}
Frontend & UI
El diseño se inspira en una interfaz tipo Pinterest, enfocada en la visualización rápida de productos.
Componentes clave
Sistema de diseño
Se utilizan estilos globales en src/app/globals.css. La paleta de colores busca modernizar la marca, alejándose de los colores tradicionales de Autozone para adoptar la identidad de Tunealo.
- Grid: Diseño responsivo con CSS Grid y Flexbox.
- Imágenes: Optimización automática mediante el componente
Imagede Next.js. - Iconos: SVG importados directamente (`cart-icon.png`, `file.svg`).
Soporte y contribución
Este proyecto fue desarrollado como reto para la Universidad de la Costa (CUC).
Para reportar bugs o solicitar nuevas características, por favor crear un Issue en el repositorio del proyecto.