Skip to content

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.

Notifications You must be signed in to change notification settings

Edson-Mendes/adopet-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

No packages published

Languages