Wiki BarberHub

Arquitetura

Visão de camadas

┌─────────────────────────────────────────────────────────┐
│  Browser (HTML/CSS/JS)                                  │
│  panel.js · notifications.js · mp-card-brick.js         │
└──────────────────────────┬──────────────────────────────┘
                           │ HTTP
┌──────────────────────────▼──────────────────────────────┐
│  PHP Pages (admin/ barbearia/ barbeiro/ cliente/)         │
│  helpers.php · layout.php · auth.php                    │
└──────────────────────────┬──────────────────────────────┘
                           │ PDO
┌──────────────────────────▼──────────────────────────────┐
│  MySQL — barbearias, usuarios, agendamentos, billing    │
└─────────────────────────────────────────────────────────┘
         ▲                              ▲
         │ Webhook                      │ Cron HTTP/CLI
┌────────┴────────┐            ┌─────────┴──────────┐
│ Mercado Pago    │            │ processar_*        │
│ webhooks/       │            │ assinaturas,       │
│ mercadopago.php │            │ lembretes          │
└─────────────────┘            └────────────────────┘

Módulos centrais

ArquivoResponsabilidade
includes/auth.phpLogin, sessões, perfis, guards, helpers de URL
includes/layout.phpSidebar, statBox, alerts, filterChips, toggle visualização
includes/billing.phpAssinaturas, faturas, Pix, cartão, onboarding pós-pagamento
includes/mercadopago.phpAPI MP, webhooks, normalização de pagamentos
includes/notifications.phpFila de notificações, schema, disparos
barbearia/helpers.phpRegras de negócio da barbearia, slots, onboarding
admin/helpers.phpListagens admin, exclusão de barbearia, financeiro

Fluxo de pagamento (proprietário)

  1. Onboarding passo 6 → escolhe Pix ou cartão
  2. barbearia/pagamento.php — ambiente seguro (Brick MP ou QR Pix)
  3. barbearia/onboarding-aguardando.php — polling em status-pagamento.php
  4. Webhook MP ou simulação local → liberarAcessoAposPagamento()
  5. Dashboard liberado; assinatura ativa

Multi-tenant

Cada barbearia é um tenant lógico via barbearia_id. Usuários staff vinculam-se a uma barbearia; clientes podem agendar em várias barbearias (registro global com telefone/email).

Segurança

  • Senhas com password_hash / password_verify
  • Pastas config/ e database/ bloqueadas no Apache
  • Uploads sem execução de PHP
  • Webhook validado por assinatura (x-signature)
  • Cron protegido por CRON_TOKEN