Skip to content

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

210 Commits

Folders and files

Repository files navigation

🛠️ categorizeMaker

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.


🚀 Tecnologias

Java Spring Boot MySQL Flyway JavaScript OpenPDF

  • 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.

⚙️ Pré-requisitos

  • 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).

🔧 Passo a Passo para Execução Local

1. Clonar o projeto

git clone [https://github.com/joaoferraz4986-dot/categorizeMaker.git](https://github.com/joaoferraz4986-dot/categorizeMaker.git)
cd categorizeMaker

2. Inicializar o Banco de Dados

  1. Abra o XAMPP Control Panel e inicialize o serviço do MySQL.
  2. 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_item e evento) e os campos de imagem e snapshot do inventário.

3. Configurar Credenciais

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

4. Compilar e Iniciar a Aplicação

  • 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:run

5. Acesso no Navegador

A 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:

  1. Acesse a tela de Cadastro e registre um novo usuário (por padrão, recebe a permissão PROFESSOR).
  2. Faça Login para emitir o token JWT (armazenado automaticamente no localStorage).
  3. Acesse o Inventário (/lab.html) para cadastrar, editar, buscar e remover insumos.

🏛️ Arquitetura do Sistema

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

📡 Visão Geral dos Endpoints REST

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

📌 Status do Desenvolvimento (Roadmap)

  • 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.

📄 Licença

Distribuído sob a licença MIT. Consulte LICENSE para mais informações.

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages