Sistema completo de gestión de pedidos y productos con frontend React y backend Node.js + PostgreSQL.
- ✅ Gestión de productos (CRUD completo)
- ✅ Gestión de pedidos con estados
- ✅ Interfaz moderna con React y Tailwind CSS
- ✅ Base de datos PostgreSQL
- ✅ API REST con Express
- ✅ Componentes UI reutilizables
- Node.js 18+ instalado
- PostgreSQL 12+ instalado y corriendo
- npm o yarn
cd dashboard-chatbot
npm installNOTA: Si encuentras errores de dependencias, intenta:
npm install --legacy-peer-depsPrimero, crea la base de datos en PostgreSQL:
# Conectarse a PostgreSQL
psql -U postgres
# Crear la base de datos
CREATE DATABASE dashboard_db;
# Salir de psql
\qCrea un archivo .env en la raíz del proyecto (puedes copiar .env.example):
# Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=tu_contraseña_aqui
DB_DATABASE=dashboard_db
# Server Configuration
PORT=3000
NODE_ENV=developmenttu_contraseña_aqui con tu contraseña real de PostgreSQL.
Ejecuta el script SQL para crear las tablas y datos de ejemplo:
# Opción 1: Desde la línea de comandos
psql -U postgres -d dashboard_db -f server/database/schema.sql
# Opción 2: Desde psql interactivo
psql -U postgres -d dashboard_db
\i server/database/schema.sqlEsto creará:
- Tabla
productscon 5 productos de ejemplo - Tabla
orderscon 3 pedidos de ejemplo - Índices para optimizar consultas
# Desarrollo (inicia backend y frontend simultáneamente)
npm run devEsto iniciará:
- Backend API: http://localhost:3000
- Frontend: http://localhost:5173 (o el puerto que asigne Vite)
# Solo servidor backend
npm run server
# Solo cliente frontend
npm run client
# Build para producción
npm run build
# Preview de producción
npm run previewdashboard-chatbot/
├── server/ # Backend Node.js
│ ├── index.js # Punto de entrada del servidor
│ ├── api.js # Rutas y lógica de la API
│ └── database/
│ └── schema.sql # Schema de PostgreSQL
├── src/ # Frontend React
│ ├── api/
│ │ └── apiClient.js # Cliente HTTP para la API
│ ├── Components/
│ │ ├── orders/ # Componentes de pedidos
│ │ └── products/ # Componentes de productos
│ ├── Pages/
│ │ ├── Orders.js # Página de pedidos
│ │ └── Products.js # Página de productos
│ └── Entities/ # Definiciones de entidades
├── Layout.js # Layout principal
├── package.json # Dependencias del proyecto
└── .env # Variables de entorno (no incluir en git)
GET /api/products- Listar todos los productosGET /api/products/:id- Obtener un productoPOST /api/products- Crear productoPUT /api/products/:id- Actualizar productoDELETE /api/products/:id- Eliminar producto
GET /api/orders- Listar todos los pedidosGET /api/orders/:id- Obtener un pedidoPOST /api/orders- Crear pedidoPUT /api/orders/:id- Actualizar pedidoDELETE /api/orders/:id- Eliminar pedido
Ambos endpoints soportan el parámetro orderBy:
# Ordenar por fecha descendente (más reciente primero)
GET /api/products?orderBy=-created_date
# Ordenar por precio ascendente
GET /api/products?orderBy=precio- id: VARCHAR (PK)
- titulo: VARCHAR
- descripcion: TEXT
- precio: DECIMAL
- imagen_url: TEXT
- categoria: VARCHAR
- created_date: TIMESTAMP- id: VARCHAR (PK)
- cliente_nombre: VARCHAR
- cliente_direccion: TEXT
- cliente_telefono: VARCHAR
- items: JSONB (array de productos)
- estado: VARCHAR (pendiente, en preparación, en reparto, completado, cancelado)
- total: DECIMAL
- created_date: TIMESTAMP- Express.js - Framework web
- PostgreSQL (pg) - Base de datos
- dotenv - Gestión de variables de entorno
- cors - Cross-Origin Resource Sharing
- React 18
- TanStack Query (React Query) - Gestión de estado del servidor
- Tailwind CSS - Estilos
- Lucide React - Iconos
- date-fns - Manejo de fechas
# Verificar que PostgreSQL está corriendo
sudo systemctl status postgresql # Linux
brew services list # macOS
# Windows: Verificar en Servicios
# Verificar conexión
psql -U postgres -d dashboard_dbCambia el puerto en .env:
PORT=3001# Reinstalar dependencias
rm -rf node_modules package-lock.json
npm install-
Seguridad: Este es un proyecto de desarrollo. Para producción:
- Usa variables de entorno seguras
- Implementa autenticación y autorización
- Valida todas las entradas del usuario
- Usa consultas parametrizadas (ya implementadas)
-
Base de datos: El archivo
.envcontiene credenciales sensibles. NUNCA lo subas a git. -
Datos de ejemplo: El schema.sql incluye datos de ejemplo. Puedes eliminarlos si lo prefieres.
Este es un proyecto personal, pero si encuentras errores o mejoras, siéntete libre de crear un issue.
MIT
Hecho con ❤️ para gestionar pedidos y productos