/webapp8

Primary LanguageHTMLApache License 2.0Apache-2.0

webapp8

Fase 0

Nombre de la aplicación web

  • W&T (Web And Tech)

Descripción

Esta aplicación pemitirá a los usuarios comprar artículos relacionados con tecnología así como ordenadores, cables, placas base, etc. todo dentro de la legalidad vigente.

Equipo de desarrollo

Nombre Email Github
Guillermo Martín García g.martingarcia@alumnos.urjc.es Wilhelm-mar
Sergio Octavio Mancebo s.octavio.2018@alumnos.urjc.es sergio-octavio
Víctor López Rodríguez v.lopezrodr@alumnos.urjc.es Victorlopezro
Rodrigo Montilla Fernández r.montilla.2019@alumnos.urjc.es romofe01
Fernando Prieto Olías f.prieto.2019@alumnos.urjc.es Fervo8564

Trello

Entidades

  • Usuarios
  • Pedidos
  • Producto
  • Valoraciones

Permisos de los usuarios

Distinguimos entre 3 tipos de usuario: usuarios no registrados, clientes y administradores.

  • Usuarios no registrados: podrán ver los productos junto con sus descripciones y valoraciones pero no tendrán permisos de administrador ni podrán comprar, vender o valorar productos.
  • Clientes: tendrán disponibles las mismas cosas que los usuarios no registrados pero podrán comprar, valorar productos (después de su compra) y modificar su perfil.
  • Administradores: podrán añadir productos a la venta, eliminarlos y modificar sus características (precio, descripción, etc.) pero no podrán comprar nada.

Imágenes

  • Los usuarios registrados podrán establecer una imagen de perfil.
  • Cuando un administrador ponga un producto a la venta, este tendrá que venir acompañado de una imagen.

Tecnología complementaria

  • A la hora de comprar un producto, podremos ver la localización de la tienda en la que se encuentra para que así el cliente decida si va a recogerlo o si por el contrario decide pagar los gastos de envío necesarios y recibirlo en casa.

Algoritmo o consulta avanzada

  • En función de los productos que un cliente haya comprado con anterioridad, se mostrará un listado de "artículos de interés" relacionado con sus compras previas.

Fase 1

Capturas de pantalla

Home- En esta pantalla permitirá al usuario ver todos los productos que están a la venta así como aplicar una serie de filtros para una busqueda más concreta de los productos que desea el usuario. image image image

Componentes- En esta pantalla permite al usuario seleccionar los diferentes componentes que existen en la web. Dentro de ella se puede encontrar un despliegue distinguiendo los tipos de productos: Placas Base, Procesador, Discos Duros, Tarjetas Gráficas. Además se podrá puntuar el artículo si previamente se ha comprado, visualizar el resto de valoraciones y puntuaciones, las características del artículo en particular. image

Placas Base- En esta página se visualiza los modelos de las placas base. image

Discos Duros- En esta página se visualiza los modelos de las discos duros. image

Procesador, - En esta página se visualiza los modelos de las procesador. image

Tarjetas Gráficas- En esta página se visualiza los modelos de las tarjetas gráficas. image

Periféricos- En esta pantalla permite al usuario seleccionar los diferentes periféricos que existen en la web. Dentro de ella se puede encontrar un despliegue distinguiendo los tipos de productos: Monitores, teclados, ratones y auriculares. Además se podrá puntuar el artículo si previamente se ha comprado, visualizar el resto de valoraciones y puntuaciones, las características del artículo en particular. image

Monitores- En esta página se visualiza los modelos de los monitores. image

Teclados- En esta página se visualiza los modelos de los teclados. image

Ratones- En esta página se visualiza los modelos de los ratones. image

Auriculares- En esta página se visualiza los modelos de los auriculares. image

Móviles- En esta página se visualizará todos los tipos de móviles. image

Contacto- En esta página permita al usuario ponerse en contacto por teléfono, correo electrónico... Además de dar la opción del contacto en Redes Sociales. image

Login- En esta pantalla permite al usuario logueado poder cambiar algunos aspectos de su perfil como por ejemplo su foto de perfil, encabezado o cambiar la información que se encuentra en su perfil. image

AdminProductos- En esta pantalla permite a los administradores gestionar los productos de la aplicación, ya sea añadiendo o borrando productos existentes. image

AdminUsuarios- En esta pantalla permite a los administradores gestionar los usuarios de la web, como por ejemplo comprobar que existe un usuario. image

AdminGráficas- En esta pantalla permite a los administradores observar las graficas sobre la información recogida de la página web image

Diagrama de navegación

FLUJO

Fase 2

Capturas de pantalla

Home - se ha modificado la página home con un menu para clientes, se han traducido información de la página al español, se muestran productos de la aplicación. index

Product - se ha modificado la página de productos de componentes y periféricos products

Single product - se ha modificado la página cuando se muestra la información de un producto en concreto singleproduct

SignIn / Login - página para el registro de un nuevo usuario o el logueo para un usuario ya registrado. login

Perfil - página donde el usuario puede modificar su información de la cuenta ya sea su nombre de usuario, su nombre completo, su dirección o su correo. perfil

Pedidos - página para ver información de los pedidos realizados. Pedidos

Seguridad - página para poder cambiar la contraseña de forma segura o darse de baja en la aplicación. seguridad

Checkout - modificación de la página del checkout, aparecerá un botón de compra si se ha registrado previamente en la aplicación checkout

Graphics - página de admin que permite observar gráficas de las ventas de la aplicación. graphics

Admin user list - página de admin que muestra la lista de usuarios dados de alta en la aplicación. adminuserlist

Order list - página de admin que muestra la lista de pedidos que se han realizado en la aplicación. orderlist

New product - página de admin que facilita la creación de nuevos productos para la aplicación web. newproduct

Contact - modificación de la página de contactos, detalles referente a nuestra aplicación y traducido al español. contact

Error - página de error donde se redireccionará al usuario en caso de que exista algún error en la aplicación. error

Diagrama de navegación

navegacionFase2

Instrucciones de ejecución

Para instalar y ejecutar la aplicación del grupo 8 se deben seguir los siguientes pasos:

  1. Usamos el siguiente hipervínculo al repositorio de Github del grupo 8: https://github.com/CodeURJC-DAW-2021-22/webapp8 (Asegurarse que nos encontramos en la rama main).
  2. Nos dirigimos a PostgreSQL "pgAdmin 4" y en nuestro servidor local creamos una base de datos llamada webandtech (Es importante que esté vacío para que en la primera ejecución se carguen la información de la aplicación).
  3. Una vez descargada la aplicación, en el entorno de desarrollo Eclipse con la extensión de spring preparada de antemano, abrimos el archivo application.properties y ponemos la contraseña y usuario que tengamos en nuestra base de datos de "pgAdmin 4" y ejecutamos el programa.
  4. Sin parar la ejecución del programa, introduce la siguiente Url en un navegador: https://localhost:8443/
  5. Una vez que nos cargue la pantalla de la tienda, la aplicación estará lista para usarse.

Requisitos para la ejecución del programa:

  • PostgreSQL: 14.2
  • Pack de Spring Boot para Eclipse o en el entorno de desarrollo que se esté trabajando: (versión 2.6.3)
  • Versión de java: 17
  • BootStrap: 3.3.7
  • JQuery: 3.1.1-1

Diagrama con las entidades de la base de datos:

diagBBDD

Diagrama de clases y templates

Leyenda del diagrama:

  • Morado: Vistas
  • Verde: Controladores
  • Azul: Repositorios
  • Negro: Modelos
  • Rojo: Servicios
  • Azul claro: Seguridad image

Participación de miembros

Guillermo Martín García | g.martingarcia@alumnos.urjc.es

Realización de la aplicación básica de la aplicación y posterior actualización de todo. Modificación de los controladores y mapeado. Consulta y ayuda a los demás miembros del grupo.

Número Descripción Commit Archivos
update all parts app https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/b29b1f77c6960d9c1452a3b4350a31173e7b52ef https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/resources/templates/newProduct.html
update app https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/a064c23f5847dad3fd4f3b8519410c6ae18de8a8 https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/java/webapp8/webandtech/controller/NavigationController.java
update view https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/fc2a8b2b163b02269b73d7d9788a8bd734c09ff4 https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/java/webapp8/webandtech/controller/UserController.java
update graphics https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/0b8e4aba1ade5452e9f59dfb234ab239e3876f91 https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/java/webapp8/webandtech/controller/AjaxController.java
update ratings https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/f6aa77939bd8be4632f2db8a82a4c5f8729b7602 https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/java/webapp8/webandtech/controller/UserController.java

Sergio Octavio Mancebo | s.octavio.2018@alumnos.urjc.es

Creación de las pantallas para la creación de los nuevos productos, botones especiales para el administrador y usuario. Submenu en el icono de login. Creación del pdf al finalizar la compra de uno de los productos de la tienda. Pantalla de creación/actualización de productos y gestión de los linkeos del header, footer y el resto de las pantallas correspondientes.

Número Descripción Commit Archivos
submenu creation in index.html SubMenu Index.html Style
Update template newProduct.html Created template newProduct.html, Update template newProduct.html newProdcut.html
Update pages and finished template product.html Update pages and finished template product.html product
Update template productsByFeatures.html Update template productsByFeatures.html productsByFeatures.html
Generated PDF GeneratePDF GeneratePDF

Víctor López Rodríguez | v.lopezrodr@alumnos.urjc.es

Cambios en todas las vistas, linkeos entre las páginas, modificacion del navigation controller y correccion de errores.

Número Descripción Commit Archivos
add error page https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/20dc182bcbc24bdb85c3654e264b46db6c816b26 https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/resources/templates/perfil.html
update templates https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/2b03ab0e3c532142d254cfa07f87aae992e8177f https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/resources/templates/seguridad.html
update views https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/f9d7b211d1dc147732b95c53d29813acec2c5bcc https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/resources/templates/error.html
update views https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/391aef547c4eb0b3b309d8210cc0b238cd019002 https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/resources/templates/transacciones.html
update views https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/f580f7ac56e5ea2107edf84789d9611dba08e30f https://github.com/CodeURJC-DAW-2021-22/webapp8/blame/main/backend/webandtech/src/main/resources/templates/checkout.html

Rodrigo Montilla Fernández | r.montilla.2019@alumnos.urjc.es

Creación de modelos, repositorios, servicios y arreglo de errores de código

Número Descripción Commit Archivos
Add productType repository https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/9bf6d096380e85d93ddcdeb670771b550c0934d5 https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/src/main/java/webapp8/webandtech/repository/ProductTypeRepository.java
Add brand repository https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/e0b15cf32d9cd92dff9d96fa8ea7b839e93444ca https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/src/main/java/webapp8/webandtech/repository/BrandRepository.java
Add producttype model https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/fb8bff01fb3e5482d96b59e9b8c1df95fc9eeaa6it https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/src/main/java/webapp8/webandtech/model/ProductType.java
Add model brand https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/23e8c5deed721a3ae0c76b0e8d7beb71e0f0571c https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/src/main/java/webapp8/webandtech/model/Brand.java
Add product controller and service https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/772e9371f2a00457b494a592192f490ef83e0130 https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/src/main/java/webapp8/webandtech/controller/ProductController.java

Fernando Prieto Olías | f.prieto.2019@alumnos.urjc.es

Este miembro del equipo se encargó de ingresar todos los datos al loader.java: usuarios, roles, productos, marcas, tipo de productos, sus respectivas imágenes,... También se ha encargado de la documentación del README.md: las imágenes de las vistas y su navegación, elaborar los diagramas,... Cabe destacar que realizó los primeros commits sobre las templates de perfil, transacciones y seguridad pero no aparecen los commits en el Github.

Número Descripción Commit Archivos
BBDD and Class diagrams (https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/1cc607fccc6578859531b90402ac96f8dcba81a8) (https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/README.md)
Users Loader (https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/f4223a9f78ed236c3510cdf7d51fe4c28470720d) (https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/src/main/java/webapp8/webandtech/model/Loader.java)
Products Loader (https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/0f3d9e44b3ea760c2a879d7833ee3a99bd179e8b) (https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/src/main/java/webapp8/webandtech/model/Loader.java)
Ratings Loader (https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/dcb3571037c140cae6af77ffa5f565d28393c9ce) (https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/src/main/java/webapp8/webandtech/model/Loader.java)
Aplication images (https://github.com/CodeURJC-DAW-2021-22/webapp8/commit/bc1fc3f71ae2c366f97249f4edd99ba7b9fdc578) (https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/README.md)

Fase 3

API REST a la aplicación web y despliegue con docker.

Aplicación implementada en Heroku

https://codeurjc-daw-2021-22-webapp8.herokuapp.com/

Credenciales de usuario de ejemplo:

Nombre de usuario: Jonathan

Contraseña: f

Documentación API Rest

*Archivo yaml: https://github.com/CodeURJC-DAW-2021-22/webapp8/blob/main/backend/webandtech/api-docs/api-docs.yaml

*Documentación API REST: https://rawcdn.githack.com/CodeURJC-DAW-2021-22/webapp8/7dde1b87c7c046e7c02de58391e7e06e63f4adf8/backend/webandtech/api-docs/api-docs.html

Actualización del diagrama de clases:

imagen

Instrucciones de ejecución de la aplicación dockerizada:

  1. Es necesaria la instalacion de docker y docker compose.

  2. Abrir la terminal navegar hasta la carpeta Docker.

3.1. Windows: Escribir el comando: "docker-compose up --build".

3.2. Linux: Escribir el comando: "sudo docker-compose up --build".

  1. Una vez finalizado el proceso de construcción de docker abrir el navegador y escribir:"https://localhost:8443/".

  2. Una vez escrita te redirigida a la pantalla de inicio de la aplicacion: "https://localhost:8443/index" una vez se cargue estará lista para ser utilizada.

Documentación para construcción de la imagen docker:

LINUX:

  1. Clonar repositorio mediante git clone https://github.com/CodeURJC-DAW-2021-22/webapp8.git

  2. Descargar Docker

  3. Descargar Docker Compose

  4. Navegar hasta la carpeta Docker

  5. Ejecutar el comando: "chmod 777 create_image.sh"

  6. Ejecutar el comando: "./create_image.sh"

Instrucciones para implementar la aplicación en Heroku

Para implementar la aplicación en Heroku, debe seguir los siguientes pasos:

  1. Crea una cuenta en Heroku.
  2. Instale el paquete Heroku.
  3. Instalar experto.
  4. Abra cualquier shell de tipo "bash".
  5. Inicie sesión en Heroku usando el comando "heroku login".
  6. Use el comando "cd" hasta llegar a la carpeta "Docker".
  7. Ejecute el comando "./create_heroku_app.sh codeurjc-daw-2021-22-webapp8".
  8. Ejecute el comando "./deploy_heroku_app.sh codeurjc-daw-2021-22-webapp8".
  9. Abra su panel de Heroku, haga clic en el nuevo repositorio y luego haga clic en "Abrir aplicación".

Participación de miembros

Guillermo Martín García | g.martingarcia@alumnos.urjc.es

Número Descripción Commit Archivos
Añadir la base de la aplicación, archivos jwt y varias actualizaciones Update app api UserRestController
Borrado de cosas sobrantes y actualización de partes de la API Update api AdminRestController
Añadir rest security config Update security api LoginApiController
Actualización de varias partes de la app Update app pom.xml
Modificación de varias partes destacando product service Update app ProductService

Sergio Octavio Mancebo | s.octavio.2018@alumnos.urjc.es

Sergio ha sido el encargado de realizar el controlador de UserRestControler, además de diseñar el Diagrama de Clases y redactar el README para esta Fase 3.

Número Descripción Commit Archivos
Implementación UserRestControler Add UserRestControler UserRestControler.java
Implementación UserRestControler Add UserRestControler UserRestControler.java
Implementación UserRestControler Add UserRestControler UserRestControler.java
Implementación UserRestControler Add UserRestControler UserRestControler.java
Implementación UserRestControler Add UserRestControler UserRestControler.java

Víctor López Rodríguez | v.lopezrodr@alumnos.urjc.es

Número Descripción Commit Archivos
Modificar el product service para que funcione con API rest Updates ProductService
Modificacion del product rest controller update productcrontroller ProductsRestController
Modificacion del product rest controller update productcrontroller UserRestController
Modificacion del product rest controller update productrestcontroller ProductRepository
Modicicaciones para los productos update API RatingService

Rodrigo Montilla Fernández | r.montilla.2019@alumnos.urjc.es

Número Descripción Commit Archivos
Añadir API REST User Model API REST User Model User
Añadir API REST Rol Model API REST Rol Model Rol
Añadir API REST Rating Model API REST Rating Model Rating
Añadir API REST Product Model API REST Product Model Product
Añadir API REST Order Model API REST Order Model Order

Fernando Prieto Olías | f.prieto.2019@alumnos.urjc.es

Número Descripción Commit Archivos
Creacion de Dockerfile y dockerizacion de la app add Dockerfile Dockerfile
Creacion del contenedor de la app con docker-compose add docker-compose docker-compose.yml
Configuracion del pom para heroku update pom pom.xml
Configuracion de la base de datos para heroku add DatabaseConfig DatabaseConfig.java
Configuracion del puerto en application.properties para heroku update application.properties application.properties