https://github.com/didifive/peoplehub
PeopleHub: Registration of people and addresses API
https://github.com/didifive/peoplehub
api-rest flyway java mermaid-diagrams openapi3 railway-app spring-boot spring-data-jpa
Last synced: 8 months ago
JSON representation
PeopleHub: Registration of people and addresses API
- Host: GitHub
- URL: https://github.com/didifive/peoplehub
- Owner: didifive
- License: apache-2.0
- Created: 2024-04-10T10:11:53.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-04-11T12:11:25.000Z (over 1 year ago)
- Last Synced: 2025-01-10T00:17:14.936Z (9 months ago)
- Topics: api-rest, flyway, java, mermaid-diagrams, openapi3, railway-app, spring-boot, spring-data-jpa
- Language: Java
- Homepage: https://peoplehub-production.up.railway.app/swagger-ui/index.html
- Size: 202 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README


[](https://github.com/didifive/peoplehub/commits/master)
[](https://www.linkedin.com/in/luis-carlos-zancanela/)
[](https://www.jetbrains.com/idea/)

# 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
- EstadoOutros 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].
```mermaid
classDiagram
class BasicEntity {
<>
- 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 {
<>
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
**Coverage com 100%** - relatório gerado pelo plugin do Jacoco
Swagger documentando endpoints
---
## ✔️ 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:```shell
./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
```bash
./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[Mermaid]: https://mermaid.js.org/
[Railway]: https://railway.app/