Un sistema completo de planificación de recursos (ERP) y punto de venta diseñado para administrar de manera eficiente un negocio, abarcando desde el control de inventario y ventas hasta la gestión especializada de caballos, clientes y proveedores.
- Gestión de Ventas y Compras: Control total sobre transacciones, historial de ventas y carritos de compra.
- Integración de Pagos: Procesamiento de pagos seguro utilizando Stripe.
- Control de Inventario: Administración de Productos, Categorías, Proveedores y control de existencias.
- Gestión Ecuestre: Módulo dedicado para el registro y seguimiento de Caballos.
- Administración de Usuarios y Clientes: Roles y permisos, autenticación segura y gestión de la cartera de clientes.
- Notificaciones: Sistema de alertas y notificaciones en tiempo real.
- Dashboard Interactivo: Panel de control con métricas clave del negocio.
El proyecto está dividido en dos partes principales: client (Frontend) y server (Backend).
- Framework: React + Vite
- Lenguaje: TypeScript
- Estilos: Tailwind CSS
- Estado Global: Zustand (Stores de Autenticación y Carrito)
- Peticiones HTTP: Axios
- Entorno: Node.js + Express
- Lenguaje: TypeScript
- Base de Datos: SQL a través de Knex.js (Query Builder, Migraciones y Seeds)
- Autenticación: JWT (JSON Web Tokens)
- Pagos: Stripe API
- Archivos: Multer para subida de imágenes
Asegúrate de tener instalados los siguientes programas antes de comenzar:
- Node.js (v16 o superior)
- npm o yarn
- Una base de datos SQL compatible (MySQL, PostgreSQL, etc.)
- Cuenta de Stripe (para obtener las API Keys de prueba/producción)
Sigue estos pasos para levantar el entorno de desarrollo local:
git clone [https://github.com/bryanitesca/ElPopa.git](https://github.com/bryanitesca/ElPopa.git)
cd ElPopacd server
npm installVariables de Entorno:
Crea un archivo .env en el directorio server/ basándote en el archivo de ejemplo o agrega las siguientes variables (ajusta según tu entorno):
PORT=3000
DB_HOST=127.0.0.1
DB_USER=tu_usuario
DB_PASSWORD=tu_contraseña
DB_NAME=elpopa_db
JWT_SECRET=tu_secreto_super_seguro
STRIPE_SECRET_KEY=sk_test_...Base de datos: Ejecuta las migraciones y los seeds para crear las tablas y poblar datos iniciales:
npm run migrate:latest
npm run seed:runIniciar el servidor:
npm run devEl servidor backend estará corriendo en http://localhost:3000.
Abre una nueva terminal y navega al directorio del cliente:
cd client
npm installVariables de Entorno:
Crea un archivo .env en el directorio client/ con la siguiente configuración:
VITE_API_URL=http://localhost:3000/api
VITE_STRIPE_PUBLIC_KEY=pk_test_...Iniciar el cliente:
npm run devLa aplicación frontend estará disponible en http://localhost:5173.
ElPopa/
├── client/ # Aplicación Frontend (React/Vite)
│ ├── public/ # Assets públicos e imágenes
│ ├── src/
│ │ ├── api/ # Configuración de Axios/API client
│ │ ├── components/ # Componentes de UI (Tablas, Modales, Vistas)
│ │ ├── hooks/ # Custom Hooks de React
│ │ ├── services/ # Funciones para llamadas a los endpoints (CRUD)
│ │ ├── stores/ # Estado global (auth, cart)
│ │ └── utils/ # Esquemas de validación y utilidades
│ └── tailwind.config.js # Configuración de TailwindCSS
│
└── server/ # Aplicación Backend (Node.js/Express)
├── migrations/ # Archivos de migración de base de datos (Knex)
├── seeds/ # Datos semilla para la base de datos
├── src/
│ ├── config/ # Configuración de BD y Entorno
│ ├── controllers/ # Lógica de las rutas
│ ├── middleware/ # Auth, Roles, Errores, Multer
│ ├── models/ # Definición de estructuras de datos/Interfaces
│ ├── routes/ # Definición de Endpoints de la API
│ ├── services/ # Lógica de negocio externa (Stripe, Notificaciones)
│ └── validators/ # Validaciones de esquemas (Zod/Joi)
├── tests/ # Pruebas (Jest)
└── knexfile.js # Configuración de Knex.js
El sistema utiliza JWT (JSON Web Tokens) para manejar las sesiones. El acceso a las distintas rutas del frontend y del backend está protegido mediante el roleMiddleware, asegurando que roles como Empleados o Clientes no tengan acceso a paneles administrativos sensibles.
MIT License - Siéntete libre de usar, modificar y distribuir este proyecto.