Skip to content

LucasMGcode/Omini

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

192 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Título README

Sistema full-stack para controle de materiais e reagentes em laboratórios.

Sobre | Funcionalidades | Demonstração visual | Tecnologias | Como executar

Java 21 Spring Boot 3.2.5 React 19 TypeScript Vite SQL Server Flyway Docker

Sobre o projeto

O Omini é uma aplicação web criada para apoiar laboratórios acadêmicos e institucionais no controle de estoque de reagentes, materiais, equipamentos e fornecedores. O projeto nasceu na disciplina de Engenharia de Software (INF221) da Universidade Federal de Viçosa (UFV), em colaboração com equipes do Tecnopark de Viçosa - MG.

A proposta do sistema é reduzir perdas por vencimento, melhorar a rastreabilidade das retiradas, apoiar o planejamento de compras e centralizar informações que normalmente ficam espalhadas em planilhas ou controles manuais.

Funcionalidades

  • Painel de controle com listagem paginada, busca por nome/código/localização e cards de status do estoque.
  • Alertas operacionais para produtos sem estoque ou abaixo do estoque mínimo.
  • Cadastro de produtos com tipo, fornecedor, lote, fabricante, validade, localização, estoque mínimo e indicação de controle pela Polícia Federal.
  • Retirada de produtos com validação de quantidade disponível, motivo obrigatório e atualização do estoque.
  • Movimentações de estoque registradas no backend para entradas, saídas e ajustes.
  • Gestão de fornecedores com busca e cadastro de dados comerciais.
  • Gestão de usuários com perfis, status ativo e senha criptografada no backend.
  • Relatórios para movimentação, consumo e estoque crítico, incluindo tabela e visualização gráfica.
  • API documentada com Swagger UI e contrato OpenAPI.
  • Base inicial versionada por Flyway, com tipos de produto, fornecedores e carga extensa de itens laboratoriais.

Demonstração visual

Fluxos principais do Omini em uso.

Acesso e identidade

Login do Omini

Operação do estoque

Painel e alertas Cadastro de produto
Painel com busca, paginação e alertas de estoque Cadastro de produto laboratorial
Retirada de produto Relatórios
Retirada de produto com validações Relatórios de movimentação e consumo

Gestão e análise

Gestão de fornecedores e usuários

Tecnologias

Camada Tecnologias
Backend Java 21, Spring Boot 3.2.5, Spring Web, Spring Data JPA, Hibernate, Bean Validation, MapStruct, Lombok
Banco de dados SQL Server 2019 via Docker, Flyway
API Docs SpringDoc OpenAPI e Swagger UI
Frontend React 19, TypeScript, Vite 6, Tailwind CSS, shadcn/ui, Radix UI, React Query, Axios
UI e dados Recharts, lucide-react, date-fns
Testes JUnit 5, Mockito, Spring Boot Test
Build Maven e npm/Vite

Arquitetura em alto nível

front/                 Aplicação React + TypeScript
src/main/java/         API REST Spring Boot
src/main/resources/    Configuração e migrations Flyway
docker-compose.yml     SQL Server para desenvolvimento local

O frontend consome a API em http://localhost:8080/api por meio da variável VITE_API_URL. O backend expõe recursos REST para produtos, movimentações, fornecedores, usuários, tipos de produto e alertas.

Como executar

Pré-requisitos

  • Java 21
  • Maven 3.9+
  • Node.js 20+
  • npm
  • Docker e Docker Compose

1. Clone o repositório

git clone https://github.com/LucasMGcode/Omini.git
cd Omini

2. Suba o banco de dados

docker compose up -d

O docker-compose.yml disponibiliza o SQL Server em localhost:1433 com as credenciais esperadas por src/main/resources/application.properties.

No primeiro uso, crie o banco esperado pela aplicação:

docker exec omini_sqlserver_dev /opt/mssql-tools18/bin/sqlcmd \
  -S localhost \
  -U sa \
  -P 'yourStrong(!)Password' \
  -C \
  -Q "IF DB_ID('OminiDB') IS NULL CREATE DATABASE OminiDB;"

As tabelas e a carga inicial são aplicadas automaticamente pelo Flyway quando o backend inicia.

3. Execute o backend

mvn spring-boot:run

Se precisar popular uma base mínima adicional para testes locais, execute com:

mvn spring-boot:run -Dspring-boot.run.arguments=--omini.test-data.enabled=true

Essa carga é idempotente: ela cria somente registros de teste que ainda não existirem.

Serviços principais:

  • API: http://localhost:8080/api
  • Swagger UI: http://localhost:8080/swagger-ui.html
  • OpenAPI JSON: http://localhost:8080/v3/api-docs

4. Execute o frontend

cd front
npm ci --legacy-peer-deps
npm run dev

Frontend local: http://localhost:5173

O arquivo front/.env já define:

VITE_API_URL=http://localhost:8080/api

Rotas principais do frontend

Rota Tela
/ Login
/dashboard Painel de controle
/product-registration Cadastro de produto
/withdraw-product Retirada de produto
/supplier Fornecedores
/supplier-registration Cadastro de fornecedor
/users Usuários
/user-registration Cadastro de usuário
/reports Relatórios

Qualidade e validação

Comandos recomendados antes de publicar alterações:

mvn test
cd front
npm run build

Documentação

A documentação histórica do projeto está na Wiki do repositório, com materiais de escopo, arquitetura e instalação.

Licença

Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.

About

Sistema full-stack para gestão de estoque laboratorial, com controle de materiais e reagentes, alertas, movimentações, fornecedores, usuários e relatórios.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors