Skip to content

Edson-Mendes/adopet-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

119 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Adopet API

Badge Concluído Badge Java Badge Springboot Badge Postgresql Badge Heroku

📖 Resumo do projeto

Adopet API é uma REST API de uma plataforma para conectar pessoas que desejam adotar animais de estimação e abrigos.

A aplicação possui endpoints para gerenciar e manipular os recursos Guardião (Guardian), Abrigo (Shelter), Animal de estimação (Pet) e Adoção (Adoption), que são protegidos e requerem autenticaçao por JWT (Json Web Token) para serem manipulados.

Projeto proposto pela Alura no Challenge Backend 6ª Edição.

🧰 Tecnologias e ferramentas

💡 Funcionalidades

🔒 API de gerenciamento de Autenticação

  • Login de usuário: O login deve ser realizado através de um POST /api/auth com as credenciais do usuário (email e password) em um JSON no corpo da requisição.

👤 API de gerenciamento de Guardian

  • Cadastrar: Salvar Guardian através de um POST /api/guardians com as informações de name, email, password e confirmPassword em um JSON no corpo da requisição.

  • Atualizar: Atualizar Guardian através de um PUT /api/guardians/{ID}, onde ID é o identificador do Guardian, os novos dados do guardian devem ser enviados no corpo da requisição.

    • Apenas o próprio usuário Guardian pode atualizar seus dados.
    • É necessário estar autenticado.
  • Buscar por id: Busca Guardian por ID através de um GET /api/guardians/{ID}, onde {ID} é o identificador do Guardian.

    • É necessário estar autenticado.
  • Buscar todos: Busca paginada de guardians através de um GET /api/guardians.

    • É necessário estar autenticado.
  • Deletar: Deletar Guardian através de um DELETE /api/guardians/{ID}, onde {ID} é o identificador do Guardian.

    • Apenas o próprio usuário Guardian pode se deletar.
    • É necessário estar autenticado.

🏰 API de gerenciamento de Shelter

  • Cadastrar: Salvar Shelter através de um POST /api/shelters com as informações de name em um JSON no corpo da requisição.

  • Buscar todos: Busca paginada de shelters através de um GET /api/shelters.

    • É necessário estar autenticado.
  • Buscar por id: Busca Shelter por ID através de um GET /api/shelters/{ID}, onde {ID} é o identificador do Shelter.

    • É necessário estar autenticado.
  • Atualizar: Atualizar Shelter através de um PUT /api/shelters/{ID}, onde ID é o identificador do Shelter, os novos dados do abrigo devem ser enviados no corpo da requisição.

    • Apenas o próprio usuário Shelter pode atualizar seus dados.
    • É necessário estar autenticado.
  • Deletar: Deletar Shelter através de um DELETE /api/shelters/{ID}, onde {ID} é o identificador do Shelter.

    • Apenas o próprio usuário Shelter pode se deletar.
    • É necessário estar autenticado.

🐱 API de gerenciamento de Pet

  • Cadastrar: Salvar Pet através de um POST /api/pets com as informações name, description, age, image e shelterId em um JSON no corpo da requisição.

    • Apenas Shelters podem cadastrar Pets.
  • Buscar todos: Busca paginada de pets através de um GET /api/pets.

    • É necessário estar autenticado.
  • Buscar por id: Busca Pet por ID através de um GET /api/pets/{ID}, onde {ID} é o identificador do Pet.

    • É necessário estar autenticado.
  • Atualizar: Atualizar Pet através de um PUT /api/pets/{ID}, onde ID é o identificador do Pet, os novos dados do pet devem ser enviados no corpo da requisição.

    • Apenas o Shelter que cadastrou o Pet pode atualiza-lo.
  • Deletar: Deletar Pet através de um DELETE /api/pets/{ID}, onde {ID} é o identificador do Pet.

    • Apenas o Shelter que cadastrou o Pet pode deleta-lo.
    • Pet relacionado a uma Adoption não pode ser deletado.

😻 API de gerenciamento de Adoption

  • Adotar: Solicitar uma adoção de um Pet através de um POST /api/adoptions com as informações petId em um JSON no corpo da requisição. É necessário estar autenticado. Apenas Guardians podem solicitar uma adoção.

    • Apenas usuários do tipo guardian podem solicitar uma adoção.
    • Apenas Pets não adotados podem receber uma solicitação de adoção.
  • Buscar todos: Busca paginada de adoções através de um GET /api/adoptions, retorna todas as adoções relacionadas com o usuário logado.

    • É necessário estar autenticado.
    • Busca somente adoções relacionadas ao usuário autenticado (Shelter ou Guardian).
  • Atualizar status: Atualização de status através de um PUT /api/adoptions/{ID}/status com a informação status em um JSON no corpor da requisição. Os status possíveis são ANALYSING, CONCLUDED e CANCELED. Apenas usuários do tipo Shelter atualizar status.

    • Uma adoção só pode ter o status atualizado pelo Shelter relacionado na adoção.
  • Deletar: Deletar uma adoção através de um DELETE /api/adoptions/{ID}, onde {ID} é o identificador da Adoção.

    • Uma adoção só pode ser deletada pelo Shelter relacionado na adoção.

💻 Como executar a aplicação?

🐳 Docker

Clone o projeto:

git clone https://github.com/Edson-Mendes/adopet-api.git

Execute o comando:

docker compose -f adopet-api.yml up -d

O comando acima executará o arquivo adopet-api.yml, que irá subir um container PostgreSQL e um container da aplicação.
Após subir os containers, acesse http://localhost:8888/swagger-ui.html.
É necessário ter o Docker Compose instalado em sua máquina.

🛠️ Deploy

Realizei o deploy da aplicação no Heroku, você pode testar/brincar/usar aqui
Caso encontre alguma falha/bug me avise, se possível 😁.

OBS: O plano que eu uso do Heroku adormece a aplicação depois de certo tempo inativo, então pode ser que a primeira requisição demore um pouco (até uns 60 segundos), apenas seja paciente 😉.

⚙️ Atualizações futuras

  • Fornecer mais informações sobre Pet no DTO AdoptionResponse.
  • Criar um endpoint para o usuário atualizar sua senha.
  • Escrever a documentação dos erros que o usuário pode enfrentar.
  • Limitar a quantidade de dados que podem ser buscados na busca paginada.
  • Criar usuário admin.

About

REST API de uma plataforma para conectar pessoas que desejam adotar animais de estimação e abrigos. Projeto proposto no Challenge Backend 6ª Ed da Alura.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages