Sistema web full-stack para gestão operacional, rastreabilidade de insumos e controle de projetos práticos do Laboratório Maker.
O categorizeMaker centraliza o controle de peças, ferramentas e componentes do espaço maker, substituindo controles manuais e planilhas por uma plataforma ágil com autenticação segura, controle de estados de materiais e geração automatizada de relatórios em PDF.
- Back-end: Java 21, Spring Boot 3 (Web, Security, Data JPA, Validation), Auth0 Java-JWT, MapStruct, Lombok, OpenPDF, Springdoc OpenAPI.
- Banco de Dados: MySQL com versionamento automatizado via Flyway Migrations.
- Front-end: Interface estática servida pelo Spring Boot, JavaScript Modular (ES Modules) com Service Layer centralizada e Fetch API nativa.
- JDK 21 configurado no
JAVA_HOME. - Git instalado.
- XAMPP (ou instância local do MySQL na porta
3306). - Maven (opcional — o projeto inclui o executável
./mvnw).
git clone [https://github.com/joaoferraz4986-dot/categorizeMaker.git](https://github.com/joaoferraz4986-dot/categorizeMaker.git)
cd categorizeMaker- Abra o XAMPP Control Panel e inicialize o serviço do MySQL.
- Acesse o phpMyAdmin (
http://localhost/phpmyadmin) ou o terminal do MySQL e crie o schema:
CREATE DATABASE categorize_db;O Flyway executará as migrations automaticamente no primeiro boot da aplicação, criando as tabelas (
item,usuario,projeto,projeto_itemeevento) e os campos de imagem e snapshot do inventário.
As configurações estão em src/main/resources/application.yaml. Por padrão, a aplicação conecta com o usuário root e senha em branco. Caso seu ambiente use credenciais diferentes, defina as variáveis de ambiente antes de rodar:
# Opcional (apenas se seu MySQL exigir senha):
export DB_USERNAME=seu_usuario
export DB_PASSWORD=sua_senha- Windows (PowerShell):
.\mvnw.cmd clean package
.\mvnw.cmd spring-boot:run- Windows (CMD):
mvnw.cmd clean package
mvnw.cmd spring-boot:run- Linux / macOS:
chmod +x mvnw
./mvnw clean package
./mvnw spring-boot:runA aplicação subirá na porta padrão 8080:
- Página Inicial:
http://localhost:8080/ - Login:
http://localhost:8080/login.html - Cadastro:
http://localhost:8080/cadastro.html - Inventário do Laboratório:
http://localhost:8080/lab.html - Projetos:
http://localhost:8080/projetos.html - Dashboard:
http://localhost:8080/dashboard.html
Como testar o fluxo básico:
- Acesse a tela de Cadastro e registre um novo usuário (por padrão, recebe a permissão
PROFESSOR).- Faça Login para emitir o token JWT (armazenado automaticamente no
localStorage).- Acesse o Inventário (
/lab.html) para cadastrar, editar, buscar e remover insumos.
src/
├── main/
│ ├── java/com/makernav/categorize/
│ │ ├── controller/ # Endpoints REST e redirecionamento de páginas
│ │ ├── dto/ # Request/Response records e mappers MapStruct
│ │ ├── infra/ # Filtro JWT, Exception Handlers e Repositories
│ │ ├── model/ # Entidades JPA (Item, Usuario, Projeto) e Enums
│ │ └── service/ # Regras de negócio, JWT e geração de PDFs
│ └── resources/
│ ├── application.yaml
│ ├── db/migration/ # Scripts SQL versionados do Flyway (V1 a V4)
│ └── static/ # Interface Web (HTML5, CSS3, JS Modular)
│ ├── js/
│ │ ├── services/ # api.js, itemService.js, authService.js
│ │ └── ... # Scripts controladores de interface
└── test/ # Testes de integração do contexto Spring
| Recurso | Método | Rota | Descrição |
|---|---|---|---|
| Auth | POST |
/authentication/registro/ |
Cadastro com senha criptografada em BCrypt |
| Auth | POST |
/authentication/login/ |
Autenticação e emissão de token JWT |
| Itens | GET |
/api/items |
Lista itens com filtros combinados por Specifications (name, type, category, status) |
| Itens | GET |
/api/items/{id} |
Busca detalhes de um item específico |
| Itens | POST |
/api/items |
Cadastra novo insumo com imagem Base64 |
| Itens | PUT |
/api/items/{id} |
Atualiza dados cadastrais de uma peça |
| Itens | DELETE |
/api/items/{id} |
Remove um item do inventário |
| Itens | GET |
/api/items/search?nome= |
Busca de itens por nome, retornando uma página |
| Itens | GET |
/api/items/export/pdf?name=&type=&category=&status= |
Exportação de relatório PDF com os mesmos filtros Specifications |
| Dashboard | GET |
/api/dashboard |
Métricas mensais, itens por estado, projetos ativos e eventos de projetos |
| Projetos | GET |
/projeto |
Listagem dos projetos registrados |
| Projetos | POST |
/projeto |
Registro de novos projetos |
| Projetos | DELETE |
/projeto/{id} |
Remoção de projetos |
- Autenticação stateless via Spring Security com tokens JWT (Auth0).
- Controle de acesso e limitação de tentativas de login (Rate Limiting via Caffeine).
- CRUD completo de itens com persistência de imagens em Base64.
- Exportação de relatórios tabulares em PDF via OpenPDF.
- Camada de Service Layer no front-end para isolar chamadas
fetch. - Conclusão dos endpoints de atualização (
PUT) e filtros por categoria para Projetos. - Mapeamento JPA e regras de negócio para a tabela associativa
projeto_item. - Conexão da interface de métricas (
dashboard.html) a rota agregadora de dados. - Padronização visual da interface (UI) e criação de padrões base para novas telas.
Distribuído sob a licença MIT. Consulte LICENSE para mais informações.