TrocoZero é um SaaS para gestão automática de troco via Pix no varejo físico brasileiro.
Ele calcula o troco em pagamentos em dinheiro, oferece a opção de troco via Pix e registra tudo para auditoria e relatórios.
MVP funcional e extensível, pronto para testes e validação com PDVs/POS.
- Registro de venda em dinheiro e cálculo automático de troco
- Troco via Pix (mock no MVP, pronto para integração real)
- Logs de auditoria imutáveis
- Relatório diário por loja
- Histórico de transações com paginação
- Múltiplas lojas e caixas
- API keys dinâmicas por loja
- Idempotência persistente
- Painel web operacional embutido
- Testes automatizados (unit + integração)
- CI/CD com GitHub Actions
- Backend: Node.js + TypeScript + Fastify
- Banco: PostgreSQL (ou modo memória)
- Validação: Zod
- Logs: Pino
- Testes: Vitest
- Painel: HTML/CSS/JS estático
src/domain: regras e entidades de negóciosrc/application: casos de usosrc/infrastructure: banco, repositórios, migraçõessrc/api: endpoints HTTPpublic: painel web
npm install --include=dev
set TROCOZERO_STORAGE=memory
npm run devAbra: http://127.0.0.1:3000
docker compose up -d
npm install --include=dev
set DATABASE_URL=postgres://trocozero:trocozero@localhost:5432/trocozero
set TROCOZERO_STORAGE=postgres
npm run migrate
npm run devPOST /stores— Criar lojaPOST /stores/{storeId}/registers— Criar caixaPOST /sales/cash— Registrar venda em dinheiroPOST /sales/{saleId}/pix-change— Solicitar troco via PixPOST /pix-transfers/{pixTransferId}/confirm— Confirmar PixGET /reports/daily?storeId=...&date=YYYY-MM-DD— Relatório diárioGET /transactions?storeId=...&startDate=...&endDate=...— Histórico de transaçõesPOST /admin/stores/{storeId}/api-keys— Criar API key por lojaGET /health— Healthcheck
O painel está embutido no servidor:
http://127.0.0.1:3000
O SDK oficial está em sdk/ e exporta o cliente TrocoZeroClient.
Para compilar:
npm install --include=dev
npm run build:sdkdocs/Manual_Treinamento_Lojas.md— Manual para operadores de caixadocs/Integracao_PDV.md— Guia de integração por tipo de PDVdocs/Pix_Real_Producao.md— Passo a passo para integração Pix real
Rotas exigem x-api-key (exceto /health e painel). Há duas opções:
- Chave estática via
TROCOZERO_API_KEY - Chaves dinâmicas por loja via
/admin/stores/:storeId/api-keys
Para operações admin, configure TROCOZERO_ADMIN_API_KEY e use header:
x-admin-key: SUA_CHAVE_ADMIN.
npm test # rodar testes
npm run test:watch # modo watch
npm run test:coverage # com cobertura- Pix real — Escolher PSP, obter credenciais, implementar adapter (ver
docs/Pix_Real_Producao.md) - Alta disponibilidade — Múltiplas instâncias, load balancer
- Backups — Estratégia de backup PostgreSQL
- Monitoramento — Métricas, alertas, SLA
Proprietária — Todos os direitos reservados.
Para licenciamento comercial, entre em contato com o autor.