Sistema de vendas que funciona sem internet, só com a rede local de um roteador. Um notebook vira a central; vendedores usam o próprio celular pelo navegador e os caixas usam notebooks.
O que ele resolve:
- Nenhum móvel é vendido duas vezes. Quando o vendedor digita o número da etiqueta, o móvel fica reservado no nome dele na hora. Se outro vendedor tentar, aparece "Já reservado por Ana (pedido #12)".
- Sem fichas de papel. Nome, telefone e endereço de entrega ficam no sistema.
- Controle do caixa. Cada pagamento é registrado como dinheiro, Pix, cartão ou pagamento na entrega (pode dividir), com cálculo de troco e foto opcional do comprovante Pix.
- Romaneio de entrega em A4, agrupado por cidade e bairro, com a lista do que carregar no caminhão.
- Ligue o roteador e conecte o notebook central no Wi-Fi dele.
- Dê dois cliques em
iniciar.bat. Uma janela preta abre mostrando os endereços. Não feche essa janela. - Na primeira vez, o Windows pergunta se libera o Node.js no firewall: marque Redes privadas e permita.
- O navegador abre sozinho em
http://localhost:3000(se não abrir, digite esse endereço). Entre como Admin, PIN 1234. Troque o PIN em Equipe, cidades e tipos.
Para os celulares, abra Configurações → Acesso dos celulares e imprima a página com os QR codes (Wi-Fi e endereço do sistema). Cole na entrada do galpão.
Dica: no roteador, reserve um IP fixo para o notebook central (DHCP estático). Assim o endereço impresso no QR code não muda de um dia para o outro.
- Equipe, cidades e tipos: cadastre vendedores, caixas (cada um com PIN), as cidades atendidas na entrega e os tipos de móvel que faltarem (também dá para criar um tipo na hora, pela opção "+ Novo tipo…" no cadastro do móvel).
- Móveis e etiquetas: crie as etiquetas (ex.: 300) e imprima em A4 (24 por folha). Cole nos móveis.
- Cadastro rápido: com as etiquetas coladas, ande pelo galpão com o celular, digite o número, escolha o tipo e o preço. Ao salvar, ele já abre o próximo número com o mesmo tipo e preço preenchidos. Para vários iguais, use o cadastro em lote (ex.: do 001 ao 018, Cama, R$ 150).
- Em Configurações, informe a pasta do pendrive para backup (ex.:
E:\backup-bazar). - No Painel, a Previsão de faturamento mostra quanto entra se todos os móveis cadastrados forem vendidos pelo preço da etiqueta (e quanto disso já foi vendido). Etiquetas sem cadastro ainda não entram na conta.
- Vendedor: digita o número → Reservar → Continuar → dados do cliente → Finalizar. Fala para o cliente: "vai no caixa e diz o número 47".
- Caixa: digita 47 → escolhe a forma de pagamento → Confirmar. O comprovante sai na térmica de 58 mm.
- Ranking: na aba Ranking do celular, cada vendedor vê a classificação ao vivo (valor vendido e móveis), em que lugar está e quanto falta para alcançar o próximo. Só conta venda já paga no caixa; se o vendedor subir de posição, aparece um aviso na tela mesmo que ele esteja em outra aba.
- A reserva vale 20 minutos (configurável). Se o cliente demorar na fila e expirar, o caixa clica em Reativar: o sistema reserva de novo o que ainda estiver livre.
- Pagamento na entrega: o cliente paga ao entregador quando recebe o móvel. O caixa lança o valor no campo Na entrega (pode juntar com uma parte em Pix, por exemplo). O romaneio mostra em destaque COBRAR DO CLIENTE NA ENTREGA com o valor, e o comprovante do cliente avisa quanto ele vai pagar.
- Fechamento: aba Fechamento do caixa mostra dinheiro / Pix / cartão / na entrega de cada caixa. O valor "na entrega" não está na gaveta: é o que os entregadores vão cobrar.
Para imprimir o comprovante sem a janela de impressão aparecer toda vez, abra o Chrome do caixa com
--kiosk-printing e deixe a térmica como impressora padrão.
- Entregas: marque cada pedido entregue. Imprimir romaneio gera a folha A4 para o motorista. Nos pedidos com pagamento na entrega, o sistema pergunta se o entregador recebeu o valor antes de marcar; o painel mostra quanto ainda falta cobrar.
- Painel → Relatório de vendas (PDF) abre o relatório em A4 para entregar ao dono do bazar: total vendido, formas de pagamento, fechamento de cada caixa, desempenho de cada vendedor, vendas por tipo, a lista de pedidos e os móveis que sobraram. Clique em Salvar PDF / Imprimir e escolha Salvar como PDF em Destino.
- Painel → Planilha de vendas (Excel) exporta tudo.
- O banco fica em
data\bazar.db. A cada 3 minutos com mudanças é feito um backup emdata\backupse, se configurado, no pendrive (junto com as fotos dos comprovantes). - Se o notebook desligar, basta ligar de novo e rodar o
iniciar.bat: nada se perde. - Se a central parar por um erro inesperado, o
iniciar.batliga ela de novo sozinho em 3 segundos e os celulares se reconectam. O erro fica anotado emdata\erros.logpara ver depois. - Clicar dentro da janela preta não congela mais a central (o
iniciar.batdesliga o modo "Selecionar" do Windows nela). - Errar o PIN 5 vezes seguidas no mesmo aparelho faz esperar 30 segundos antes de tentar de novo.
- Para restaurar um backup: feche a central, copie o arquivo de backup por cima de
data\bazar.dbe apaguebazar.db-walebazar.db-shmse existirem.
- Node.js 22.13+ (usa o SQLite embutido
node:sqlite). Única dependência:qrcode. npm startliga a central;npm testroda os testes (inclui dois vendedores disputando o mesmo móvel).node server.js --porta 3100 --dados C:\outra\pastapara testar sem mexer nos dados reais.- Código:
src/vendas.js(reserva, pagamento, expiração),src/catalogo.js(móveis e cadastros),src/app.js(rotas HTTP),public/(telas).