O NPI Split é uma plataforma de gestão inteligente de estoque e rateio de custos desenvolvida para o ecossistema do Núcleo de Práticas de Informática (NPI) na UniFil.
O sistema resolve problemas de logística e transparência financeira em compras coletivas (a famosa "vaquinha" do laboratório). Ele permite que os usuários cadastrem produtos comprados, controlem o consumo individual e automatizem o cálculo de divisão de preços (rateio). Com geração de relatórios e monitoramento de status de pagamento, o projeto garante que a convivência seja organizada, justa e livre de inadimplência.
O sistema possui dois níveis de acesso (Aluno e Administrador), oferecendo:
- Controle de Compras: Registro de entrada de produtos, valores pagos e responsáveis pela compra.
- Controle de Consumo: Rastreamento exato do que cada usuário consumiu.
- Rateio Automatizado: Cálculo inteligente e automático de quanto cada usuário deve, baseado no seu consumo e no valor dos produtos.
- Autenticação Integrada: Login via Google SSO (exclusivo para e-mails acadêmicos
@edu). - Gestão de Dívidas: Acompanhamento de pagamentos integrados com chaves PIX.
- Relatórios em PDF: Geração de relatórios detalhados de produtos, usuários, dívidas e rateio (exclusivo para Administradores).
- Backend: PHP / Laravel
- Frontend: JavaScript, HTML, CSS, Blade Templates
- Banco de Dados: PostgreSQL
- Modelagem: Diagramas UML (PlantUML) e Mermaid
A arquitetura foi desenhada para separar claramente o que é comprado do que é consumido, garantindo relatórios precisos. As principais tabelas incluem:
USUARIOeACESSO(Gestão de perfis e níveis de privilégio)PRODUTO(Estoque de entrada/compras)PRODUTO_CONS(Registro de saída/consumo)
---
title: DIAGRAMA DE ENTIDADE RELACIONAMENTO (NPI-SPLIT)
---
erDiagram
ACESSO ||--o{ USUARIO : define_permissao
ACESSO {
int id_acesso PK
varchar tipo_acesso "1: Admin | 2: Aluno"
}
USUARIO ||--o{ PRODUTO : cadastra_compra
USUARIO ||--o{ PRODUTO_CONSUMIDO : registra_consumo
PRODUTO ||--o{ PRODUTO_CONSUMIDO : contem
USUARIO {
int id_usuario PK
varchar nome
varchar email "@edu para alunos"
varchar matricula
varchar senha "Opcional (Apenas ADM / fallback)"
varchar google_id "ID do Google SSO para Alunos"
varchar status "Ativo / Banido"
varchar pix "Chave para recebimento"
int fk_acesso_id_acesso FK
}
PRODUTO {
int id_produto PK
varchar descricao
decimal preco
int quantidade
int fk_usuario_id_usuario FK "Quem comprou"
}
PRODUTO_CONSUMIDO {
int id_produto_cons PK
int quantidade
boolean pago
int fk_usuario_id_usuario FK "Quem consumiu"
int fk_produto_id_produto FK
}
-
Clone o repositório:
git clone https://github.com/Korzre/npi-split.git
-
Instale as dependências do PHP:
composer install -
Instale as dependências do frontend:
npm install && npm run dev -
Configure o arquivo .env com suas credenciais do PostgreSQL e chaves de API do Google.
-
Rode as migrations para criar o banco de dados:
php artisan migrate -
Inicie o servidor local:
php artisan serve
