RescateDePatitas - Repositorio del proyecto integrador de Diseño de Sistemas UTN FRBA

Overview

Rescate de Patitas

Trabajo Práctico - GRUPO 7 - Diseño de Sistemas - 2021 - Jueves Mañana

Resumen

El siguiente trabajo consiste en una aplicación web que permita a una persona registrarse como dueño de una o varias mascotas. La asociación enviará al dueño una chapita con un código QR que identifica unívocamente a la mascota, y en el caso de que se pierda la mascota, el rescatista pueda identificar al dueño mediante el escaneo del código QR. Además el sistema debe permitir la publicación de mascotas en adopción, así como también la solicitud de adopción por parte de algún adoptante. En estas publicaciones se harán preguntas sobre las preferencias del adoptante, o las características del animal; para luego ejecutar un algoritmo de recomendaciones que permita matchear mascota con adoptante. En el caso de que el dueño no pueda tener a la mascota, el sistema deberá proveer de información acerca de hogares que estén dispuestos a recibir a la mascota mediante el uso de una API Rest. Además las publicaciones deben ser aprobadas por voluntarios de asociaciones registradas en el sistema. Por último, los administradores del sistema deberán poder elegir qué características son las que se les preguntarán a los dueños o rescatistas sobre el animal, así como también decidir cuáles validaciones sobre la seguridad de las contraseñas se harán.

Para el desarrollo del trabajo práctico se deberán utilizar, de ser necesario, patrones de diseños vistos durante la cursada para realizar el modelo de objetos; consultar una API Rest; realizar tests unitarios y mockear aquellos componentes que interactúan con sistemas externos; realizar tareas programadas (cronjobs) para enviar mails de recomendaciones; realizar el modelo de datos teniendo en cuenta las formas normales así como también la performance de las consultas; implementar persistencia mediante el uso de un motor de base de datos relacional; realizar las vistas de algunos casos de uso de la aplicación; realizar los controladores de la aplicación; realizar un deploy de la aplicación en algún proveedor PaaS o IaaS.

Bibliotecas Utilizadas:

  • Spark
  • Hibernate/JPA
  • JavaMail
  • Retrofit
  • JUnit5
ALUMNO LEGAJO
Alexis Herasimiuk 167.251-4
Ian Crespi 167.397-0
Emmanuel Lazarte 168.926-5
Nicolás Williman 163.690-0
Federico Silva 167.439-0
Camil Loyola 161.626-2

Ayudante: fedekiwo


Diagrama de Clases

diagramaDeClases

Diagrama de Entidad - Relación

DER


Galería

login signup1 signup2 pet pets resque1 resque2 characteristics 404

Ejecutar con Docker

Instalar Docker y Docker Compose

Esto dependerá de tu sistema operativo, así que te recomiendo seguir las instrucciones específicas de cada uno.

Setear la contraseña de la Base de Datos

cp docker-compose-example.yaml docker-compose.yaml

Abrir docker-compose.yaml con tu editor de texto y completar el campo MARIADB_ROOT_PASSWORD=

Configurar el persistence.xml

cp src/main/resources/META-INF/persistence.sample.xml src/main/resources/META-INF/persistence.xml

Setear los siguientes valores:

<property name="hibernate.connection.url" value="jdbc:mysql://db/rescate_de_patitas" />
<property name="hibernate.connection.username" value="<Nombre de Usuario de la DB>" />
<property name="hibernate.connection.password" value="<Contraseña de la DB>" />

Puede ser que desees eventualmente ejecutar el proyecto en el entorno local, para ello es necesario que tu sistema conozca quién es db, se puede hacer con el siguiente comando:

sudo nano /etc/hosts

y escribir la siguiente línea:

127.0.0.1  db

Ejecutar el script

El script run.sh contiene las siguientes opciones:

  • run: Levanta la base de datos y el servidor
  • clean: Elimina los archivos compilados de java
  • install: Instala las dependencias
  • package: Compila el proyecto
  • all: Todas las anteriores
  • bootstrap: Levanta el servidor llenando con datos iniciales.
  • recomendations: Envía las recomendaciones a los usuarios.
chmod +x run.sh ## Una única vez
docker-compose up -d## Construye y levanta los contenedores

./run.sh bootstrap ## Compila y ejecuta el proyecto llenándolo con los datos iniciales
./run.sh all ## Compila y ejecuta el servidor sin realizar nada maś
./run.sh recomendations ## Envía las recomendaciones a los usuarios

Arrancar o detener el contenedor

docker-compose stop
docker-compose start
You might also like...

PROG2-21-Gruppo-2 - Sito del gurppo 2 per il progetto facoltativo di "Programmazione II" AA 2021/22

PROGETTO PROGRAMMAZIONE 2 - GRUPPO 2 SPECIFICHE Deadline : Marzo Progetto : Rogue-like Spiegazione generale E' un gioco a turni. Movimento in 4 direzi

Jan 3, 2022

Desafio numero 015 correspondiente al finalización del curso 01 de la carrera Java Full Stack de la academia Desafío LATAM

DesafioFinalProgramacionBasicaJava Desafio numero 015 correspondiente al finalización del curso 01 de la carrera Java Full Stack de la academia Desafí

Feb 17, 2022

Crud sobre el mundo del cine, y listado de películas que un usuario puede tener en su casa.

Crud sobre el mundo del cine, y listado de películas que un usuario puede tener en su casa.

FilmHome 🎬 🎞️ Crud sobre el mundo del cine, y listado para gestionar las películas que un usuario puede tener como colección en su casa. 📽️ VIDEO Y

May 16, 2022

Materiale didattico per il Tutorato di Ingegneria del Software A.A. 2021/2022

Tutorato_IDS Materiale didattico per il Tutorato di Ingegneria del Software A.A. 2021/2022 Installazione ambiente di sviluppo Java Scegliete una delle

Jul 5, 2022

Repositório referente ao código de uma classe data, com testes JUNIT, classe de exceção própria e classe aplicação para demonstrar as diversas funcionalidades da classe data

Exercicio-Data Repositório referente ao código de uma classe data, com testes JUNIT, classe de exceção própria e classe aplicação para demonstrar as d

May 4, 2021

Esse repositório disponibiliza uma versão zero de uma API de cadastro de usuários (Users) a ser melhorada com desafios ☕️ 🇧🇷

java-training-api Esse repositório disponibiliza uma versão zero de uma API de cadastro de usuários (Users) na pasta SRC a ser melhorada. DESAFIOS Os

Dec 22, 2022

Repositório com conteúdo da disciplina Linguagem de Programação 2 de 2021.2 do IMD/UFRN

IMD0040 - LP2 Repositório contendo informações e arquivos da disciplina de Linguagem de Programação 2 (IMD0040) do IMD/UFRN ministrada pelo Prof. Gust

Dec 22, 2022

Repositório para desenvolvimento da camada de back-end da aplicação

Projeto Integrador - Back-end 🚀 Começando Essas instruções permitirão que você obtenha uma cópia do projeto em operação na sua máquina local para fin

Jun 2, 2022

Repositório para armazenamento do projeto

Repositório para armazenamento do projeto

🚧 Projeto em construção 🚧 Tópicos 🔹 Descrição do projeto 🔹 Funcionalidades 🔹 Diagrama 🔹 Technologies & Tools 🔹 Caso de Uso Descrição do projeto

Apr 28, 2022
Owner
Alee Herasimiuk
Estudiante de Ingeniería en Sistemas en UTN - FRBA
Alee Herasimiuk
Repositorio de los microservicios desarrollados como parte del Proyecto Final de la academia de microservicios en IBM

Microservicio_ProyectoFinal_IBM Repositorio de los microservicios desarrollados como parte del Proyecto Final de la academia de microservicios en IBM

Cesar Martin 2 Oct 18, 2021
Bot de Telegram que informa del precio del combustible en las gasolineras más próximas a tu ubicación

Telegram BOT Bot de Telegram en JAVA y SQLite. Sirve para consultar los precios de las gasolineras más cercanas a tu ubicación. Los datos son proceden

null 6 Jan 12, 2022
Repositorio para el Proyecto PSA

proyecto-psa Status Ejecución Test Manual: Status Ejecución Test Automático: 1. Repositorio para el Proyecto PSA Se propone una estructura de mono-rep

matiasmiguez 1 Nov 16, 2021
Back-End da rede social AdaTech para Projeto Integrador da Generation Brasil

Back-End da rede social AdaTech para Projeto Integrador da Generation Brasil

AdaTech.Projeto.Integrador 6 Apr 18, 2022
Tema 08. Arquitecturas y Patrones de Diseño. Curso 2021/2022.

Entornos de Desarrollo - 09 Arquitectura y Patrones de Diseño Tema 08. Arquitectura y Patrones de Diseño. Curso 2021/2022. Contenidos SOLID. Arquitect

José Luis González Sánchez 12 Nov 2, 2022
Proyecto de la asignatura Ingeniería de Software realizado con Scrum

Equipo Scrum Quiénes somos Product Owner: Robert Farzan Scrum Master: Daniela Córdova Porta Development Team: Alejandro Corpas Calvo David Bugoi Jorge

Alejandro Corpas Calvo 1 Jan 20, 2022
Distributed-messenger - 👨‍👨‍👧 Sistema de chat utilizando sockets desenvolvido para a disciplina de Sistemas Paralelos e Distribuídos

Distributed Messenger ??‍??‍?? Sistema de chat utilizando sockets desenvolvido para a disciplina de Sistemas Paralelos e Distribuídos Requisitos do Pr

Eloísa Bazzanella 5 Feb 19, 2022
Projeto de estudo de sistemas, E-comerce

e-commerce Projeto de estudo de sistemas, E-comerce Projeto do modulo: Construir um e-commerce onde seja possível gerenciar usuarios e produtos, Criar

Raphael Alonso de Mendonça 5 Apr 9, 2022
🕹️ Material das aulas de Criação de Aplicações e Sistemas 🕹️

Criação de Aplicações e Sistemas Projetos | Tecnologias | Screenshots | Licença CAS ☕ Projetos desenvolvidos durante as aulas do segundo trimestre de

UniAmérica Descomplica - ADS 18 Nov 20, 2022
Sito del gurppo 1 per il progetto facoltativo di "Programmazione II" AA 2021/22

Skeleton of the project src/base_classes/ will be used for all abstract classes and interfaces. src/game/ is where all other classes are. src/game/mak

Repository didattici di Massimo Santini 2 Mar 11, 2022