MarketCali es una plataforma integral de gestión para supermercados diseñada con una arquitectura de microservicios escalable y un frontend moderno y reactivo. El sistema permite la administración eficiente de inventarios, ventas, facturación y usuarios, proporcionando una solución robusta para el entorno retail.
El proyecto sigue una arquitectura de microservicios basada en Spring Cloud, lo que permite desacoplar la lógica de negocio en servicios independientes, facilitando el mantenimiento y la escalabilidad.
- API Gateway: Punto de entrada único para todas las peticiones del cliente. Enruta el tráfico a los servicios correspondientes (
auth-service,product-service) y maneja preocupaciones transversales como CORS. - Discovery Service (Eureka): Servidor de registro y descubrimiento de servicios, permitiendo que los microservicios se encuentren entre sí dinámicamente sin hardcodear URLs.
- Auth Service: Encargado de la seguridad y gestión de usuarios. Maneja el registro, inicio de sesión y validación de credenciales (JWT).
- Product Service: Gestiona el catálogo de productos, inventario y lógica relacionada con las mercancías.
- Config Service: (Opcional/Futuro) Gestión centralizada de la configuración para todos los servicios.
- Lenguaje: Java 17
- Framework: Spring Boot 3.2.5
- Ecosistema Cloud: Spring Cloud 2023.0.1 (Gateway, Netflix Eureka)
- Base de Datos: MySQL / PostgreSQL (Configurable por servicio)
- Build Tool: Maven
- Framework: React 18
- Build Tool: Vite
- Ruting: React Router Dom
- Cliente HTTP: Axios
- Utilidades:
react-toastifypara notificaciones.quagga/@ericblade/quagga2para escaneo de códigos de barras.react-iconspara iconografía.
Asegúrate de tener instalado en tu entorno:
- Java 17 JDK
- Node.js 18+
- Maven (o usar el wrapper
mvnwincluido) - Docker (Recomendado para bases de datos y servicios de infraestructura)
git clone <url-del-repositorio>
cd marketcali-backendPara levantar el ecosistema de microservicios, se recomienda seguir este orden de inicio:
-
Discovery Service:
cd discovery-service ./mvnw spring-boot:runEspera a que inicie en el puerto 8761.
-
API Gateway:
cd api-gateway ./mvnw spring-boot:runInicia en el puerto 8080.
-
Servicios de Negocio (Auth, Product): Abre nuevas terminales para cada servicio:
cd auth-service ./mvnw spring-boot:runcd product-service ./mvnw spring-boot:run
Navega al directorio del frontend e inicia el servidor de desarrollo:
cd frontend
npm install
npm run devLa aplicación estará disponible típicamente en http://localhost:5173.
Las peticiones externas deben pasar a través del API Gateway (http://localhost:8080).
POST /auth/register: Registrar un nuevo usuario.POST /auth/login: Iniciar sesión y obtener token.
GET /api/productos: Listar todos los productos.POST /api/productos: Crear un nuevo producto (Requiere rol ADMIN/EMPLEADO).GET /api/productos/{id}: Detalle de un producto.
El sistema implementa un control de acceso basado en roles (RBAC):
| Rol | Descripción |
|---|---|
| ADMIN | Acceso total al sistema. Gestión de usuarios, configuración y reportes avanzados. |
| EMPLEADO | Gestión operativa. Ventas, inventario y facturación. |
| USER/CLIENTE | Acceso limitado. Visualización de catálogo y compras propias. |
- Haz un Fork del proyecto.
- Crea tu rama de funcionalidad (
git checkout -b feature/AmazingFeature). - Haz Commit de tus cambios (
git commit -m 'Add some AmazingFeature'). - Haz Push a la rama (
git push origin feature/AmazingFeature). - Abre un Pull Request.
Este proyecto está bajo la Licencia MIT - mira el archivo LICENSE para detalles.
Desarrollado con ❤️ por Miguel Ángel Ortiz Escobar