Após alguns testes com protótipos feitos pelo time de UX/UI de uma empresa, foi requisitada a primeira versão da Adopet, uma plataforma para conectar pessoas que desejam adotar animais de estimação e abrigos. A plataforma deve permitir ao usuário criar um perfil, visualizar os pets na fila de adoção. Por sua vez, os abrigos/ONGs podem criar um perfil para os pets e concretizar a adoção.
O schema Adopet é usado para armazenar informações sobre pets e seus tutores, bem como as mensagens enviadas para os tutores de quem tenha interesse em adotar um determinado pet. O schema é composto por três tabelas: Pets, Tutores, Abrigos e Adocoes.
A tabela Pets armazena informações sobre os pets registrados no sistema. Cada registro na tabela representa um pet e inclui os seguintes campos:
- id: um identificador exclusivo para o pet (tipo: inteiro)
- nome: o nome do pet (tipo: texto)
- idade: a idade do pet (tipo: texto)
- descricao: a descrição do pet (tipo: texto)
- adotado: referencia se o pet foi adotado ou não (tipo: bool)
- endereco: aonde o pet mora atualmente (tipo: texto)
- foto: foto do pet (tipo: texto)
- id_abrigo: o identificador do tutor do pet (tipo: inteiro)
A tabela Tutores armazena informações sobre os tutores registrados no sistema. Cada registro na tabela representa um tutor e inclui os seguintes campos:
- id: um identificador exclusivo para o tutor (tipo: inteiro)
- nome: o nome do tutor (tipo: texto)
- email: o endereço de e-mail do tutor (tipo: texto)
- senha: a senha do tutor (tipo: texto)
- cidade: a cidade do tutor (tipo: texto)
- telefone: o telefone do tutor (tipo: texto)
- sobre: descrição do tutor (tipo: texto)
- foto: foto do tutor (tipo: texto)
A tabela Abrigo armazena informações sobre o abrigo onde o pet está. Cada registro na tabela inclui os seguintes campos:
- id: um identificador exclusivo para o abrigo (tipo: inteiro)
- nome: o nome da ong (tipo: texto)
- id_tutor: id do responsavel pelo abrigo (tipo: inteiro)
A tabela Adocoes armazena informações sobre o pet que foi adotado por um tutor. Cada registro na tabela inclui os seguintes campos:
- id: um identificador exclusivo para a adoção (tipo: inteiro)
- data: a data em que o pet foi adotado (tipo: data)
- id_tutor: id de quem adotou o pet (tipo: inteiro)
- id_pet: id do pet que o tutor adotou (tipo: inteiro)
- Ao realizar uma adoção, o campo “adotado” é modificado para true, identificando assim que a adoção foi concretizada
- Se o animal for adotado, não aparecer no filtro de busca
- Somente a entidade Abrigo pode cancelar a adoção
- A criação e listagem de Tutores e Abrigos é livre
- A entidade tutor é usada para login na aplicação
- Se um tutor for cadastrado em um abrigo, ele passa a ter privilegios de autorização personalizadas
- Cada pet só é cadastrado se houver um abrigo
- Somente o tutor dono do abrigo pode apagar a adoção do pet cadastrado em seu abrigo
- Só quem está logado tem acesso a rota de adoções
- É necessario usar o token de sessão para acessar as adoções ou apagar o registro de um Pet
- O token de login expira em 2 minutos
- git clone https://github.com/etn-43/adopet.git
- cd adopet
- coloque as variáves de ambiente e renomeie "exemplo.env" para ".env"
- npm install
- npx sequelize-cli db:seed:all (você precisa ter um database com o nome de adopet na sua máquina)
- Integrar com o front-end
- Realizar testes TDD