← Voltar ao índice
🛒 BWC PDV
PDV multi-loja para comércios — vendas (frente de caixa + código de barras + NFC-e), estoque, compras, RH e dashboards.
Next.js 16
React 19
Prisma
SQLite / libsql
Tailwind CSS 4
Recharts
TypeScript
Especificação do Produto
Sistema de PDV completo para comércios multi-loja — frente de caixa com leitura de código de barras, emissão de NFC-e, controle de estoque com alertas de mínimo, gestão de compras e fornecedores, módulo de RH e dashboards de vendas com gráficos.
Lojistas, operadores de caixa, gerentes de estoque e gestores de pequenos e médios comércios
Next.js 16 — porta 3051 → Caddy Reverse Proxy → pdv.bwccorp.com.br
- Lojas (multi-tenant) — cada loja tem slug único; dados isolados por storeId
- Produtos & Categorias — cadastro com código de barras, SKU, NCM, CFOP, preço de custo/venda, estoque mínimo
- Vendas (frente de caixa) — itens, pagamento (CASH/CARD/PIX), desconto, status fiscal NFC-e (NONE/PENDING/ISSUED/ERROR)
- Compras — ordem de compra com fornecedor, itens, total calculado; workflow DRAFT→RECEIVED
- Estoque — ajuste manual de quantidade com registro de movimentação (ADJUST/SALE/PURCHASE); alertas de mínimo
- Fornecedores — CNPJ, telefone, e-mail; vinculados às compras
- RH (Funcionários) — CPF, cargo, data de admissão, salário, telefone, ativo/inativo
- Dashboard — vendas do dia, ticket médio, contagem de vendas, produtos abaixo do estoque mínimo, gráfico de 7 dias, top 5 produtos por faturamento
Store, User, Category, Product, Supplier, Purchase, PurchaseItem, Sale, SaleItem, StockMovement, Employee
Endpoints principais da API
Lojas — /api/stores
GET/api/stores
Lista todas as lojas ativas.
POST/api/stores
Cria nova loja. Body: { name, cnpj?, slug }.
Produtos — /api/products
GET/api/products?storeId=
Lista produtos da loja com categorias. Suporta filtro por storeId.
POST/api/products
Cadastra produto. Body: { storeId, name, barcode?, sku?, categoryId?, costPrice, salePrice, unit, stockQty, minStock, ncm?, cfop? }
GET/api/products/:id
Detalhe do produto com movimentações de estoque e itens de venda.
PUT/api/products/:id
Atualiza produto (todos os campos editáveis).
DELETE/api/products/:id
Remove produto (soft ou hard delete).
POST/api/products/:id/adjust
Ajuste manual de estoque. Body: { qty, reason? }. Registra StockMovement tipo ADJUST.
Categorias — /api/categories
GET/api/categories?storeId=
Lista categorias da loja.
POST/api/categories
Cria categoria. Body: { storeId, name }.
Vendas — /api/sales
GET/api/sales?storeId=
Lista vendas da loja com itens e produtos. Ordena por data decrescente.
POST/api/sales
Registra venda (frente de caixa). Body: { storeId, userId?, customerName?, customerDoc?, paymentMethod?, discount?, items: [{ productId, qty, unitPrice, discount? }] }. Deduz estoque automaticamente e registra StockMovement SALE.
Compras — /api/purchases
GET/api/purchases?storeId=
Lista ordens de compra com fornecedor e itens.
POST/api/purchases
Cria ordem de compra. Body: { storeId, supplierId?, items: [{ productId, qty, unitCost }] }. Gera número NF-XXXXXX sequencial.
PATCH/api/purchases/:id
Atualiza status da compra (ex: DRAFT → RECEIVED). Ao receber, incrementa estoque e registra StockMovement PURCHASE.
Fornecedores — /api/suppliers
GET/api/suppliers?storeId=
Lista fornecedores da loja.
POST/api/suppliers
Cadastra fornecedor. Body: { storeId, name, cnpj?, phone?, email? }.
RH — /api/employees
GET/api/employees?storeId=
Lista funcionários ativos da loja ordenados por nome.
POST/api/employees
Cadastra funcionário. Body: { storeId, name, cpf?, role?, admissionDate?, salary?, phone? }.
PUT/api/employees/:id
Atualiza dados do funcionário.
DELETE/api/employees/:id
Desativa funcionário (soft delete — active: false).
Dashboard — /api/dashboard
GET/api/dashboard?storeId=
Métricas consolidadas: salesToday, salesCount, avgTicket, lowStockCount, chartData (7 dias), topProducts (top 5 por faturamento).
Seed — /api/seed
POST/api/seed
Popula banco com dados iniciais de demonstração (loja, categorias, produtos, fornecedores, funcionários).
Arquitetura de Deploy
bwc-pdv (Next.js 16 — porta 3051)
└─ SQLite / libsql (adapter Prisma)
↑
Caddy Reverse Proxy → pdv.bwccorp.com.br (HTTPS)
↑
pdv.bwccorp.com.br
Gerado automaticamente — BlackCat Corp • Voltar ao índice