Este é o segundo trabalho prático para a disciplina de Desenvolvimento Web III do Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - Campus Votuporanga. O objetivo é implementar um sistema Cliente-Servidor utilizando a arquitetura aprendida em sala de aula.
- Aluno: Dimas Ferreira
- Aluno: Matheus Sass
Este projeto consiste na implementação de um sistema ERP, onde o grupo deverá criar um conjunto de APIs e uma interface gráfica para realizar o CRUD referente a duas tabelas relacionadas no formato 1:N. A escolha do módulo fica a cargo do grupo, e é necessário seguir as instruções fornecidas.
Para cada tabela, é necessário implementar 5 operações de CRUD no formato de APIs:
GetAllXXX
: Retorna todos os campos da tabela, trazendo apenas os registros que não foram apagados (campo removido igual a false).GetXXXByID
: Retorna todos os campos da tabela de acordo com o ID informado, trazendo somente o registro não apagado (campo removido igual a false).InsertXXX
: Insere um novo registro na tabela.UpdateXXX
: Atualiza um registro na tabela de acordo com o ID informado.DeleteXXX
: Efetua um soft delete em um registro na tabela de acordo com o ID informado, passando o campo removido para true.
O sistema de cadastro de projetos e tarefas é uma aplicação destinada a gerenciar e organizar informações relacionadas a projetos, fornecendo uma estrutura eficiente para a criação, atualização e acompanhamento de tarefas específicas associadas a esses projetos.
-
Cadastro de Projetos:
- Os usuários podem criar novos projetos, fornecendo informações como nome do projeto, data de início e custo estimado.
-
Listagem de Projetos Ativos:
- Exibição de uma lista de projetos ativos, permitindo aos usuários visualizar rapidamente os projetos em andamento.
-
Detalhes do Projeto:
- Visualização detalhada de informações sobre um projeto específico, incluindo suas tarefas associadas.
-
Cadastro de Tarefas Específicas:
- Para cada projeto, os usuários podem adicionar tarefas específicas, atribuindo-lhes informações como descrição e status.
-
Atualização de Status de Tarefas:
- Os usuários podem atualizar o status das tarefas (por exemplo, "Em Andamento", "Concluída", "Pendente") para refletir o progresso real.
-
Autenticação e Autorização:
- Implementação de um sistema de autenticação seguro para garantir que apenas usuários autorizados possam acessar e manipular informações dos projetos.
-
Segurança com Token JWT:
- Utilização de tokens JWT para autenticação segura, permitindo que os usuários realizem operações autenticadas sem a necessidade de reautenticação frequente.
-
Remoção Lógica de Projetos:
- Implementação de remoção lógica (soft delete) de projetos, permitindo que projetos sejam marcados como removidos sem excluir permanentemente os dados.
-
Organização Eficiente:
- Facilita a organização de projetos e tarefas, proporcionando uma visão clara do estado atual de cada projeto.
-
Acompanhamento de Progresso:
- Permite o acompanhamento em tempo real do progresso das tarefas, facilitando a identificação de possíveis atrasos.
-
Histórico de Atividades:
- Mantém um histórico de atividades, incluindo criação, atualização e remoção de projetos e tarefas, para referência futura.
-
Segurança dos Dados:
- Implementa práticas seguras de autenticação e autorização para proteger os dados sensíveis dos usuários.
-
Usabilidade:
- Oferece uma interface de usuário intuitiva e amigável para garantir uma experiência agradável ao usuário.
O backend foi implementado em Spring Boot. Para garantir a segurança das APIs, foi utilizado o Spring Security em conjunto com autenticação JWT (JSON Web Token). Essa abordagem oferece uma camada adicional de proteção, garantindo que apenas usuários autenticados e autorizados tenham acesso às operações do sistema.
O frontend foi desenvolvido em JavaScript puro, proporcionando uma experiência de usuário interativa e eficiente. A biblioteca Bootstrap foi utilizada para facilitar o desenvolvimento do layout, garantindo um design responsivo e moderno. Cada API do backend possui uma função correspondente no frontend, e há um controle de sessão para garantir que apenas usuários logados tenham acesso ao sistema.
- Java
- Spring Boot
- Spring Security
- JWT (JSON Web Tokens)
- Banco de Dados - PostgreSQL
- Front-end - JavaScript e Boostrap