FutDash e um sistema PHP/MySQL para gestao de banca, apostas esportivas, relatorios, painel do usuario, painel administrativo, blog, assinaturas premium e pagamentos via Mercado Pago.
O projeto foi pensado para rodar em hospedagens tradicionais com Apache/PHP/MySQL, como cPanel, Hostinger, VPS ou XAMPP em ambiente local.
- Funcionalidades
- Tecnologias
- Estrutura do projeto
- Requisitos
- Instalacao local com XAMPP
- Instalacao em hospedagem
- Configuracao privada
- Banco de dados
- Primeiro usuario admin
- Pagamentos
- Planos e cupons
- Rotinas cron
- Trocar nome e marca
- Seguranca
- Documentacao completa
- Cadastro, login, recuperacao de senha e verificacao de e-mail.
- Painel do usuario com dashboard, bancas, apostas, relatorios e perfil.
- Cadastro e controle de multiplas bancas.
- Registro de apostas, resultados, odds, stake, mercado, esporte, liga e casa.
- Relatorios de desempenho, ROI, lucro, drawdown, casas de aposta e curva de equity.
- Controle de transacoes de banca.
- Metas, estrategias, simuladores e ferramentas.
- Planos Free/Premium/Admin.
- Checkout premium via Mercado Pago.
- Webhook para ativacao automatica de premium apos pagamento aprovado.
- Cupons promocionais, incluindo cupons de desconto e dias VIP.
- Painel administrativo para usuarios, pagamentos, planos, cupons, blog, banners, contatos, logs e alertas.
- Blog com editor administrativo e upload de imagens.
- Formulario de contato.
- Paginas publicas, sitemap e suporte a idiomas
pt-breen.
- PHP
- MySQL/MariaDB
- Apache com
.htaccessemod_rewrite - HTML, CSS e JavaScript
- PDO para conexao com banco
- Mercado Pago para pagamentos
- TinyMCE para edicao de blog
O projeto nao usa Composer atualmente.
FutDash/
api/ Endpoints internos, premium, cron e relatorios
assets/ CSS, JS, imagens, fontes e favicon
Banco De Dados/ SQL consolidado de banco/migracoes
docs/ Documentacao tecnica e guias
includes/ Classes e helpers compartilhados
lang/ Traducoes pt-br e en
logs/ Logs de runtime
pages/ Paginas publicas e config central
painel/app/ Painel do usuario
painel/admin/ Painel administrativo
uploads/ Uploads gerados pelo sistema
webhooks/ Webhooks legados/compatibilidade
config.example.php Modelo do arquivo privado de configuracao
index.php Pagina inicial
README.md Este arquivo
Recomendado:
- PHP 8.0 ou superior.
- MySQL ou MariaDB.
- Apache com
mod_rewrite. - HTTPS em producao.
- Extensoes PHP:
pdo_mysqlcurlmbstringgdfileinfojsonopenssl
- Funcao
mail()configurada no servidor para envio de e-mails.
- Coloque o projeto em:
C:\xampp\htdocs\FutDash
-
Inicie Apache e MySQL no XAMPP.
-
Crie um banco no phpMyAdmin.
-
Importe o SQL disponivel em:
Banco De Dados/futdash_database.sql
- Crie o arquivo privado:
C:\xampp\htdocs\FutDash\futdash-config.php
- Configure o
BASE_URLlocal:
define('BASE_URL', 'http://localhost/FutDash/');- Acesse:
http://localhost/FutDash/
Em producao, envie os arquivos publicos do projeto para public_html e deixe o arquivo real de configuracao fora da pasta publica.
Exemplo recomendado:
/home/seu_usuario/
config/
futdash-config.php
public_html/
index.php
pages/
painel/
api/
includes/
assets/
uploads/
.htaccess
O arquivo futdash-config.php nao deve ficar acessivel pela web.
Se usar outro caminho, defina:
FUTDASH_CONFIG_PATH=/caminho/seguro/futdash-config.php
Use config.example.php como modelo e crie um arquivo privado chamado:
futdash-config.php
Exemplo completo:
<?php
define('ENVIRONMENT', 'production');
define('APP_DEBUG', false);
define('BASE_URL', 'https://seu-dominio.com/');
define('DB_HOST', 'localhost');
define('DB_NAME', 'nome_do_banco');
define('DB_USER', 'usuario_do_banco');
define('DB_PASS', 'senha_do_banco');
define('DB_CHARSET', 'utf8mb4');
define('TOOL_COOKIE_SECRET', 'gere-uma-string-longa-e-aleatoria');
define('FUTDASH_CRON_TOKEN', 'gere-um-token-hexadecimal-com-64-caracteres');
define('SMTP_HOST', 'smtp.seu-provedor.com');
define('SMTP_PORT', 587);
define('SMTP_USER', 'usuario_smtp');
define('SMTP_PASS', 'senha_smtp');
define('SMTP_FROM_EMAIL', 'noreply@seu-dominio.com');
define('SMTP_FROM_NAME', 'FutDash');
define('SMTP_SECURE', 'tls');
define('SMTP_AUTH', true);
define('CONTACT_DESTINATION_EMAIL', 'contato@seu-dominio.com');
define('MERCADOPAGO_ACCESS_TOKEN', 'SEU_ACCESS_TOKEN');
define('MERCADOPAGO_WEBHOOK_SECRET', 'SEU_WEBHOOK_SECRET');
define('MERCADOPAGO_WEBHOOK_TOKEN', 'UM_TOKEN_FORTE_PARA_URL_DO_WEBHOOK');
define('MERCADOPAGO_FORCE_SANDBOX', false);
define('MERCADOPAGO_SANDBOX_PAYER_EMAIL', '');
define('TINYMCE_API_KEY', 'no-api-key');Em desenvolvimento local, voce pode usar:
define('ENVIRONMENT', 'development');
define('APP_DEBUG', true);Em producao, use:
define('ENVIRONMENT', 'production');
define('APP_DEBUG', false);Os dados de conexao ficam no futdash-config.php:
define('DB_HOST', 'localhost');
define('DB_NAME', 'nome_do_banco');
define('DB_USER', 'usuario_do_banco');
define('DB_PASS', 'senha_do_banco');
define('DB_CHARSET', 'utf8mb4');Arquivo responsavel pela conexao:
includes/Database.php
SQL disponivel no projeto:
Banco De Dados/futdash_database.sql
Observacao importante: o arquivo SQL do repositorio consolida atualizacoes/migracoes existentes. Para uma instalacao totalmente nova, confirme se voce possui o schema base completo do FutDash com tabelas como usuarios, banca, apostas, plans, payments, promotions, blog_posts e contact_messages.
Depois de configurar o banco e criar um usuario pelo cadastro do site, transforme esse usuario em administrador:
UPDATE usuarios
SET tipo_conta = 'admin',
email_verificado = 1,
status = 'ativo'
WHERE email = 'seu-email@dominio.com';Acessos principais:
/painel/app/index.php
/painel/admin/index.php
As configuracoes ficam no futdash-config.php:
define('SMTP_FROM_EMAIL', 'noreply@seu-dominio.com');
define('SMTP_FROM_NAME', 'FutDash');
define('CONTACT_DESTINATION_EMAIL', 'contato@seu-dominio.com');Arquivos relacionados:
includes/EmailService.php
includes/EmailTexts.php
pages/enviar-contato.php
Atencao: atualmente o envio usa a funcao nativa mail() do PHP. As constantes SMTP existem na configuracao, mas o projeto nao faz autenticacao SMTP direta sem adaptacao.
O checkout premium usa Mercado Pago.
Configure no futdash-config.php:
define('MERCADOPAGO_ACCESS_TOKEN', 'SEU_ACCESS_TOKEN');
define('MERCADOPAGO_WEBHOOK_SECRET', 'SEU_WEBHOOK_SECRET');
define('MERCADOPAGO_WEBHOOK_TOKEN', 'UM_TOKEN_FORTE_PARA_URL_DO_WEBHOOK');
define('MERCADOPAGO_FORCE_SANDBOX', false);
define('MERCADOPAGO_SANDBOX_PAYER_EMAIL', '');Webhook recomendado:
https://seu-dominio.com/api/premium/webhook.php?token=UM_TOKEN_FORTE_PARA_URL_DO_WEBHOOK
Arquivos relacionados:
api/premium/checkout.php
api/premium/webhook.php
api/premium/payment-status.php
api/premium/payment-history.php
webhooks/mercadopago.php
Para testar em sandbox:
define('MERCADOPAGO_FORCE_SANDBOX', true);
define('MERCADOPAGO_SANDBOX_PAYER_EMAIL', 'comprador_teste@example.com');Planos e cupons sao gerenciados no painel administrativo:
/painel/admin/configuracoes.php
Tabelas principais:
planspaymentspromotionspromotion_usagespayment_status_history
Tipos de cupom suportados:
percent: desconto percentual.amount: desconto fixo.vip_days: libera dias premium.
Configure um token forte:
define('FUTDASH_CRON_TOKEN', 'gere-um-token-hexadecimal-com-64-caracteres');Rotinas disponiveis:
api/cron/expire-payments.php
api/cron/expire-premium.php
api/cron/process-account-deletions.php
api/cron/process-user-exports.php
Exemplo de cron via CLI:
*/5 * * * * /usr/bin/php /home/seu_usuario/public_html/api/cron/expire-payments.php >> /home/seu_usuario/futdash-cron.log 2>&1
0 * * * * /usr/bin/php /home/seu_usuario/public_html/api/cron/expire-premium.php >> /home/seu_usuario/futdash-cron.log 2>&1
*/10 * * * * /usr/bin/php /home/seu_usuario/public_html/api/cron/process-account-deletions.php 20 >> /home/seu_usuario/futdash-cron.log 2>&1
*/10 * * * * /usr/bin/php /home/seu_usuario/public_html/api/cron/process-user-exports.php 5 >> /home/seu_usuario/futdash-cron.log 2>&1Se chamar por HTTP:
curl -fsS -H "X-Cron-Token: SEU_TOKEN" https://seu-dominio.com/api/cron/expire-payments.phpO projeto ainda nao possui uma constante central de nome da aplicacao. Para trocar FutDash por outra marca, busque no projeto:
rg -n "FutDash"Pontos comuns:
lang/pt-br.phplang/en.phpincludes/header.phpincludes/footer.phpincludes/EmailService.phpincludes/EmailTexts.phppainel/components/sidebar.phppainel/components/sidebar-admin.phpsite.webmanifestrobots.txtassets/img/assets/favicon/
Boas praticas ja previstas no projeto:
- configuracao sensivel fora do
public_html; .gitignorebloqueando configs privadas, logs e dumps;- PDO com prepared statements;
- CSRF em rotas sensiveis;
- CSP e headers de seguranca;
- logs e alertas de sistema;
- verificacao de permissao para areas admin;
- token para cron via HTTP;
- webhook de pagamento com token e/ou assinatura.
Arquivos que nao devem ir para o GitHub:
futdash-config.php
config/futdash-config.php
.env
logs/
uploads/cache/
uploads/exports/
uploads/avatars/
*.sql com dados reais
*.zip
*.rar
error_log
O guia detalhado de instalacao e operacao fica em:
docs/GUIA_DE_UTILIZACAO.md
Ele explica com mais detalhes:
- onde colocar o
futdash-config.php; - banco de dados;
- Mercado Pago;
- e-mail;
- planos e cupons;
- cron;
- troca de marca;
- uploads e logs;
- checklist antes de publicar;
- erros comuns.
Este projeto esta licenciado sob a licenca MIT.
Isso permite que usuarios usem, copiem, modifiquem, distribuam e adaptem o projeto, inclusive em projetos proprios, desde que mantenham o aviso de copyright e a licenca.
Veja o arquivo LICENSE para mais detalhes.