Nombre de la aplicación web: BiblioSpring
Vídeo descriptivo:
https://www.youtube.com/watch?v=Djd3V6I50sE
Descripción de la temática de la web:
La web consistirá en proporcionar servicio de una biblioteca tanto a usuarios que quieran hacer uso de la misma o tanto al bibliotecario para realizar todas las tareas de gestión que se necesitase.
Entidades principales:
- Libro: Conlleva unos atributos que lo caracterizan (nombre, escritor, descripción, categoría)
- Usuario: Diferencia de tipos de usuarios(si es socio o administrador de la biblioteca) y las acciones que permite realizar.
- Categoría:Tendrá varias temáticas en las diferentes áreas(informática, literatura, biología, deportes, historia, geografía...)
- Préstamo: Todo lo referente al control y gestión de los pagos de los carnet
- Alternativa: Otros tipos de recursos disponibles en la biblioteca (películas, revistas, fanzines,...)
Funcionalidades del servicio interno:
- Enviar un correo de bienvenida al registrarte
Parte privada:
Los socios de la biblioteca pueden alquilar libros, también pueden renovar su carnet de socio anual, hacer reservas de libros, publicar alguna reseña sobre el libro alquilado, cambiar sus datos, realizar el pago de una deuda pendiente, ...
El administrador (bibliotecario) podrá añadir un libro, eliminar un libro, modificar las características de un libro, podrá gestionar los préstamos de libros, podrá repartir los libros de la biblioteca en categorías, podrá añadir y eliminar los tipos de Alternativas (Fanzines, Películas y Revistas)...
Parte pública:
Los usuarios que no sean socios de la biblioteca podrán consultar el horario de la biblioteca, consultar los precios y beneficios de poseer el carné de socio, una opción de contactar con la biblioteca (cómo llegar), ver las distintas redes sociales que tiene la biblioteca, ver información adicional de la biblioteca, consultar las normas de uso interno en la biblioteca, ver la política de privacidad, consultar los libros que están disponibles, consultar los fanzines, películas y revistas que están disponibles, etc
Integrantes del equipo de desarrollo:
- Agustín López Gil - [email protected] - agustinlopezg
Modelo UML:
Diagrama de clases:
Modelo Entidad-Relación:
Descripción de las pantallas principales:
Interfaz del servicio interno:
La comunicación entre la aplicación web y el servicio interno está realizada mediante API Rest.
La función de la API Rest únicamente es mandar un mensaje de bienvenida a los nuevos usuarios que se registran.
La comunicación se hace mediante el protocolo SMTP.
El servicio interno solo tiene dos clases: una clase (Entity) y otra clase controlador (Controller).
La primera se conforma de dos atributos tipo String: el nombre de usuario y el nombre del correo.
La segunda es la más laboriosa, en la que se fija cómo se realiza la comunicación, qué puerto usa, qué devuelve, mediante qué mecanismos se hace, y lo que debe contener el mensaje.
Instrucciones precisas para desplegar la aplicación:
Compilación:
Virtualización en contenedores Docker:
Creamos las siguientes imágenes: (estando en el directorio de la aplicación web y/o de la aplicación del servicio interno)
docker build -f Dockerfile -t "imagen_web" .
docker build -f DockerFile-HAPROXY -t balanceador .
docker build -f Dockerfile -t "imagen_servint" .
Corremos cinco contenedores (Puertos 8444, 8445, 8080, 443 y 3306):
docker run --name container_mysql -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.6
docker run -e "SPRING_DATASOURCE_URL=jdbc:mysql://172.17.0.2/bibliospringbd?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" -p 8444:8444 --name=container_web imagen_web
docker run -e "SPRING_DATASOURCE_URL=jdbc:mysql://172.17.0.2/bibliospringbd?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" -p 8445:8445 --name=container_web2 imagen_web
docker run -p 8080:8080 --name=container_servint imagen_servint
docker run -p 443:443 --name=container_haproxy balanceador
Si hay errores a la hora del acceso a MySQL y a la base de datos:
docker run -ti mysql:5.6 /bin/sh
# mysql -h 172.17.0.2 -P 3306 -u root -p
1234 (cuando nos pide que introduzcamos la contraseña)
create database bibliospringbd;
¿Qué hace falta instalar?: Eclipse STS 4, Java 8, MySQL Workbench 8.0 y Docker Toolbox (Windows)