Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jhansenbarreto/pessoa-endereco
API implementada para teste técnico no processo seletivo da Attornatus Procuradoria Digital para a vaga de Desenvolvedor Back End - Java.
https://github.com/jhansenbarreto/pessoa-endereco
clean-code data-transfer-object domain-driven-design h2-database java junit5 openapi3 spring-boot swagger-ui
Last synced: about 1 month ago
JSON representation
API implementada para teste técnico no processo seletivo da Attornatus Procuradoria Digital para a vaga de Desenvolvedor Back End - Java.
- Host: GitHub
- URL: https://github.com/jhansenbarreto/pessoa-endereco
- Owner: jhansenbarreto
- Created: 2023-01-18T15:49:30.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-10-20T00:37:23.000Z (about 1 year ago)
- Last Synced: 2023-10-20T09:38:18.196Z (about 1 year ago)
- Topics: clean-code, data-transfer-object, domain-driven-design, h2-database, java, junit5, openapi3, spring-boot, swagger-ui
- Language: Java
- Homepage:
- Size: 108 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
|# :pencil: Documentação
>*Este projeto foi implementado na etapa do teste técnico no processo seletivo da ``Attornatus Procuradoria Digital`` para a vaga de ``Desenvolvedor Back End - Java``. Seguindo as especificações dadas no teste, o projeto é uma simples API destinada ao cadastro de Pessoas e Endereços, servindo as funcionalidades obrigatórias exigidas no teste e outras implementadas pelo desenvolvedor da API por decisão de projeto.*
O projeto conta com o CRUD completo das seguintes entidades:- ``Estados``
- ``Cidades``
- ``Pessoas``
- ``Endereços``A documentação completa do projeto foi feita utilizando as ferramentas da biblioteca ``Spring Doc``, dependência do projeto, através do ``Swagger UI`` com as especificações do ``Open API 3.0``, afim de prover maior entendimento para os consumidores da API. Para acessar a documentação, faça o clone do projeto para a sua máquina, inicie a aplicação *(pode demorar um pouco, pois será feito o download das dependências na primeira vez)* e após subir o serviço abra seu navegador e digite: ``http://localhost:8080/swagger-ui/index.html``. Se preferir, os testes podem ser feitos na própria página da documentação, onde contém as explicações devidas para consumir cada *endpoint*.
## :hammer: Funcionalidades
:package: ``Estados:``
- Cadastra estados
- Consulta estados
- Lista todos os estados cadastrados
- Lista todas as cidades de um estado
- Edita estados
- Exclui estados
- > :bulb: **Detalhes**: *Não é permitido estados com dados duplicados, nomes só aceitam letras maiúsculas, minúsculas, acentuadas e espaços, UF só aceita 2 letras.*:package: ``Cidades:``
- Cadastra cidades
- Consulta cidades
- Lista todas as cidades cadastradas
- Edita cidades
- Exclui cidades
- > :bulb: **Detalhes**: *Nomes só aceitam letras maiúsculas, minúsculas, acentuadas e espaços.*:package: ``Pessoas:``
- Cadastra pessoas
- Consulta pessoas
- Lista todas as pessoas cadastradas
- Edita pessoas
- Exclui pessoas
- > :bulb: **Detalhes**: *Nomes só aceitam letras maiúsculas, minúsculas, acentuadas e espaços. Data de nascimento no padrão yyyy-mm-dd*:package: ``Endereços:``
- Cadastra endereços para Pessoas
- Lista todos os Endereços de uma Pessoa
- Edita endereços
- Exclui endereços
- Permite marcar um endereço como principal
- > :bulb: **Detalhes**: *CEP aceita apenas 8 caracteres numéricos. Todo primeiro endereço cadastrado é marcado como principal automaticamente. Sempre que um endereço principal for excluído, caso ainda existam outros, o primeiro da lista se torna o novo principal.*## :heavy_check_mark: Técnicas e Tecnologias Utilizadas
- ``Java 17``
- ``Spring Boot 3``
- ``Apache NetBeans IDE 15``
- ``Banco de Dados em Memória (H2)``
- ``Postman 10 (para testes práticos)``
- ``JUnit 5 (para testes programáticos)``
- ``Swagger UI / Open API 3 (para documentação)``
- ``Padrão de Projeto DTO (Data Transfer Object)``
- ``Modelagem com DDD (Domain-Driven Design)``## :rotating_light: Observações
- ``Comentários e Javadoc:`` Se for de seu interesse gerar o Javadoc do projeto, os comentários já foram escritos para facilitar o entendimento de algumas decisões tomadas durante a implementação.
- ``Dados de Teste:`` Para facilitar os testes, foi deixado no diretório ``src/main/resources`` um arquivo ``data.sql``, utilizado para popular o banco de dados sempre que a aplicação for iniciada. Confira o arquivo clicando aqui. :bulb: **ATENÇÃO:** *Os testes de integração desenvolvidos em JUnit 5 utilizam estes dados.*
- ``Tratamento de Erros:`` A API conta com tratamento de erros e fornece ao consumidor um modelo de representação de erros baseado na especificação RFC 7807 (Problem Details for HTTP APIs), utilizando-a apenas como referência, não implementando totalmente à risca.## :construction_worker: Autor
| :technologist: Desenvolvedor |:globe_with_meridians: Links Úteis|
|-----------------------------:|----------------------------------|
|Jhansen Barreto
|