Este proyecto realizado como parte del final de una materia, es un sistema integral de gestión y ventas de un hipotetico E-Comerce (BidCom Store) desarrollado sobre java con el framework Spring Boot. El objetivo es proporcionar una plataforma centralizada que maneje la autenticación de usuarios, la gestión de inventario (Producto), el seguimiento de pedidos (Pedido) y una estructura de roles, permisos y autorizaciones.
| Categoría | Tecnología | Notas |
|---|---|---|
| Backend Core | Spring Boot 3+ | Base del proyecto, inyección de dependencias y auto-configuration. |
| Persistencia | Spring Data JPA / Hibernate | Manejo de entidades, herencia de clases y repositorios. |
| Base de Datos | MySQL | Base de datos, idealmente externa |
| Seguridad | Spring Security | Autenticación basada en roles (PasswordEncoder, UserDetailsService). |
| Frontend | Thymeleaf | Motor de plantillas moderno para la capa de presentación. |
| Responsive Design | Bootstrap | Marco para crear Webs Responsive. |
El sistema sigue el patrón MVC (Modelo-Vista-Controlador) con una estricta Arquitectura en Capas que garantiza la Separación de Responsabilidades y las buenas prácticas de Spring.
- Soft Delete (
activo): Implementación de borrado lógico en entidades clave (Usuario,Producto,Pedido). Esto asegura la integridad de los datos y permite la auditoría. - Herencia de Entidades: Uso de herencia de JPA (
Usuariocomo clase base paraCliente) para modelar correctamente la estructura de usuarios.
bidcom-ecommerce/
├── src/
│ ├── main/
│ │ ├── java/com/bidcom/
│ │ │ ├── config/ # Configuración de Spring (Spring Security, MVC, JPA)
│ │ │ ├── controller/ # Lógica de manejo de peticiones (MVC)
│ │ │ │ ├── AdminController.java # Muestra la lista de Usuarios y Productos para el rol ADMIN.
│ │ │ │ ├── ClienteController.java # Gestión de pedidos del cliente logueado (Ruta: /cliente/mispedidos).
│ │ │ │ ├── CreateController.java # Maneja todas las operaciones de CREACIÓN (Producto, Usuario, Pedido).
│ │ │ │ ├── DeleteController.java # Maneja todas las operaciones de BORRADO LÓGICO (Soft Delete).
│ │ │ │ ├── EditController.java # Maneja todas las operaciones de EDICIÓN/ACTUALIZACIÓN.
│ │ │ │ ├── HomeController.java # Punto de entrada y redirecciones iniciales.
│ │ │ │ ├── LoginController.java # Muestra el formulario de login.
│ │ │ │ ├── RepresentanteController.java # Muestra la lista de Clientes y Pedidos para el rol REPRESENTANTE.
│ │ │ │ └── SetupController.java # Wizzard de inicialización para crear el primer usuario ADMIN.
│ │ │ ├── model/ # Entidades JPA (Usuario, Producto, Pedido, Cliente)
│ │ │ ├── repositories/ # Repositorios Spring Data JPA
│ │ │ └── service/ # Lógica de Negocio y Transacciones
│ │ └── resources/
│ │ ├── templates/ # Vistas Thymeleaf (HTML)
│ │ ├── static/ # Archivos estáticos (CSS, JS, imágenes)
│ │ └── application.properties # Archivo de configuración principal (DB, puertos, logging)
│ │
│ └── test/
│ └── java/com/bidcom/ # Código para pruebas unitarias e integración
│
├── pom.xml # Dependencias y configuración de Maven
├── .gitignore
└── README.md
La seguridad es gestionada por Spring Security, controlando el acceso a recursos mediante una estructura de roles bien definida.
| Rol | Uso | Rutas de Acceso |
|---|---|---|
| ADMINISTRADOR | Gestión total (CRUD) de inventario y usuarios. | /admin/** |
| REPRESENTANTE | Gestión de clientes y creación & Soft Delete de pedidos. | /representante/** |
| CLIENTE | Visualización de pedidos propios. | /cliente/** |
- Autenticación Inicial: Implementación de un Wizzard de Configuración (
SetupController) para asegurar la creación del primer usuario (ADMIN) de forma segura. - Hasheo de Contraseñas: Uso obligatorio de
BCryptPasswordEncoderen las operaciones de creación y edición.
Sigue estos pasos para correr la aplicación localmente:
- Java Development Kit (JDK) 17 o superior.
- Maven.
-
Clonar el repositorio: (Si aplica)
git clone [URL_DEL_REPOSITORIO] cd [nombre-proyecto] -
Desplegar y conectar a la base de datos Debe desplegarse una base de datos MySQL de manera local (o en un dispositivo de la misma red) Y asegurarse de configurar las credenciales para la conexion en
application-propertiesspring.datasource.url=jdbc:mysql://<ip>:<puerto>/<db_name> -
Compilar y Ejecutar (Maven):
mvn clean install mvn spring-boot:run
Una vez que la aplicación inicie en http://localhost:8080/:
- Primer Uso (Empty DB): El sistema redirigirá automáticamente al Wizzard de configuración (
/setup) para crear la cuenta de Administrador. - Acceso a Paneles:
- Desde /login, una vez iniciada sesion con las credenciales de un usuario existente y activo, se nos redirigira al panel correspondiente segun su rol
- Terminacion y homogeneización del front-end (aspecto de formularios y wizzard)