/gerenciador-de-tarefas

Uma gerenciador de tarefas desenvolvido para o teste técnico da esig group. Feito com Angular e Spring, que tem como objetivo organizar as tarefas de uma equipe. Foi utilizado um sistema de login feito com Spring security e tokens JWT.

Primary LanguageJavaMIT LicenseMIT

Gerenciador de Tarefas | SIGTarefas

Uma gerenciador de tarefas desenvolvido para o teste técnico da ESIG Group. O sistema tem como objetivo gerenciar as tarefas de uma equipe, com a capacidade de as delegar a diferentes usuários cadastrados e fornecer as ferramentas necessárias para mantê-las, como as funcionalidades de criação, remoção, conclusão, edição e pesquisa de uma determinada tarefa. Implementado com Angular e Spring, o sistema trata-se de um site uma API REST, em que foi utilizado um sistema de login feito com spring security e tokens JWT, além de bloquear requisições não autenticadas, para aprimorar a segurança e privacidade dos dados, bem como foi utilizado rotas privadas na aplicação que dependem de autenticação para serem exibidas.

Requisitos

  • Node.js: Versão 16 ou superior (Requerida pelo angular 16)
  • Java: Versão 11
  • Angular: Versão 16.2.0
  • PostgreSQL: Um banco de dados PostgreSQL

Orientações de execução

  1. Clone o repositório com o comando: git clone https://github.com/RubenFilipe07/gerenciador-de-tarefas.git
Para rodar o projeto Angular
  1. Certifique-se de ter o node.js instalado na sua máquina, caso não tenha, baixe aqui: nodejs.org
  2. Caso o Angular CLI não estiver instalado, você pode instalá-lo usando o seguinte comando:
  3. npm install -g @angular/cli
  4. Dentro do projeto digite npm i no terminal para baixar as dependências do projeto
  5. Digite ng serve para iniciar o servidor e o acesse pelo link: http://localhost:4200/
Para rodar o projeto Spring
  1. Com um servidor postgresql rodando em sua máquina, veja as configurações de conexão com o banco de dados em src/main/resources/application.properties para realizar a conexão de acordo com suas credenciais locais. Valores utilizados
  2. spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true spring.datasource.url= jdbc:postgresql://localhost:5432/gerenciadorTarefas spring.datasource.username=postgres spring.datasource.password=123 spring.jpa.hibernate.ddl-auto=update spring.mvc.pathmatch.matching-strategy=ant-path-matcher api.security.token.secret=${JWT_SECRET_SEC_TOKEN}
  3. Crie um banco com o nome criado na instrução anterior
  4. Crie uma variável de ambiente para JWT_SECRET_SEC_TOKEN
  5. Inicie um servidor local do projeto com /mvnw spring-boot:run
  6. Ou utilize sua IDE de preferência
  7. Feito isso, a aplicação irá rodar em: http://localhost:8080/

Links

Links (Localhost)

Endpoints

Alguns endpoints exigem autenticação por JWT, são eles: GET "/api/tarefas" e GET "/api/usuarios". POST "/api/tarefas" necessita de um 'role' (função/papel atribuido) de ADMIN ou USER.
Para acessá-los, é preciso utilizar na requisição o header: 'Authorization': ${token}}

Key: Authorization
Value: ${token gerado ao fazer login}
Tal como na imagem abaixo:

image

Visualize com:

Tarefas

  • GET /api/tarefas: Obtém a lista de tarefas.
  • GET /api/tarefas/{id}: Obtém os detalhes de uma tarefa específica.
  • POST /api/tarefas: Cria uma nova tarefa.
  • DELETE /api/tarefas/{id}: Exclui uma tarefa por ID.
  • PUT /api/tarefas/{id}: Atualiza uma tarefa existente por ID.
  • PUT /api/tarefas/{id}/concluida: Marca uma tarefa como concluída.

Filtrar Tarefas

  • GET /api/tarefas/filtro?: Filtra as tarefas com base em parâmetros.
    • Parâmetros de consulta:
      • id: ID da tarefa (opcional).
      • titulo: Título da tarefa (opcional).
      • descricao: Descrição da tarefa (opcional).
      • situacao: Situação da tarefa (opcional).
      • responsavel: Responsável pela tarefa (opcional).

Usuários

  • GET /api/cadastro: Obtém a lista de usuários.
  • POST /api/cadastro: Cria um novo usuário.
  • GET /api/cadastro/{id}: Obtém os detalhes de um usuário específico.
  • PUT /api/cadastro/{id}: Atualiza um usuário por ID.
  • DELETE /api/cadastro/{id}: Exclui um usuário por ID.

Autenticação

  • POST /auth/login: Realiza o login do usuário e recebe o JWT Token.
  • POST /auth/cadastro: Cria um novo cadastro de usuário.

Itens feitos

  • Front-end com Angular (v16.2.0)
  • Back-end Java 11 e Spring Boot (Java 11, Spring 2.7.1)
  • Endpoints REST implementados
  • Autenticação JWT implementada
  • Banco de dados PostgreSQL e JPA utilizados
  • Testes unitários com JUnit 5 e Mockito para classes de serviço
  • Swagger UI implementado
  • Hospedagem Back-end e banco de dados rodando no Railway.app e front-end no Firebase
  • Diferenciais:
    1. As senhas são devidamente criptografadas, garantindo a segurança das informações dos usuários
    2. Os endpoints críticos exigem autenticação por meio de JWT TOKEN, que é gerado quando um usuário faz login
    3. Para a estilização do front-end, foi utilizado o framework ng-zorro

Front-end






Back-end








Banco de dados


Hospedagem



Demonstração

Licensa

MIT