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.
- 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
- Clone o repositório com o comando:
git clone https://github.com/RubenFilipe07/gerenciador-de-tarefas.git
- Certifique-se de ter o node.js instalado na sua máquina, caso não tenha, baixe aqui: nodejs.org
- Caso o Angular CLI não estiver instalado, você pode instalá-lo usando o seguinte comando:
- Dentro do projeto digite
npm i
no terminal para baixar as dependências do projeto - Digite
ng serve
para iniciar o servidor e o acesse pelo link:http://localhost:4200/
npm install -g @angular/cli
- 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 - Crie um banco com o nome criado na instrução anterior
- Crie uma variável de ambiente para JWT_SECRET_SEC_TOKEN
- Inicie um servidor local do projeto com
/mvnw spring-boot:run
- Ou utilize sua IDE de preferência
- Feito isso, a aplicação irá rodar em:
http://localhost:8080/
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}
- Docs -> http://localhost:8080/swagger-ui/index.html
- Aplicação -> http://localhost:4200/
- API -> http://localhost:8080
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:
- 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.
- 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).
- Parâmetros de consulta:
- 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.
- POST /auth/login: Realiza o login do usuário e recebe o JWT Token.
- POST /auth/cadastro: Cria um novo cadastro de usuário.
- 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:
- As senhas são devidamente criptografadas, garantindo a segurança das informações dos usuários
- Os endpoints críticos exigem autenticação por meio de JWT TOKEN, que é gerado quando um usuário faz login
- Para a estilização do front-end, foi utilizado o framework ng-zorro


