Sistema web completo para controle de inventário de mercadorias, com dois perfis de acesso e autenticação JWT.
Backend
- Java 17 + Spring Boot 3.2
- Spring Security com JWT (stateless)
- JPA / Hibernate + H2 (banco em memória)
- Maven 3.9
Frontend
- React 18 + React Router v6
- Chakra UI v2
- Axios
- Cadastrar produtos (nome, categoria, unidade, preço)
- Registrar entradas de estoque via lotes (quantidade, preço de compra, fornecedor, validade)
- Registrar retiradas de estoque com controle de saldo
- Visualizar tabela de produtos com status de estoque (Normal / Estoque Baixo / Esgotado)
- Visualizar relatório mensal de movimentações (entradas e saídas)
- Visualizar relatório mensal de lotes de compra com valores e preço unitário
- Filtrar por mês e ano
- Resumo com totais de entradas, saídas, lotes recebidos e valor gasto em compras
- Java 17+
- Maven 3.6+
- Node.js 18+
cd backend
mvn spring-boot:runAPI disponível em: http://localhost:8081
Console H2 disponível em: http://localhost:8081/h2-console
cd frontend
npm install
npm startAplicação disponível em: http://localhost:3000
| Usuário | Senha | Perfil |
|---|---|---|
| admin | admin123 | ADMINISTRADOR |
| gerente | gerente123 | GERENTE |
java-task/
├── backend/
│ └── src/main/java/com/estoque/
│ ├── controller/ # AuthController, ProdutoController, LoteController, etc.
│ ├── model/ # Usuario, Produto, Lote, Movimentacao
│ ├── repository/ # Interfaces JPA
│ ├── security/ # JWT, filtros, configuração Spring Security
│ └── dto/ # LoginRequest, LoginResponse
└── frontend/
└── src/
├── pages/ # Login, AdminDashboard, GerenteDashboard
├── components/ # Navbar
├── api.js # Axios com interceptor JWT
└── auth.js # Helpers de localStorage
| Método | Rota | Acesso |
|---|---|---|
| POST | /api/auth/login | Público |
| GET | /api/produtos | Autenticado |
| POST | /api/produtos | ADMINISTRADOR |
| POST | /api/lotes | ADMINISTRADOR |
| POST | /api/movimentacoes/retirada | ADMINISTRADOR |
| GET | /api/relatorios/movimentacoes?ano=&mes= | GERENTE |
| GET | /api/relatorios/lotes?ano=&mes= | GERENTE |