Este proyecto ha sido desarrollado por los siguientes colaboradores:
- Luis Abril Andreu - l.abril.2022@alumnos.urjc.es - GitHub
- Cristian Teijeiro Parga - c.teijeiro.2022@alumnos.urjc.es - GitHub
- Juan Manuel Bustos Moya - jm.bustos.2022@alumnos.urjc.es - GitHub
- Álvaro Pindado Castiñeira - a.pindado.2019@alumnos.urjc.es - GitHub
- Usuario: Tiene varios pedidos.
- Pedidos: Cada pedido puede tener varios o ningún producto.
- Productos: Cada producto puede tener cero o varias reseñas.
- Reseñas
- Anónimo
- Comprador (registrado)
- Empresa
- Administrador
- Anónimo (usuario sin registrar):
- No tiene permisos, solo puede ver productos, buscarlos, iniciar sesión y registrarse.
- Comprador (usuario registrado como individual):
- Cerrar sesión, ver y buscar productos, añadir productos al carrito y realizar pedidos.
- Subir reseñas de productos.
- Empresa (usuario registrado como empresa):
- Subir productos con nombre, tipo, descripción, precio, cantidad e imagen.
- Gestionar productos subidos (ver, editar, borrar).
- Observar las gráficas que indiquen qué tipo de productos son los más subidos.
- Administrador (propietario de la app):
- Gestionar solicitudes de productos de empresas (aceptar/rechazar).
- Eliminar productos que no cumplan con el reglamento.
- Editar información de productos.
- Anónimo: Ninguna imagen asociada.
- Comprador: Imagen de perfil asociada a la cuenta.
- Empresa: Imagen de perfil asociada a la cuenta, además puede introducir imágenes para subir y editar productos.
- Administrador: Imagen de perfil asociada a la cuenta, además puede introducir imágenes para subir y editar productos.
- Gráfico para las empresas
- Gráfico circular en el que se muestra el porcentaje de tipos de productos que tiene una empresa subido y aceptado a la plataforma.
- Gráfico para los usuarios
- Gráfico de líneas en el que se muestra el gasto del usuario a lo largo de la historia de la cuenta, en este gráfico aparece el gasto de cada pedido a lo largo del tiempo.
- Inicio de sesión con los servicios de google
- Filtración por tipo y nombre del producto
- Productos más vistos
- Nuevos productos
- Usuarios:
- Tipo de usuario
- Nombre de usuario
- Contraseña
- Carrito de compra
- Historial de pedidos
- Productos:
- Tipo de producto:
- Electronica
- Libros
- Educación
- Electrodomesticos
- Deporte
- Música
- Cine
- Otros
- Nombre de producto
- Empresa
- Precio
- Descripción
- Imagen
- Tipo de producto:
- Pedidos:
- Lista de productos
- Precio total
- Dirección de envío
- ID del usuario
- Método de pago
- Instrucciones para el repartidor
-
Pantalla de inicio de sesión/registro - Esta pantalla permite a los usuarios iniciar sesión en la aplicación proporcionando sus credenciales.

-
Pantalla de perfil de usuario - Esta pantalla muestra la información del perfil del usuario, incluyendo detalles personales y opciones de configuración.

-
Pantalla de lista de productos - Esta pantalla muestra una lista de productos disponibles para la compra, con opciones de filtrado y búsqueda.

-
Pantalla de detalles del producto - Esta pantalla muestra información detallada sobre un producto seleccionado, incluyendo imágenes, descripción y reseñas.

-
Pantalla de carrito de compras - Esta pantalla muestra los productos que el usuario ha añadido a su carrito de compras, con opciones para modificar cantidades o eliminar productos.

-
Pantalla de estadísticas - Esta pantalla muestra estadísticas relevantes para los usuarios y administradores, como gráficos de ventas, productos más vendidos, y análisis de usuarios.

-
Pantalla de solicitudes del administrador - Esta pantalla permite al administrador ver y gestionar las solicitudes de productos subidos por las empresas, pudiendo aceptar o rechazar cada solicitud.
.png)
-
Pantalla de subida de un producto - Esta pantalla es un formulario que permite a las empresas subir nuevos productos, incluyendo detalles como nombre, descripción, precio, y fotos.
.png)
-
Pantalla del usuario sin registrar - Esta es la primera pantalla que aparece al cargar la web, mostrando productos destacados y opciones para iniciar sesión o registrarse.

-
Pantalla de productos de la empresa - Esta pantalla muestra todos los productos que una empresa ha subido, permitiendo gestionar cada uno de ellos.

-
Navegador
- El navegador se muestra en todas las pantallas, permitiendo desde este realizar búsquedas de todos los productos, iniciar sesión, registrarse, crear nuevos productos, acceder a la información del perfil, acceder al carrito y a la sección de "About us".
-
Primera pantalla
- En esta captura se puede observar lo que el usuario observará nada más entrar a la web (desde aquí se puede observar los algoritmos de consulta implementados y toda la funcionalidad del navegador) -
Pantalla de productos
- En esta captura se pueden observar los productos que han sido subidos por las compañías y aceptados por los administradores, esta pantalla la verás si eres un usuario sin iniciar sesión o un comprador. -
Pantalla About us
- En esta captura se puede observar información sobre nuestra empresa, en esta página nos introducimos a nosotros mismos indicando nuestras aficiones y lo que nos motiva a mejorar nuestra web. -
Pantalla de opciones para indentificarse
- Esta pantalla es un "pop-up" en el que solicita al usuario que se quiere identificar si desea utilizar un formulario en el que introducir su información para iniciar sesión / registrarse o si desea utilizar la tecnología complementaria de google para iniciar sesión con esta plataforma. -
Pantalla de registro/inicio de sesión
- Esta pantalla es un "pop-up" en el que se solicita al usuario que se registre / inicie sesión mediante un formulario, además a través de este formulario el usuario podrá indicar si quiere una cuenta de compañía (para subir productos a la venta) o de comprador (para comprar los productos que suben las compañías). -
Pantalla de carrito
- En esta captura se puede observar el carrito del usuario que está registrado. Esta pantalla solo se puede observar si el usuario que ha iniciado sesión es un comprador. -
Pantalla de información de la cuenta
- En esta captura se puede observar la información de la cuenta que ha iniciado sesión. -
Pantalla de creación de nuevo producto
- En esta captura se puede observar un formulario que una compañía puede rellenar para la subida de un nuevo producto. -
Pantalla de página de administrador
- En esta captura se observa la funcionalidad especial del administrador, la cual es aceptar o rechazar subidas de nuevos productos que quieres hacer las compañías. -
Pantalla de información detallada de un producto
- En esta captura se puede observar la información detallada de un producto, incluyendo las reviews de otros usuarios sobre ese mismo producto.
Antes de ejecutar la aplicación, asegúrate de tener instalados los siguientes componentes:
- Java (versión 21)
- Apache Maven (versión 3.8 o superior)
- MySQL Server (versión 8.0 o superior)
- Git
- Ejecuta el siguiente comando en la terminal para descargar el código fuente:
git clone https://github.com/CodeURJC-DAW-2024-25/webapp06 cd webapp06
- Iniciar Sesión:
mysql -u root -p 1234password?
- Crear la base de datos:
CREATE DATABASE global_mart;
- Salir de MYSQL:
EXIT;
- Construir la aplicación:
mvn clean package
- Ejecutar la aplicación:
java -jar target/webapp6.jar
Acceder en el navegador a la url: https://localhost:8443
- Administrador:
- username: user1
- password: user1
- Compañía:
- username: comp
- password: comp
- Usuario registrado:
- username: a
- password: a
Diagrama de relaciones de base de datos

Diagrama de relaciones de clases

| Descripción | Link |
|---|---|
| Commit en el que se ha aplicado la funcionalidad de AJAX (se ha ido retocando con commits anteriores y futuros) | Link Commit 1 Luis |
| Commit en el que se ha implementado la posibilidad de registro desde una cuenta de la plataforma google | Link Commit 2 Luis |
| Commit en el que se ha implementado la correcta visualización de los productos | Link Commit 3 Luis |
| Commit en el que se ha implementado la funcionalidad de la página de los administradores | Link 4 |
| Commit en el que se utiliza mustache para la correcta renderización de los elementos en el html aplicando los respectivos roles de cada usuario, además se mejora la carga de los productos permitiendo la carga de los productos propios de la compañía (en caso de iniciar sesión) | Link 5 |
| Descripción | Link |
|---|---|
| Clase, Repo y Servicio User | Link 1 |
| Search Controller y arreglo Data Loader | Link 2 |
| Empiezo login (hecho mas tarde, pero no en este commit) | Link 3 |
| Editar perfil | Link 4 |
| Búsqueda de productos | Link 5 |
| Descripción | Link |
|---|---|
| Company graph, commit where it was implemented a pie chart of the types of products in a company | Link 1 |
| User graph, similar to the company graph but with a different chary to show the historical prices trend of orders (not definitive) | Link 2 |
| Cart changes, remodeling the initial cart, with "add product to cart" funcionality (not definitive improvements in next commits) | Link 3 |
| Remove product and initiate payment in cart, includes remove funcionality and the initial step of payment method too | Link 4 |
| Payment and others corrections, includes final payment funcionality and other changes in models | Link 5 |
| Descripción | Link |
|---|---|
| Implementation of review system | Link 1 |
| Review first implementation | Link 2 |
| More review and product service optimization | Link 3 |
| Ayax first iteration | Link 4 |
| Optimization of product service and repository | Link 5 |
| Descripción | Link |
|---|---|
| MainController.java | Link 1 |
| BaseController.java | Link 2 |
| LoadMore.js | Link 3 |
| Products.html | Link 4 |
| ProductsController.html | Link 5 |
| Descripción | Link |
|---|---|
| UserService.java | Link 1 |
| LoginRegisterController | Link 2 |
| SearchController.java | Link 3 |
| User.java | Link 4 |
| login.js | Link 5 |
| Descripción | Link |
|---|---|
| ShoppingCartController.java | Link 1 |
| GraphsController.java | Link 2 |
| Order.java | Link 3 |
| companyGraph.html and userGraph.html | Link 4 |
| shoppingCart.html | Link 5 |
| Descripción | Link |
|---|---|
| ProductService.java | Link 1 |
| reviews.html | Link 2 |
| ProductsController.java | Link 3 |
| DataLoader.java | Link 4 |
| Review.java | Link 5 |
-
Para poder descargar y ejecutar la aplicación dockerizada tan sólo es necesario:
- Descarga la imagen de la aplicación desde el repositorio de Docker Hub:
sudo docker pull alvaro3517/webapp6 - Ubica tu terminal en la carpeta donde tengas el archivo [docker-compose.yml].
cd webapp06 - Ejecuta el archivo docker-compose.yml:
docker-compose up - Una vez haya terminado de ejecutarse, abre en tu navegador de preferencia dicha dirección.
Para poder crear a imagen de la aplicación es necesario tener docker instalado en tu máquina. Una vez tengas docker instalado, sigue los siguientes pasos:
-
Clona el repositorio a tu ruta deseada:
git clone https://github.com/CodeURJC-DAW-2023-24/webapp06 -
Inicia sesión en tu cuenta de Docker Hub. Si no tienes una, puedes crearla aquí. Se te pedirá introducir tu usuario y contraseña:
docker login -
Ejecuta el ejecutable bash script que creará la imagen de la aplicación:
./docker_image.shTen en cuenta que este script crea la imagen con el nombre "alvaro3517/webapp6" y la subirá a tu cuenta de Docker Hub. Si deseas cambiar el nombre de la imagen o el nombre de usuario, puedes hacerlo modificando el script, pero deberás también cambiar el nombre de la imagen que se usa en el docker compose yml.
- Descargar la clave proporcionada a través de correo electrónico por parte de los docentes.
- Conectarse a la red de la Universidad a través del Escritorio de Desarrollo.
-
Conectarse a la máquina virtual:
ssh -i appWeb06.key vmuser@appWeb06.dawgis.etsii.urjc.es -
Instalar Docker con Docker Compose en la máquina virtual:
sudo docker install -
Clonar el repositorio en la máquina virtual:
git clone https://github.com/CodeURJC-DAW-2024-25/webapp06.git -
En la carpeta raíz del repositorio, donde se encuentra el fichero docker-compose.yml, ejecutar el siguiente comando para iniciar la aplicación:
sudo ./docker_script.shSi antes no creaste la imagen, deberás ejecutar antes:
sudo ./docker_image.sh -
Una vez haya terminado de arrancar, conectarse a:
https://appWeb06.dawgis.etsii.urjc.es:443
Una vez inicializada la aplicación, para detenerla se puede hacer con:
sudo docker compose stop
Una vez ya ha sido detenida, se puede volver a arrancar con:
sudo ./docker_script.sh
Mi labor en esta práctica ha constado de la revisión y el análisis de errores al transformar la aplicación, ya que al transformar las clases en diferentes DTOs, nos ha llevado a cabo varios errores que hemos tenido que solucionar. Además de revisar y analizar errores, he llevado a cabo la adaptación del código a los DTOs. También me he encargado de gestionar la documentación tanto el README como la documentación de la API. He realizado además la actualización del diagrama de clases.
| Descripción commit | Link |
|---|---|
| Convertir todas las clases en diferentes DTOs según la funcionalidad | Link |
| Añadir SearchProductDTO y actualizar ProductMapper | Link |
| Arreglar AJAX | Link |
| Arreglar Imágenes | Link |
| Arreglar Reviews | Link |
| Fichero | Link |
|---|---|
| ReviewsController.java | Link |
| ProductsController.java | Link |
| MainController.java | Link |
| SearchController.java | Link |
| ProductService.java | Link |
| Descripción commit | Link |
|---|---|
| DTO structure | Link 1 |
| Adapt controllers to dto | Link 2 |
| Modifies DTOs services, mappers etc | Link 3 |
| Api Graphs Controller | Link 4 |
| Shopping cart DTO, review mapper, controllers etc | Link 5 |
| Fichero | Link |
|---|---|
| ApiGraphController.java | |
| ShoppingCartController | |
| DTOs | |
| Services | |
| Controllers |
| Descripción commit | Link |
|---|---|
| Added more functionality to the UsersAPI | Link 1 |
| Added more functionality to all the APIs | Link 1 |
| Added more functionality to the UserAPI | Link 1 |
| DockerCompose WIP | Link 1 |
| Last docker fix | Link 1 |
| Fichero | Link |
|---|---|
| Dockerfile | Link 1 |
| Docker-compose | Link 1 |
| APIProductController | Link 1 |
| APIUserController | Link 1 |
| APIReviewsController | Link 1 |
Mi labor en esta práctica ha sido la colaboración a la hora de realizar la API y la configuración de de la seguridad de la API
| Descripción commit | Link |
|---|---|
| Security Almost Finished | Link1 |
| Images Product Progress | Link2 |
| API Main Controller | Link3 |
| Postman tools and functionality | Link4 |
| API Product Controller | Link5 |
| Fichero | Link |
|---|---|
| APIMainController.java | Link1 |
| APIProductsController.java | Link2 |
| GlobalMartSecurityConfig.java | Link3 |
| ProductService.java | Link4 |
| APIReviewsController.java | Link5 |
Asegurarse de que Node.js está instalado
Abrir una terminal y ejecutar los siguientes comandos:
npm install
cd frontend
ng serve --proxy-config proxy.conf.json
Después ejecutar la base de datos y la aplicación springboot (fase 1)
| Descripción commit | Link |
|---|---|
| Shopping Cart done | Link |
| Connect API Rest to Angular Project | Link |
| Login finally done | Link |
| Product management | Link |
| Angular views | Link |
| Fichero | Link |
|---|---|
| Views | Link |
| shopping-cart.service.ts | Link |
| auth.service.ts | Link |
| login.component.ts | Link |
| ProductList Folder | Link |
| Descripción commit | Link |
|---|---|
| New product and edit product component done | Link |
| Admin functionality | Link |
| Problems with the roles fixed and the load of user images | Link |
| All review part done | Link |
| MostViewedProducts algorithm done | Link |
| Fichero | Link |
|---|---|
| form.component.ts | Link |
| admin.component.ts | Link |
| product-detail.component.ts | Link |
| product.service.ts | Link |
| register.component.ts | Link |
| Descripción commit | Link |
|---|---|
| Graphs components | Link |
| Add CompanyGraph component and update routing in user profile | Link |
| Edit Profile | Link |
| Home Component | Link |
| User Profile | Link |
| Fichero | Link |
|---|---|
| CompanyGrap Folder | Link |
| Home Folder | Link |
| User graph Folder | Link |
| User Profile Folder | Link |
| Graphs | Link |
| Descripción commit | Link |
|---|---|
| Search Component | Link |
| Docker compose fix | Link |
| Edit Docker for angular | Link |
| SPAController | Link |
| Fix of angular routes | Link |
| Fichero | Link |
|---|---|
| DockerFile | Link |
| Search Folder | Link |
| SPA Controller | Link |
| Api docs yaml | Link |
| app-routing-module.ts | Link |













