Skip to content
/ tivia Public

Desafio para vaga de Desenvolvedor Java Sênior na TiviaTI.

Notifications You must be signed in to change notification settings

onatao/tivia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio Java TiviaTI

Este repositório é referente a um desafio para vaga de Desenvolvedor Java da empresa Tivia TI postada no site APInfo, o teste foi enviado pela Tech Recruiter Miriam e desenvolvido por mim, Nathan Barros de Assis.

Abaixo você verá informações sobre o desenvolvimento e instruções para build.

  • Dependências:

    • Spring Boot - framework
    • Spring Security - autenticação e autorização
    • Spring Data JPA - persistência
    • JWT - geração do token JWT
    • Swagger - documentação dos endpoints
    • Lombok - otimização de código boiler plate
    • H2 Database - base de dados para perfil de testes
    • PostgreSQL - base de dados para perfil de desenvolvimento
    • JUnit5 & Mockito - testes unitários
    • Jarkata Validation - validação dos dtos
    • Swagger - documentação dos endpoints

Para garantir a segurança, agilidade e consistência no desenvolvimento foi utlizado Git Flow para versionamento entre as branches

  • Cadastro e condições para manter um beneficiário:

    Como regra de negócio eu adotei que para um beneficiário possa ser cadastrado é necessário o envio dos seguintes documentos: CPF, RG, Certidão de Nascimento e Comprovante de Residência. Se por ventura algum destes documentos não estiver presente no ato de cadastro, a ação não será concluída e retornará uma exeção.

    Para identificação do tipo de documento que está sendo cadastrado foi utlizado um tipo enumerado (enum).
  • Autenticação e Autorização (JWT)

    Para manter a segurança da aplicação eu optei por utilizar o Spring Security em conjunto com JWT, a ideia é que seja uma aplicação statelss e que o fluxo de autenticação e autorização seja feito através do Token JWT. Defini dois cargos (roles) que são: ADMIN e USER aonde USER representa um beneficiário que utiliza o serviço e ADMIN representando algum colaborador que tenha acesso privilegiado.

  • Fluxo de endpoints

    Abaixo você verá como foi feita a restrição de acesso aos endpoints com base em roles

    USER ADMIN
    Cadastrar-se na plataforma Remover um beneficiário
    Atualizar seus documentos Listar todos os beneficiários
    - Listar documentos de um beneficiário

>Existem dois endpoints especiais Registrar-se e Logar.

Optei por restringir tanto a listagem de beneficiários quanto a listagem de documentos ao cargo de ADMIN para que apenas um colaborador com acesso privilegiado. tenha acesso as informações sensíveis de um beneficário.

  • Pré-requisitos

    Antes de começar, certifique-se de que você tenha as seguintes ferramentas instaladas:

    • JDK 17
    • Maven
  • Executando

    Você pode executar a aplicação de diferentes maneiras:

    Opção 1: Linha de Comando

      mvn spring-boot run

    Observação: executar o comando com terminal aberto no diretório do projeto

    Opção 2: IDE

    1. Importe o projeto em sua IDE de preferência que suporte Spring Boot e Maven
    2. Procure a classe principal TiviaApplication.java e execute como uma aplicação Java.

About

Desafio para vaga de Desenvolvedor Java Sênior na TiviaTI.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages