Un sistema integral de Punto de Venta (POS) y gestión administrativa diseñado para supermercados. Este proyecto implementa una arquitectura robusta Cliente-Servidor, separando la lógica de negocio (Backend API REST) de la interfaz de usuario de escritorio (Frontend Swing).
Este proyecto fue desarrollado como trabajo final para la asignatura de Programación I.
- Institución: Instituto Tecnologico de Las Americas (ITLA)
- Profesor: Freidy Nuñez
| Nombre | Matrícula |
|---|---|
| Jorge Raynieri Sanchez Pichardo | 2025-1023 |
| Franciel Antonio Beltré Rodríguez | 2025-1247 |
- UI/UX Moderna: Interfaz gráfica construida con Java Swing y estilizada con FlatLaf (Soporte para temas claros/oscuros).
- Gestión de Roles:
- 🛡️ Admin: Control total (Usuarios, Promociones, Reportes).
- 📦 Inventario: Gestión de Productos y Categorías.
- 🛒 Cajero: Acceso exclusivo al Punto de Venta (POS) y Clientes.
- Punto de Venta (POS): Interfaz optimizada con búsqueda en tiempo real, carrito de compras y cálculo automático de totales.
- Navegación Fluida: Sistema de menús laterales y carga asíncrona de vistas para no congelar la interfaz.
- Seguridad: Autenticación robusta mediante JWT (JSON Web Tokens).
- Arquitectura: API RESTful escalable con Spring Boot.
- Patrones de Diseño: Uso de DTOs, Services, Repositories y manejo global de excepciones.
- Base de Datos: Relacional con MySQL y JPA/Hibernate.
El proyecto está dividido en dos módulos principales:
ROOT
├── supermarket # MÓDULO BACKEND (Spring Boot)
│ ├── src/main/java/com/yolge/supermarket
│ │ ├── config # Configuración de Seguridad (JWT, CORS)
│ │ ├── controller # Endpoints REST (API)
│ │ ├── dto # Data Transfer Objects
│ │ ├── entity # Entidades JPA (Base de Datos)
│ │ ├── repository # Interfaces de Acceso a Datos
│ │ └── service # Lógica de Negocio
│ └── resources # application.properties
│
└── supermarketClient # MÓDULO FRONTEND (Java Swing)
├── src/main/java/com/yolge/client
│ ├── core # Cliente HTTP y Sesión
│ ├── dto # Espejos de los DTOs del backend
│ ├── service # Lógica de conexión con la API
│ └── ui # Vistas (Swing, MigLayout)
│ ├── vwLogin.java
│ ├── vwSale.java # Punto de Venta
│ └── ...
└── resources # Iconos SVG y Temas
Sigue estos pasos para poner en marcha el sistema en tu entorno local.
- Java JDK 21 o superior
- Maven
- MySQL Server
El backend utiliza variables de entorno para la configuración. Crea un archivo .env en la raíz del módulo supermarket basándote en el archivo .env.example:
Archivo .env.example (Backend):
MYSQL_USER=root
MYSQL_PASSWORD=tu_contraseña
DB_URL=jdbc:mysql://127.0.0.1:3306/supermarket?createDatabaseIfNotExist=true
SECRET_KEY=tu_clave_secreta_jwt_aqui💡 Nota: La base de datos se creará automáticamente gracias al parámetro
createDatabaseIfNotExist=true.
Copia este archivo y renómbralo a .env, luego ajusta los valores según tu configuración local:
cd supermarket
cp .env.example .env
# Edita el archivo .env con tus credenciales
⚠️ Importante: Asegúrate de configurar correctamente elSECRET_KEYcon una clave segura para la generación de tokens JWT.
Una vez configurado el archivo .env, levanta el servidor:
cd supermarket
./mvnw spring-boot:run💡 El servidor iniciará en el puerto
8080por defecto.
Abre una nueva terminal, navega a la carpeta del cliente y ejecútalo. Asegúrate de que el backend esté corriendo primero.
cd supermarketClient
mvn clean compile exec:java📌 Si usas un IDE como IntelliJ IDEA o Eclipse, puedes ejecutar directamente la clase
Main.javaoApp.java.
- Lenguaje: Java
- Frameworks: Spring Boot, Hibernate, Java Swing
- Librerías UI: FlatLaf, MigLayout, Raven SwingPack
- Herramientas: Maven, Lombok, Jackson, Java HTTP Client
- Base de Datos: MySQL
Desarrollado por Jorge Raynieri Sanchez Pichardo y Franciel Antonio Beltré Rodríguez
Este proyecto es de código abierto y está disponible bajo la licencia MIT.
⭐ Si te gusta este proyecto, no olvides darle una estrella en GitHub!