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
| Arquivo | Responsabilidade |
|---|---|
includes/auth.php | Login, sessões, perfis, guards, helpers de URL |
includes/layout.php | Sidebar, statBox, alerts, filterChips, toggle visualização |
includes/billing.php | Assinaturas, faturas, Pix, cartão, onboarding pós-pagamento |
includes/mercadopago.php | API MP, webhooks, normalização de pagamentos |
includes/notifications.php | Fila de notificações, schema, disparos |
barbearia/helpers.php | Regras de negócio da barbearia, slots, onboarding |
admin/helpers.php | Listagens admin, exclusão de barbearia, financeiro |
Fluxo de pagamento (proprietário)
- Onboarding passo 6 → escolhe Pix ou cartão
barbearia/pagamento.php— ambiente seguro (Brick MP ou QR Pix)barbearia/onboarding-aguardando.php— polling emstatus-pagamento.php- Webhook MP ou simulação local →
liberarAcessoAposPagamento() - 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/edatabase/bloqueadas no Apache - Uploads sem execução de PHP
- Webhook validado por assinatura (
x-signature) - Cron protegido por
CRON_TOKEN