Sistema full-stack para controle de materiais e reagentes em laboratórios.
Sobre | Funcionalidades | Demonstração visual | Tecnologias | Como executar
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.
- 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.
Fluxos principais do Omini em uso.
| Painel e alertas | Cadastro de produto |
|---|---|
![]() |
![]() |
| Retirada de produto | Relatórios |
|---|---|
![]() |
![]() |
| 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 |
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.
- Java 21
- Maven 3.9+
- Node.js 20+
- npm
- Docker e Docker Compose
git clone https://github.com/LucasMGcode/Omini.git
cd Ominidocker compose up -dO 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.
mvn spring-boot:runSe precisar popular uma base mínima adicional para testes locais, execute com:
mvn spring-boot:run -Dspring-boot.run.arguments=--omini.test-data.enabled=trueEssa 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
cd front
npm ci --legacy-peer-deps
npm run devFrontend local: http://localhost:5173
O arquivo front/.env já define:
VITE_API_URL=http://localhost:8080/api| 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 |
Comandos recomendados antes de publicar alterações:
mvn testcd front
npm run buildA documentação histórica do projeto está na Wiki do repositório, com materiais de escopo, arquitetura e instalação.
Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.






