GithubHelp home page GithubHelp logo

didifive / peoplehub Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 207 KB

PeopleHub: Registration of people and addresses API

Home Page: https://peoplehub-production.up.railway.app/swagger-ui/index.html

License: Apache License 2.0

Java 99.94% Procfile 0.06%
api-rest flyway java mermaid-diagrams openapi3 railway-app spring-boot spring-data-jpa

peoplehub's Introduction

Repository language count Repository code size GitHub last commit

coverage Made by Didi

Repository license

IntelliJ IDEA

technology Java technology Spring

API People Hub 👩👨

API RESTful construída com Java 21 e Spring Boot 3.2.4.


🎯 Objetivo

A API desenvolvida deve permitir:

  • Criar, editar e consultar uma ou mais pessoas;
  • Criar, editar e consultar um ou mais endereços de uma pessoa; e
  • Poder indicar qual endereço será considerado o principal de uma pessoa.

Uma pessoa deve possuir os seguintes dados:

  • Nome completo
  • Data de nascimento
  • Endereços:
    • Logradouro
    • CEP
    • Número
    • Cidade
    • Estado

Outros pontos considerados:

  • Atingir o máximo de cobertura do código.
  • Construir API no formato REST.
  • Boas práticas de programação

🔧 Principais tecnologias utilizadas

  • Java 21: Versão LTS mais recente do Java para tirar vantagem das últimas inovações que essa linguagem robusta e amplamente utilizada oferece;
  • Spring Boot 3: Versão do Spring Boot, que maximiza a produtividade do desenvolvedor por meio de sua poderosa premissa de autoconfiguração;
  • Spring Data JPA: Ferramenta pode simplificar a camada de acesso aos dados, facilitando a integração com bancos de dados SQL;
  • FlyWay: Ferramenta que permite versionar e migrar seu banco de dados com scripts SQL simples ou Java;

🔣 Diagrama de Classes

Diagrama de classes na sintaxe Mermaid.

classDiagram
    class BasicEntity {
        <<Abstract>>
        - String id
    }

    class Person {
        - String name
        - LocalDate birthDate
        - List~Address~ adresses
        + Optional~Address~ getMainAddress()
    }

    class Address {
        - String publicPlace
        - Integer number
        - String city
        - String zipCode
        - State state
        - AddressType addressType
        - boolean main
    }

    class AddressType {
        <<Enumeration>>
        COMMERCIAL("Comercial")
        HOME("Residencial")
        MAILING("Correspondência")
    }

    BasicEntity <-- Person
    BasicEntity <-- Address
    Person "1" *-- "0..n" Address
    Address --> AddressType

📷 Prints do Projeto

Banner do Spring personalizado
Spring Banner

Coverage com 100% - relatório gerado pelo plugin do Jacoco
Jacoco Report

Swagger documentando endpoints
Swagger


✔️ Testes

Os testes foram feitos utilizando JUnit 5, Mockito e MockMVC com Hamcrest.

  • Para executar os testes pode executar sua IDE ou

  • Utilizando o terminal (PowerShell, Bash ou similiar), basta executar na pasta do projeto o comando abaixo:

    ./mvnw clean test

Após o teste finalizado com sucesso, é possível verificar relatório de coverage em: target/site/jacoco/index.html

⚙ Executando o projeto localmente

Antes de mais nada, é preciso Possuir no mínimo JDK 21 LTS instalado na máquina em que irá executar. A execução do projeto pode ser feita utilizando recurso de sua IDE ou com comando (demonstrado no próximo item).

⚡ Executando com perfil DEV

./mvnw spring-boot:run -Dspring_profiles_active=dev

📚 OpenApi / Swagger

Swagger OpenAPI v3.1, link para acessar a página do Swagger executando o projeto localmente: http://localhost:8080/swagger-ui/index.html

👪 Populate

Para popular dados automaticamente foi criada a migration do FlyWay V3__Populate.sql.


☁️ Deploy na Nuvem

Esse projeto foi implantado no Railway que faz integração com o repositório do GitHub. URL do Swagger na nuvem: https://peoplehub-production.up.railway.app/swagger-ui/index.html


📋 Qualquer dúvida, sugestão ou crítica é só entrar em contato ou abrir uma Issue (https://github.com/didifive).
💚 Feito com muita dedicação. #EnjoyThis

peoplehub's People

Contributors

didifive avatar

Stargazers

 avatar

Watchers

 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.