Coder Social home page Coder Social logo

edson-mendes / adopet-api Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 483 KB

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.

Home Page: https://apiadopet.herokuapp.com/swagger-ui.html

Java 99.96% Dockerfile 0.04%
alurachallengebackend6 java rest-api springboot

adopet-api's Introduction

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.

adopet-api's People

Contributors

edson-mendes avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.