Una aplicación full-stack para gestionar sucursales, inventario, productos, ventas y finanzas. Incluye autenticación JWT, panel de control, reportes y gestión de stock.
- Node.js v18+ (Descargar)
- PostgreSQL 13+ (Descargar) o usar otra BD compatible con Prisma
- Git (Descargar)
- npm (incluido en Node.js)
git clone https://github.com/Elizabeth207/deyfus.git
cd deyfuscd deyfus-server
# Instalar dependencias
npm install
# Crear archivo .env con credenciales de tu base de datos
# Edita .env y reemplaza DATABASE_URL con tus credenciales:Archivo .deyfus-server/.env:
DATABASE_URL="postgresql://usuario:contraseña@localhost:5432/deyfus_db"
JWT_SECRET="tu_clave_secreta_aqui"
SMTP_HOST=smtp.gmail.com
SMTP_USER=tu@email.com
SMTP_PASS=tu_contraseña
PORT=4001
FRONTEND_URL=http://localhost:5173
HOST=0.0.0.0Nota: Reemplaza usuario, contraseña, y localhost:5432 con tus credenciales reales de PostgreSQL.
# Crear tablas en la BD
npx prisma db push
# Importar todos tus datos guardados (370+ registros: sucursales, productos, ventas, etc.)
node scripts/import_data.cjs
# Verificar que todo se importó correctamente (opcional)
# npx prisma studio # Abre interfaz web para revisar datosnpm run devDeberías ver: Server running: http://localhost:4001
En otra terminal:
cd deyfus-client
# Instalar dependencias
npm install
# Crear archivo .env (opcional, por defecto apunta a http://localhost:4001)
echo "VITE_API_URL=http://localhost:4001" > .env
# Iniciar aplicación
npm run devLa aplicación se abrirá en http://localhost:5173
Después de importar datos, puedes usar las credenciales que registraste:
- Email: (one de los usuarios en
data_export.json) - Password: (la que registraste)
O crea un nuevo usuario usando el formulario de registro.
deyfus/
├── deyfus-server/ # Backend (Node.js + Express + Prisma)
│ ├── src/
│ │ ├── controllers/ # Lógica de negocio
│ │ ├── routes/ # Endpoints de API
│ │ ├── middleware/ # Autenticación, validación, error handling
│ │ └── utils/ # Utilidades (upload, validación, etc.)
│ ├── prisma/ # Esquema BD, migraciones
│ ├── scripts/
│ │ ├── export_data.cjs # Exportar datos a JSON
│ │ └── import_data.cjs # Importar datos desde JSON ⭐
│ ├── uploads/ # Imágenes y archivos subidos
│ └── data_export.json # Snapshots de tus datos guardados
│
├── deyfus-client/ # Frontend (React + TypeScript + Tailwind)
│ ├── src/
│ │ ├── components/ # Componentes reutilizables
│ │ ├── pages/ # Páginas (login, dashboard, productos, etc.)
│ │ ├── context/ # Context API (autenticación)
│ │ ├── lib/ # Utilidades (API client, tipos)
│ │ └── routes/ # Rutas y protección
│ └── public/ # Archivos estáticos
│
└── .gitignore # Excluye node_modules, .env, etc. (pero incluye data_export.json y uploads/)
- Login / Registro con JWT
- Recuperación de contraseña
- Rol de usuario (ADMIN, MANAGER, SELLER)
- Resumen de ventas, inventario y finanzas
- Gráficos y análisis
- CRUD de productos
- Código de barras y QR
- Gestión de categorías
- Subida de imágenes
- Seguimiento de stock por sucursal
- Movimientos de inventario
- Alertas de bajo stock / overstock
- Ajustes manuales
- Punto de venta (POS)
- Historial de ventas
- Métodos de pago (efectivo, tarjeta, transferencia)
- Registro de ingresos/gastos
- Reportes financieros por sucursal
- Seguimiento de transacciones
- Gestión multi-sucursal
- Estadísticas por sucursal
- Control de inventario distribuido
npm run dev # Iniciar con nodemon (desarrollo)
npm run build # Compilar (si aplica)
npm test # Ejecutar tests
node scripts/export_data.cjs # Exportar datos a JSON
node scripts/import_data.cjs # Importar datos desde JSON
npx prisma studio # Abrir editor visual de BD
npx prisma migrate dev # Crear y ejecutar migracionesnpm run dev # Servidor de desarrollo (Vite)
npm run build # Compilar para producción
npm run preview # Preview de la build
npm run lint # ESLintSi clonaste el repo en otra PC:
cd deyfus-server
# Crear el archivo .env con tus credenciales locales
# (mismas instrucciones que arriba)
# Crear tablas
npx prisma db push
# Importar tus datos guardados
node scripts/import_data.cjs
# Listo — todos tus datos estarán disponiblesLas imágenes que subiste están en deyfus-server/uploads/ y se incluyen en el repositorio. Se sirven automáticamente cuando accedes a los productos.
Si necesitas agregar más imágenes después de la importación, usa la interfaz de carga en la app.
Recomendaciones:
.envcontiene credenciales sensibles — NO subir a GitHub (ya está en.gitignore)- JWT_SECRET — usa una clave fuerte y única
- Para producción, usa variables de entorno seguras (env. vault, servicios administrados)
- Considera usar HttpOnly cookies en lugar de localStorage para tokens (mejora seguridad)
- Verifica que PostgreSQL está corriendo
- Revisa las credenciales en
.env(usuario, contraseña, host, puerto)
- Cambia
PORTen.envo mata el proceso que usa ese puerto:# Windows PowerShell netstat -ano | findstr :4001 taskkill /PID <PID> /F
- Ejecuta
npx prisma generateendeyfus-server/
- Verifica que
npx prisma db pushcompletó sin errores - Revisa que
data_export.jsonexiste endeyfus-server/ - Ejecuta
node scripts/import_data.cjsde nuevo
Para issues o preguntas, abre un issue en GitHub.
MIT — libre para usar, modificar y distribuir.