Plataforma para diagnóstico, planejamento, acompanhamento e gestão de tráfego pago,
leads e resultados de marketing digital — voltada a pequenos negócios, profissionais
autônomos e agências.
O produto reúne, em um único painel:
| Camada | Tecnologia |
|---|---|
| Linguagem | PHP 8.2 (sem framework) |
| Banco | MySQL 8 (SQLite em testes) |
| Front | HTML5 + CSS3 + JavaScript vanilla |
| DI | Container próprio com autowiring |
PHPMailer (drivers log/smtp) |
|
| Logs | Logger próprio (text/json) com rotação |
| Cache | Arquivo, TTL por namespace |
| Fila | Banco (fila_jobs) com retry exponencial |
| 2FA | TOTP puro (RFC 6238) |
| Segurança | CSP com nonce, HMAC para webhooks, rate limit |
| Assets | app.css / app.js externos |
| Testes | PHPUnit 10 (Unit + Feature em SQLite in-memory) |
| CI | GitHub Actions (PHP 8.1 e 8.2) |
| Ambiente dev | Debian 12 + XAMPP |
| Ambiente prod | Hospedagem compartilhada ou VPS + PHP-FPM + MySQL |
pdo_mysql, mbstring, openssl, json, fileinfogit clone https://github.com/<seu-usuario>/gestao-trafego.git \
/opt/lampp/htdocs/gestao-trafego
cd /opt/lampp/htdocs/gestao-trafego
composer install
cp .env.example .env
# edite .env conforme necessário
mysql -u root -e "CREATE DATABASE gestao_trafego CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
php bin/console migrate
php bin/console seed
# acesse:
# http://localhost/gestao-trafego/
gestao-trafego/
├── app/
│ ├── Config/ # Configurações auxiliares (AdminConfig)
│ ├── Controllers/ # Controllers HTTP
│ ├── Database/ # Database (PDO singleton), Migrator, Seeder
│ ├── Helpers/ # Helpers globais (base_url, esc, auth_user, is_admin, …)
│ ├── Http/ # Request, Response, Route, Router, Exceptions
│ ├── Jobs/ # Jobs da fila (ProcessarWebhookJob)
│ ├── Kernel/ # Application (bootstrap) e Container
│ ├── Mail/ # Mailer, Message, Drivers (Log/Smtp)
│ ├── Middleware/ # Auth, Guest, Csrf, SecurityHeaders, Throttle, RequireTwoFactor
│ ├── Repositories/ # Repositórios (BaseRepository + concretos)
│ ├── Services/ # Serviços de domínio
│ ├── Support/ # Alerting, Backup, Cache, Csp, Csv, Logger, Onboarding, Queue, RateLimiter, Totp, WebhookSignature, …
│ └── Views/ # Templates PHP (layouts, partials, páginas)
├── bin/
│ ├── console # CLI (migrate, seed, queue:*, user:promote, alert:*, backup:verify, …)
│ └── backup.sh # Backup automatizado (mysqldump + tar)
├── config/ # app, auth, cache, container, database, import, logging, mail, queue, security, webhooks
├── database/
│ ├── migrations/ # Pares nome.sql / nome.down.sql
│ └── seeders/ # Seeders idempotentes
├── docs/ # Documentação (este diretório)
├── public/
│ ├── assets/ # CSS/JS externos
│ ├── .htaccess
│ └── index.php # Front controller
├── routes/
│ └── web.php # Definição de rotas
├── storage/ # Cache, uploads, imports, rate-limit, queue, backups
├── logs/ # app.log (ou app.jsonl), email.log, backup.log
├── tests/
│ ├── Unit/ # Testes unitários
│ ├── Feature/ # Testes de feature (Router + SQLite)
│ └── Support/ # TestCase, HttpClient
├── .env.example
├── .gitignore
├── .editorconfig
├── composer.json
├── phpunit.xml
├── CHANGELOG.md
└── README.md
php bin/console migrate # Aplica migrations pendentes
php bin/console rollback [N] # Reverte N batches (padrão 1)
php bin/console status # Estado de cada migration
php bin/console fresh --force # Apaga tabelas e reaplica
php bin/console seed [nome] # Executa seeders
php bin/console cache:clear # Limpa todo o cache
php bin/console cleanup # Rate-limit + cache expirados
php bin/console audit:prune [N] # Remove auditoria antiga (padrão 365 dias)
php bin/console user:promote <email> # Promove usuário a admin
php bin/console queue:work [fila] # Worker contínuo
php bin/console queue:once [fila] # Processa um lote
php bin/console queue:status # Status da fila
php bin/console queue:prune [N] # Remove jobs antigos (padrão 7 dias)
php bin/console backup:verify # Verifica integridade do último backup
php bin/console alert:test # Dispara alerta de teste
php bin/console alert:list # Lista alertas enviados
Todas em .env (nunca versionado). .env.example é o modelo.
| Grupo | Exemplos |
|---|---|
| App | APP_NAME, APP_ENV, APP_DEBUG, APP_TIMEZONE, URL_BASE, URL_PATH |
| Banco | DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD |
| Sessão | SESSION_NAME, SESSION_LIFETIME |
MAIL_DRIVER (log/smtp), MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_ENCRYPTION, MAIL_FROM_ADDRESS, MAIL_FROM_NAME, MAIL_LOG_PATH |
|
| Logs | LOG_PATH, LOG_LEVEL, LOG_FORMAT (text/json), LOG_JSON_PATH |
| Cache | CACHE_ENABLED, CACHE_DRIVER, CACHE_PATH, CACHE_PREFIX |
| Rate limit | RATE_LIMIT_PATH |
| Backup | BACKUP_PATH, BACKUP_KEEP_DAYS |
| Importação | IMPORT_MAX_BYTES, IMPORT_MAX_ROWS |
| Fila | QUEUE_DRIVER, QUEUE_BATCH, QUEUE_SLEEP, QUEUE_RESERVE_TIMEOUT, QUEUE_PRUNE_DAYS |
| Webhooks | WEBHOOK_GOOGLE_SECRET, WEBHOOK_META_SECRET, WEBHOOK_META_VERIFY_TOKEN, WEBHOOK_ALLOW_UNSIGNED, WEBHOOK_TTL_DIAS |
| Admin/Alertas | ADMIN_EMAILS, ADMIN_USER_IDS, ALERT_DEDUP_HOURS, ALERT_DISK_MB, ALERT_500_LIMIT, ALERT_500_COOLDOWN |
| Segurança | CSP_STRICT (implícito por APP_ENV=production) |
MAIL_DRIVER=log — mensagens gravadas em logs/email.log. Ideal em desenvolvimento.MAIL_DRIVER=smtp — envio real via PHPMailer.LOG_FORMAT=text — legível em dev.LOG_FORMAT=json — logs/app.jsonl, pronto para ELK/Loki/Grafana.| Documento | Para quem |
|---|---|
| docs/ARQUITETURA.md | Engenheiros — fluxo de request, camadas, container |
| docs/MODELO-DOMINIO.md | Engenheiros — entidades, relacionamentos |
| docs/BANCO-DE-DADOS.md | Engenheiros — schema, índices, migrations |
| docs/API-INTERNA.md | Engenheiros — rotas e contratos |
| docs/REGRAS-DO-PRODUTO.md | Produto / engenharia — regras de negócio |
| docs/DICIONARIO-METRICAS.md | Todos — o que cada métrica significa |
| docs/GUIA-GESTOR-TRAFEGO.md | Usuário final — manual prático |
| docs/GLOSSARIO.md | Todos — termos técnicos e de negócio |
| docs/DEPLOY.md | DevOps — deploy em produção |
| docs/OPERACAO.md | Operação — runbook |
| docs/SEGURANCA.md | Engenharia / segurança — medidas implementadas |
| docs/WEBHOOKS.md | Engenharia — recepção de eventos externos |
| docs/TESTES.md | Engenharia — como testar |
| docs/SMOKE-TEST.md | QA — checklist ponta a ponta |
| docs/ONBOARDING.md | Produto — jornada do usuário novo |
| docs/FEEDBACK.md | Produto — triagem de feedbacks |
| docs/ROADMAP.md | Todos — o que vem por aí |
| CHANGELOG.md | Todos — histórico de mudanças |
| CONTEXTO_PROJETO.md | Engenharia — decisões arquiteturais |
main, develop, feature/*, hotfix/*, release/*declare(strict_types=1) em todos os arquivosApp\ → app/)<style nonce="<?= esc(csp_nonce()) ?>">)exit()/die()Proprietário. Todos os direitos reservados.