/phonebook

Teste prático

Primary LanguageHTML

Project phonebook

Teste prático da Equipe Blue

Requisitos

  • Regras de negócio e validações
    • Utilização de annotation de validation nos modelos @NotBlank
    • Validação de login com criptografia utilizando BCrypt e senha em hash com salt
    • Relacionamento de possesão da informação
    • Tenancy de visualização baseado no token JWT
  • Utilização de padrões de projeto (repositórios, services, controllers, interfaces, injeção de dependência, etc.) dentro do contexto da aplicação
  • RESTful API stateless
  • Utilização do Spring Boot, Spring Security e Hibernate/JPA
  • Utilização de libs e frameworks acessórios
    • Backend

      • Resteasy Client
      • Resteasy Jackson
      • Hibernate, JPA e Panache
      • Smallrye JWT
      • Liquibase
      • Micrometer
      • JUnit 5
      • Lombook
    • Frontend

      • Quinoa
      • OpenAPI Generator para injeção no Angular
      • NGX Toaster
      • JWT Decode
      • Moment
  • Organização e limpeza do código
  • Cobertura de testes no front (gap do projeto)
  • Cobertura de testes de backend (gap do projeto)
  • Utilização forte de componentes no frontend (gap do projeto)
  • Modelo de casos de uso
  • Modelo do banco de dados
    • Utilizado liquibase para definição e/ou população dos modelos

Diferenciais

  • Utilização e configuração do swagger
  • Dockerfile ou docker-compose da aplicação
  • Quarkus

Como executar o projeto

  • Instalar o Java 17
  • Instalar o Node 18
  • Instalar o Maven 3
  • npm install

  • mvn clean package

Executar com o maven

Executar com maven e docker com docker-compose

Documentação utilizadas para consulta

RESTEASY CLASSIC - https://quarkus.io/guides/resteasy

GENERATING JAKARTA REST RESOURCES WITH PANACHE - https://quarkus.io/guides/rest-data-panache

SIMPLIFIED HIBERNATE ORM WITH PANACHE - https://quarkus.io/guides/hibernate-orm-panache

CONFIGURE DATA SOURCES IN QUARKUS - https://quarkus.io/guides/datasource

VALIDATION WITH HIBERNATE VALIDATOR - https://quarkus.io/guides/validation

USING JWT RBAC - https://quarkus.io/guides/security-jwt

SCHEDULING PERIODIC TASKS WITH QUARTZ - https://quarkus.io/guides/quartz

MICROMETER METRICS - https://quarkus.io/guides/telemetry-micrometer

LOMBOOK - https://projectlombok.org/setup/maven

UTILIZAR OPENAPI E SWAGGER UI - https://pt.quarkus.io/guides/openapi-swaggerui

USING LIQUIBASE - https://pt.quarkus.io/guides/liquibase

BCrypt - https://github.com/jeremyh/jBCrypt/blob/master/src/main/java/org/mindrot/BCrypt.java

Quinoa - https://docs.quarkiverse.io/quarkus-quinoa/dev/index.html

OpenAPI Generator - https://pguso.medium.com/using-openapi-generator-in-angular-projects-4c2813f55a91

Procedimentos

OpenAPI Angular

Instalar com npm

npm install @openapitools/openapi-generator-cli -g

Importar no Angular

npx openapi-generator-cli generate -i docs/openapi.yaml -g typescript-angular -o src/app/core/openapi --additional-properties=ngVersion=16.2.12,npmName=restClient,supportsES6=true,npmVersion=10.2.3,withInterfaces=true --generate-alias-as-model