CaraCore PDV

Sistema de Ponto de Venda — foco localhost e Windows Desktop

Privado Licença Proprietária Em Desenvolvimento Java 21 Spring Boot SQLite Bootstrap 5 HTMX ApexCharts Docker Windows Desktop
Repositório Privado

Este projeto possui código-fonte privado e é protegido por licença proprietária da Cara Core Informática. A documentação aqui tem caráter informativo sobre funcionalidades e arquitetura. Loja online: canal institucional de releases · Portal oficial: pdv.caracore.com.br.

Visão Geral

O que é o PDV?

O PDV (Ponto de Venda) é o sistema de caixa usado no balcão da loja: registrar produtos, aplicar descontos, receber pagamentos e emitir comprovantes. Escopo: foco localhost e Windows Desktop — instalador EXE para Windows; ao abrir, o servidor sobe em localhost:8080 e a interface abre no navegador embutido. O CaraCore PDV é preparado para a Reforma Tributária 2026–2033 (CBS e IBS), com PIX (QR Code e Split), modo contingência (SQLite local + SMS) quando a internet cai. Banco: apenas SQLite (./data/caracore-pdv.db), carga inicial automática (admin/admin) na primeira execução e Centro de Segurança e Backup.

Em resumo:

  • 🛒 Caixa completo: Vendas, clientes, estoque, relatórios
  • 📋 Fiscal: Motor preparado para CBS/IBS 2026–2033
  • 💳 PIX: QR Code, webhook, Split
  • 📶 Offline / contingência: Funciona sem internet
  • 🖥️ Foco localhost e Windows Desktop: EXE para Windows; sobe em localhost:8080 ao abrir; banco apenas SQLite; docker-compose.sqlite.yml para um container
  • 🔐 Centro de Segurança e Backup: Políticas, criptografia e gestão de backup/restore
  • 📋 Planos Free e Premium: Free — 100 vendas/mês, 10 SMS de recibo/mês; Premium — recuperação de senha por SMS, configuração de e-mail e relatório automático ao contador, suporte prioritário (RustDesk/AnyDesk, botão Ajuda). Liberação Premium somente após confirmação de pagamento e registro LGPD.

Arquitetura Técnica

Aplicação web em Java 21 e Spring Boot 2.7, com API REST, Thymeleaf, HTMX, Bootstrap 5 e ApexCharts. Escopo: foco localhost e Windows Desktop; banco apenas SQLite. Módulos: PDV (caixa), vendas, produtos, clientes, estoque, dashboard, relatórios (JasperReports), operadores e multi-loja. Perfil sqlite (padrão): banco em ./data/caracore-pdv.db; Electron (EXE) inicia servidor local e abre em http://localhost:8080. Docker: docker-compose -f docker/docker-compose.sqlite.yml up -d. Modo contingência: SQLite local + SMS via ADB.

Componentes principais:

  • Spring MVC / JPA: Controllers, serviços, repositórios
  • Thymeleaf + HTMX: Atualizações parciais sem recarregar
  • SQLite (banco único): Perfil sqlite padrão; modo contingência usa SQLite local
  • Spring Security: Perfis Administrador, Operador, Visitante
  • JasperReports: Relatórios PDF
  • Centro de Segurança e Backup: Políticas, criptografia de dados sensíveis, gestão de backup/restore (incl. auto-backup ao encerrar, cloud AES-256, USB via ADB no modo contingência)
  • App pdv-sms-enviar (Android): Envio de SMS na contingência; recepção de licença Premium por SMS (CC-LICENSE/CARACORE-KEY); ContentProvider para o PDV (hardware_id, licença); tela de status e Verificar Conexão USB.
  • Planos Free e Premium: PlanoLicencaService, configuracao_plano. Free: 100 vendas/mês, 10 SMS recibo; trava em PagamentoService e SmsService. Premium: recuperação de senha por SMS (RecuperacaoSenhaService, AdbSmsProvider, celular do operador); configuração de e-mail e contador (ConfiguracaoEmail); relatório automático ao contador (RelatorioContadorService, AutomacaoEmailContadorService, job diário, PDF/TXT); suporte prioritário (/suporte, SuporteController, RustDesk/AnyDesk, botão Ajuda no layout). Liberação Premium somente após confirmação de pagamento e registro LGPD.

Funcionalidades Principais

Motor Fiscal (CBS/IBS 2026–2033)

Para leigos: Cálculo de impostos conforme a Reforma Tributária; o sistema já considera as regras que entram em vigor nos próximos anos.

Técnico: Motor fiscal preparado para CBS e IBS, evolução gradual até 2033.

PIX e PIX Split

Para leigos: Pagamento por PIX com QR Code na tela; suporte a divisão de pagamento (Split) entre loja e intermediários.

Técnico: Geração de QR Code, webhook de confirmação, estrutura para Mercado Pago e PagSeguro.

Dashboard (ApexCharts)

Para leigos: Painel com vendas da semana, produtos mais vendidos, totais do dia e vendas recentes.

Técnico: API /dashboard/api/dados, gráficos ApexCharts, atualização via fetch.

Offline-First e Contingência

Para leigos: Se a internet cair, as vendas continuam em banco local e são enviadas quando voltar; em contingência, usa SQLite e avisa por SMS. O app Android no celular ainda recebe a ativação da Licença Premium por SMS e mostra se está ativa (verde) ou inativa (vermelho).

Técnico: Modo contingência: SQLite local + ADB/SMS. App pdv-sms-enviar (android-sms-enviar): envio de SMS via ADB; recepção de licença Premium por SMS (CC-LICENSE/CARACORE-KEY, filtro por número oficial); LicencaContentProvider (content://br.com.caracore.pdv.sms.licenca/licenca) com hardware_id, chave, valida, mes_ano para o PDV consultar via ADB; tela com status (Licença Gratuita/Inativa ou Licença Premium Ativa) e botão Verificar Conexão USB. Doc: android-sms-enviar/README.md.

Leitor de Código de Barras e Hotkeys

Para leigos: Leitura por leitor (F4) ou câmera (QuaggaJS); atalhos de teclado para agilizar o caixa.

Técnico: QuaggaJS, hotkeys configuráveis, integração com HTMX.

Relatórios PDF e Multi-Loja

Para leigos: Relatórios de vendas, estoque e performance em PDF; suporte a várias lojas com estoque por unidade.

Técnico: JasperReports; multi-loja com estoque independente; tratamento de erros e logging.

SQLite para Pequenos e Médios

Para leigos: O PDV usa apenas SQLite como banco — um único arquivo, sem servidor de banco separado. Ideal para um caixa, lojas e pequenas redes. Na primeira execução já cria o banco e carrega usuário admin/admin.

Técnico: Perfil sqlite (padrão); SqliteDataSourceConfig, SqliteSeedDataLoader, data/init-data-sqlite.sql; docker-compose -f docker/docker-compose.sqlite.yml up -d. Doc: doc/SQLITE_PEQUENOS_MEDIOS.md.

Centro de Segurança e Backup

Para leigos: Painel para definir políticas de segurança, criptografia de dados sensíveis e agendar backups. No modo contingência: backup automático ao fechar o sistema, envio para nuvem (criptografado) e cópia em USB via celular conectado.

Técnico: SqliteBackupService (checkpoint WAL, ./backups, retenção 7 dias; USB .gz via ADB); SqliteBackupCloudSyncService (JSON vendas do dia, AES-256-GCM, POST para servidor central). Doc: doc/SQLITE_LOCAL.md; portal docs/ (tecnologia.html#seguranca, imagem centro_de_seguranca_e_backup.png).

Planos Free e Premium

Para leigos: Free: até 100 vendas/mês e 10 SMS de recibo/mês; ideal para começar. Premium: recuperação de senha por SMS no celular do operador; configuração de e-mail com dados do contador e envio automático de relatório diário (PDF e TXT); suporte prioritário com acesso remoto (RustDesk/AnyDesk) e botão Ajuda no menu. Liberação Premium somente após confirmação de pagamento e registro LGPD.

Técnico: PlanoLicencaService, tabela configuracao_plano. Free: limitação em PagamentoService (LimiteVendasAtingidoException) e SmsService (recibo). Premium: RecuperacaoSenhaService + AdbSmsProvider; ConfiguracaoEmail (contadorNome, contadorEmail); RelatorioContadorService, AutomacaoEmailContadorService (cron, JasperReports relatorio_contador.jrxml); SuporteController (/suporte, suporte.rustdesk.id, suporte.anydesk.id). Validação online da licença Premium a cada 15 dias; se >15 dias sem internet, automações (e-mail, nuvem) ficam suspensas.

Stack Tecnológica

Backend

  • Java 21: Linguagem principal
  • Spring Boot 2.7: Framework web e injeção de dependências
  • JPA / Hibernate: ORM e repositórios
  • SQLite 3.51: Banco padrão (perfil sqlite); ./data/caracore-pdv.db; carga automática na 1ª execução
  • SQLite (contingência): Modo contingência (SMS, ADB) — também SQLite local
  • JasperReports 6.20: Relatórios PDF

Frontend

  • Bootstrap 5.3.2: Layout responsivo
  • Thymeleaf 3.x: Templates e fragments
  • HTMX 1.9: Atualizações dinâmicas sem recarregar
  • ApexCharts 3.44: Gráficos do dashboard
  • jQuery 3.x: DOM e plugins
  • QuaggaJS: Leitura de código de barras
  • Font Awesome 6.4: Ícones

Segurança e Testes

  • Spring Security 5.x: Autenticação e perfis (Admin, Operador, Visitante)
  • JUnit 5 + Mockito 5.11: Testes unitários
  • JaCoCo 0.8.10: Cobertura de código
  • Selenium 4.18 + Pytest: Testes de interface (Python)

Infraestrutura

  • Docker / Docker Compose: docker-compose.sqlite.yml (apenas app + SQLite); modo contingência quando necessário
  • Maven: Build e dependências
  • WAR: Empacotamento para deploy em servidor de aplicação

Como Funciona

Fluxo de Venda

1
Seleção de Vendedor

Operador escolhe o vendedor e inicia nova venda

2
Itens no Carrinho

Produtos por código, leitor ou busca; HTMX atualiza o carrinho

3
Pagamento

Dinheiro, cartão, PIX (QR Code / webhook)

4
Finalização

Venda salva em SQLite (modo contingência usa SQLite local); sync quando online

Camadas da Aplicação

Apresentação

Thymeleaf, Bootstrap 5, HTMX, ApexCharts, formulários e telas de PDV, dashboard, relatórios

API e Controllers

Controllers REST e MVC, endpoints para dashboard, PIX, cadastros; detecção de requisições HTMX

Negócio

Services: Venda, Pagamento, Produto, Cliente, Estoque, Dashboard, Outbox, Sync, Contingência

Dados

JPA/Hibernate, SQLite (banco único do projeto); modo contingência usa SQLite local; Repositories e migrações

Perfis de acesso: Administrador (configurações e usuários), Operador (caixa e operações do dia a dia), Visitante (apenas consultas).

Setup e Quick Start

Pré-requisitos

  • Java 21 (JDK)
  • Maven 3.6+ (ou use mvnw)
  • SQLite (embutido; sem servidor de banco separado)
  • Git

Executar

# Clonar (acesso mediante permissão)
git clone https://github.com/cara-core/caracore-pdv
cd caracore-pdv

# Rodar com Maven (perfil sqlite é o padrão; carga admin/admin na 1ª vez)
.\mvnw spring-boot:run

# Perfil sqlite é o padrão (banco único)
.\mvnw spring-boot:run -Dspring-boot.run.profiles=sqlite

# Modo contingência (SQLite local + SMS)
.\mvnw spring-boot:run -Dspring-boot.run.profiles=contingency
Docker Compose

Somente SQLite (recomendado para pequenos e médios):

docker-compose -f docker/docker-compose.sqlite.yml up -d

Um único container; na primeira subida a carga inicial (admin/admin e massa para testes Selenium) é aplicada automaticamente. Banco em /data/caracore-pdv.db (volume sqlite_data).

Modo contingência: docker-compose.contingency.yml quando necessário. Credenciais (ex.: admin/admin, caixa1/1234) em STATUS_ATUAL.md.

Testes Selenium: testes/STATUS_APLICACAO_E_CENARIOS.md e verificar-status-app.bat / verificar-status-app.sh.

Links e Documentação

  • Escopo: Foco localhost e Windows Desktop (EXE sobe em localhost:8080); banco apenas SQLite.
  • Loja online (vitrine e download): canal institucional de releases
  • Baixar EXE (Windows): loja: download
  • Portal oficial: pdv.caracore.com.br (economia, planos, demonstração, Wiki Fiscal, consultoria)
  • Tecnologia: matriz: tecnologia
  • Wiki Fiscal e Consultoria: matriz: wiki-fiscal · matriz: consultoria
  • Testes Selenium (Docker SQLite): testes/STATUS_APLICACAO_E_CENARIOS.md; verificar-status-app.bat / verificar-status-app.sh
  • SQLite (pequenos e médios): doc/SQLITE_PEQUENOS_MEDIOS.md; docker-compose.sqlite.yml

Documentação técnica: STATUS_ATUAL.md, doc/OFFLINE_FIRST.md, doc/MODO_CONTINGENCIA.md, doc/SQLITE_LOCAL.md (backup, cloud AES-256, USB), android-sms-enviar/README.md.

Sobre o Projeto

CaraCore PDV é um produto proprietário da Cara Core Informática. Para demos, implantação ou consultoria, utilize os links da seção anterior ou o site principal da empresa.