Skip to content

certidevs/g2_java

Repository files navigation

G2 Java - Plataforma de Tienda Online

Java 25 H2 / PostgreSQL Spring Boot 4 Thymeleaf Bootstrap 5 CSS Spring Security

Descripción

G2 Java es una aplicación web desarrollada con Spring Boot que implementa una plataforma de comercio electrónico. El sistema permite la gestión de usuarios, productos, categorías, compras, favoritos y reseñas, proporcionando una experiencia completa de tienda online.

La aplicación ha sido diseñada siguiendo la arquitectura MVC (Model-View-Controller) y utiliza Spring Security para la autenticación y autorización de usuarios.


Objetivos del Proyecto

  • Aplicar el desarrollo de aplicaciones web con Spring Boot.
  • Implementar persistencia de datos mediante JPA/Hibernate.
  • Gestionar la autenticación y autorización de usuarios.
  • Diseñar una aplicación siguiendo buenas prácticas de arquitectura software.
  • Utilizar una base de datos relacional para almacenar la información del sistema.

Tecnologías Utilizadas

Backend

  • Java 25
  • Spring Boot 4.0.5
  • Spring MVC
  • Spring Security
  • Spring Data JPA
  • Hibernate
  • Lombok

Frontend

  • Thymeleaf
  • Bootstrap 5.3.3
  • Font Awesome 7.2
  • HTML5
  • CSS3

Base de Datos

  • H2 Database (Base de datos en memoria)

Herramientas de Construcción

  • Maven

Arquitectura del Proyecto

El proyecto sigue una arquitectura por capas:

src/main/java/com/demo
│
├── config
│   ├── SecurityConfig
│   ├── WebConfig
│   └── DataInitializer
│
├── controller
│   ├── AuthController
│   ├── UserController
│   ├── ProductController
│   ├── CategoryController
│   ├── PurchaseController
│   ├── PurchaseLineController
│   ├── ReviewController
│   └── LikeController
│
├── dto
│   ├── RegisterForm
│   └── UserStatsDTO
│
├── model
│   ├── User
│   ├── Product
│   ├── Category
│   ├── Purchase
│   ├── PurchaseLine
│   ├── Review
│   └── Like
│
├── repository
│   └── Repositorios JPA
│
├── service
│   └── Lógica de negocio
│
└── G2JavaApplication

Modelo de Datos

Usuario (User)

Representa los usuarios registrados en el sistema.

Funciones:

  • Registro
  • Inicio de sesión
  • Gestión del perfil
  • Realización de compras
  • Publicación de reseñas
  • Gestión de favoritos

Producto (Product)

Representa los artículos disponibles en la tienda.

Información típica:

  • Nombre
  • Descripción
  • Precio
  • Imagen
  • Categoría

Categoría (Category)

Permite clasificar los productos para facilitar la navegación.

Compra (Purchase)

Representa un pedido realizado por un usuario.

Línea de Compra (PurchaseLine)

Contiene los productos incluidos en una compra.

Reseña (Review)

Permite que los usuarios valoren productos.

Favorito (Like)

Gestiona los productos marcados como favoritos por cada usuario.


Seguridad

La aplicación utiliza Spring Security para implementar:

  • Autenticación de usuarios.
  • Inicio y cierre de sesión.
  • Protección de rutas privadas.
  • Control de acceso basado en roles.
  • Restricción de operaciones administrativas.

Funcionalidades Principales

Gestión de Usuarios

  • Registro de usuarios.
  • Inicio de sesión.
  • Gestión de perfiles.
  • Control de acceso.

Gestión de Productos

  • Crear productos.
  • Modificar productos.
  • Eliminar productos.
  • Consultar catálogo.

Gestión de Categorías

  • Crear categorías.
  • Editar categorías.
  • Eliminar categorías.
  • Filtrar productos.

Sistema de Compras

  • Realizar pedidos.
  • Consultar historial de compras.
  • Gestionar líneas de compra.

Sistema de Favoritos

  • Añadir productos a favoritos.
  • Eliminar favoritos.
  • Consultar lista de favoritos.

Sistema de Reseñas

  • Publicar valoraciones.
  • Consultar opiniones.
  • Asociar reseñas a productos.

Configuración

Base de Datos

El proyecto utiliza H2 Database en memoria.

Configuración actual:

spring.application.name=g2_java

spring.datasource.url=jdbc:h2:mem:g2_java_db
spring.datasource.driver-class-name=org.h2.Driver

spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true

spring.h2.console.enabled=true

spring.servlet.multipart.max-file-size=10MB

Características

  • La base de datos se crea automáticamente al iniciar la aplicación.
  • Todos los datos se eliminan al detener la aplicación.
  • Adecuada para desarrollo y pruebas.
  • Consola H2 habilitada.

Consola H2

Una vez iniciada la aplicación:

http://localhost:8080/h2-console

Configuración:

JDBC URL: jdbc:h2:mem:g2_java_db
User Name: sa
Password:

Instalación

Requisitos

  • JDK 25
  • Maven 3.9 o superior

Clonar el repositorio

git clone <url-del-repositorio>
cd g2_java

Compilar

mvn clean install

Ejecutar

mvn spring-boot:run

o

java -jar target/g2_java-0.0.1-SNAPSHOT.jar

Testing

Ejecutar todas las pruebas:

mvn test

Dependencias Principales

Spring

  • spring-boot-starter-webmvc
  • spring-boot-starter-security
  • spring-boot-starter-data-jpa
  • spring-boot-starter-thymeleaf

Base de Datos

  • H2 Database

Frontend

  • Bootstrap
  • Font Awesome
  • WebJars

Utilidades

  • Lombok

Testing

  • Spring Security Test
  • Spring Data JPA Test
  • Spring MVC Test
  • Thymeleaf Test

Roles del Sistema

Usuario

Puede:

  • Registrarse.
  • Iniciar sesión.
  • Consultar productos.
  • Añadir favoritos.
  • Realizar compras.
  • Escribir reseñas.

Administrador

Puede:

  • Gestionar productos.
  • Gestionar categorías.
  • Gestionar usuarios.
  • Supervisar compras.
  • Administrar el contenido de la plataforma.
Acción Visitante Usuario Admin
Ver Tienda, productos y reseñas
Escribir reseñas No
Crear y gestionar Compras No
Marcar favoritos No
Crear/editar/desactivar productos, categorias y reseñas No No
Moderar reseñas y gestionar usuarios No No

Aprendizajes Obtenidos

Durante el desarrollo de este proyecto se han trabajado los siguientes conceptos:

  • Arquitectura MVC.
  • Programación orientada a objetos.
  • Persistencia con JPA/Hibernate.
  • Seguridad con Spring Security.
  • Gestión de dependencias con Maven.
  • Integración de bases de datos.
  • Desarrollo de aplicaciones web con Spring Boot.
  • Uso de Thymeleaf para la generación dinámica de vistas.

Equipo de Desarrollo

Proyecto académico desarrollado por el Grupo 2 como práctica de desarrollo de aplicaciones Java utilizando Spring Boot.


Licencia

Proyecto desarrollado con fines educativos y formativos.

Todos los derechos pertenecen a sus respectivos autores.

About

Grupo 2 Java Spring

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors