Skip to content

YolgeSanchez/supermarket_system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛒 Sistema de Gestión de Supermercado (POS)

Java Spring Boot Swing MySQL

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).


🎓 Información Académica

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

👥 Desarrolladores

Nombre Matrícula
Jorge Raynieri Sanchez Pichardo 2025-1023
Franciel Antonio Beltré Rodríguez 2025-1247

✨ Características Principales

🖥️ Cliente de Escritorio (Frontend)

  • 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.

⚙️ Servidor (Backend API)

  • 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.

📂 Estructura del Proyecto

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

🚀 Instalación y Ejecución

Sigue estos pasos para poner en marcha el sistema en tu entorno local.

Prerrequisitos

  • Java JDK 21 o superior
  • Maven
  • MySQL Server

1. Configuración de Variables de Entorno

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 el SECRET_KEY con una clave segura para la generación de tokens JWT.

2. Ejecutar el Backend (Servidor)

Una vez configurado el archivo .env, levanta el servidor:

cd supermarket
./mvnw spring-boot:run

💡 El servidor iniciará en el puerto 8080 por defecto.

3. Ejecutar el Cliente (App de Escritorio)

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.java o App.java.


📸 Capturas de Pantalla

Login

Login - Tema Claro Login - Tema Oscuro

Vista de Productos

Gestión de Productos Agregar Producto Gestión de Categorías Agregar Categoría Vista de Clientes

Vista de Promociones

Gestión de Promociones

Punto de Venta (POS)

Interfaz POS - Carrito Vacío Interfaz POS - Con Productos

Gestión de Usuarios

Lista de Usuarios Crear Usuario Editar Usuario

🛠️ Tecnologías

  • 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

👨‍💻 Desarrolladores

Desarrollado por Jorge Raynieri Sanchez Pichardo y Franciel Antonio Beltré Rodríguez


📄 Licencia

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!

About

Full-stack supermarket POS system with Spring Boot backend, Java Swing desktop client, JWT authentication, role-based access control, and real-time inventory management.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages