● Infra Active Phase 1 — Foundation Cactus V10 Account
🎰 iGaming Platform · Cloudflare-First · Serverless

ANA Gaming Platform Docs

Documentação central da plataforma de iGaming mais robusta do Brasil. Casino + Sportsbook + CRM + 12 Backoffices, tudo serverless na Cloudflare.

KV Namespaces
20
10 prod + 10 preview
D1 Databases
4
main, ledger, audit, affiliate
Queues
14
event bus + notifications
R2 Buckets
6
⚠️ Enable R2 in dashboard
Domains
2
cactus-v10.com · evian.bet
Events/day
400M+
Analytics Engine capacity
Backoffices
12
All with API + MCP
CRM Campaigns
59
Pre-configured · 8 journeys
⚠️
Ação necessária: R2 precisa ser habilitado manualmente em dash.cloudflare.com → R2 Object Storage → Enable. Após habilitar, rode o script de criação de buckets novamente. Também configure os registros DNS listados na aba DNS & Domains.
Infra criada com sucesso: 20 KV namespaces, 4 D1 databases, 14 Cloudflare Queues, e o projeto Pages igaming-docs.pages.dev estão ativos na conta Cactus V10.
🔐
Segurança: O API Token compartilhado deve ser revogado e regenerado em My Profile → API Tokens. Crie um novo token com scopes específicos por serviço.

🧠 Project Context — Bíblia do Projeto

Este documento centraliza TUDO sobre o projeto. Atualizado a cada sessão para evitar perda de contexto.

🎯 Missão

Construir a melhor plataforma de iGaming do mundo — casino + sportsbook — serverless na Cloudflare, multi-tenant, com capacidade para 400M+ eventos/dia, CRM próprio, 12 backoffices, sistema de afiliados completo, app mobile Flutter, e infraestrutura 100% automatizada.

🏢 Contas e Domínios

  • Cloudflare Account: Cactus V10 | Account ID: b4c299d68fe566dd2192234d220e474e
  • Domínio do sistema: cactus-v10.com (todos os subdomínios de infra aqui)
  • Primeira marca/bet: evian.bet (Status: pending — confirmar nameservers)
  • Docs Hub: docs-new-stack.cactus-v10.com → igaming-docs.pages.dev
  • Email operacional: nickolas.ribeiro@anagaming.com.br

🏗️ Stack Técnico Definido

  • Edge compute: Cloudflare Workers (todos os serviços)
  • Consistência forte: Durable Objects (Wallet, Session, Bonus, Tournament, Market, Chat)
  • Banco por usuário: D1 SQLite (append-only ledger de transações por player)
  • Analytics: Cloudflare Analytics Engine (400M+ rows/day, SQL queryable)
  • Config/Cache: Cloudflare KV (zero-deploy config changes)
  • Event bus: Cloudflare Queues (fan-out para CRM, fraud, pixel, bonus, BI)
  • Object storage: R2 (bronze layer, KYC docs, CSVs, backups)
  • Agregador casino: Cactus (jogos + pagamentos)
  • KYC: Serpro + Sumsub + Unico
  • Data bureau: Serasa + BigData Corp
  • Frontend: React/Next.js + 3 temas (Betano, Stake, 1win) + SDK @anagaming/sdk
  • Mobile: Flutter (iOS + Android) + PWA
  • Push notifications: FCM (Android/PWA) + APNs (iOS)
  • WebSocket: Durable Objects hibernation API (wallet, session, bonus, tournament, market)

🏪 Tenants Ativos / Previstos

  • evian.bet — Primeira marca, em setup. Domínio: evian.bet
  • bet7k — Segunda marca prevista
  • cassinopix — Terceira marca prevista

⚙️ 12 Backoffices Planejados

  • 1. operation.backoffice — Gestão operacional, configurações, aprovação de saques
  • 2. crm.backoffice — CRM, segmentação, campanhas, comunicações (substitui Smartico)
  • 3. betreport.backoffice — BI, relatórios, Analytics Engine dashboards
  • 4. affiliate.backoffice — Afiliados, RevShare, CPA, subafiliados
  • 5. risk.backoffice — Anti-fraude, AML, gestão de risco
  • 6. content.backoffice — CMS, banners, promoções, SEO
  • 7. payment.backoffice — Métodos de pagamento, providers, limites
  • 8. kyc.backoffice — KYC, verificações, documentos
  • 9. bonus.backoffice — Bônus engine, campanhas de bônus
  • 10. vip.backoffice — VIP, loyalty, fidelização
  • 11. tech.backoffice — Configurações técnicas, feature flags, monitoring
  • 12. support.backoffice — Suporte, tickets, chat ao vivo

📋 Decisões Arquiteturais Chave

  • Sem banco central de transações — cada player tem seu D1 SQLite (append-only ledger). Auto-create novo D1 quando próximo do limite.
  • Durable Object por wallet — single-writer consistency, sem locks de banco, sem double-spend.
  • Analytics Engine para eventos — 400M+ rows/day, não usar D1 para analytics.
  • KV para toda config de negócio — zero deploys para mudar regras de negócio.
  • Server-side pixel obrigatório — Conversion API Meta/Google/TikTok/Kwai/X para todos eventos P0-P2.
  • trace_id em todas as camadas — correlação total de request → DO → D1 → Queue → Consumer.
  • ms_elapsed pré-computado — evita JOINs custosos no Analytics Engine.
  • 62 clusters de players — atualizados em real-time (DO), hourly (KV), daily (Analytics Engine), weekly (R2 CSV).
  • WebSocket via DO hibernation — zero CPU idle, escala para milhões de conexões.
  • 3 layouts de frontend — Betano (classic), Stake (dark crypto), 1win (vibrant). Troca por KV sem deploy.

🚨 Pendências Críticas

  • 🔴 R2: Habilitar R2 em dash.cloudflare.com → R2 Object Storage
  • 🔴 DNS: Adicionar registros CNAME para todos os subdomínios (ver aba DNS)
  • 🔴 evian.bet: Confirmar nameservers no registrar — status "pending" na Cloudflare
  • 🟡 API Token: Revogar token atual e criar tokens específicos por serviço
  • 🟡 Workers: Fazer deploy dos Workers de API (scaffold gerado, pendente deploy)
  • 🟡 D1 Schema: Executar migrações SQL no igaming-platform-main
  • 🟡 KV Seed: Popular KV config com valores base por tenant (evian.bet)
  • 🟢 Wrangler: wrangler.toml gerado com todos os bindings na aba Wrangler Config

☁️ Cloudflare Infrastructure

Todos os recursos criados na conta Cactus V10. Account ID: b4c299d68fe566dd2192234d220e474e

🗄️ KV Namespaces (20 namespaces)
NameIDEnvPurpose
igaming-config69ad61bcdf404536bee6236086fcb9fdprodBusiness config, feature flags, tenant settings
igaming-sessions7763551443c3453eaffaea0e91331f60prodPlayer JWT sessions, rate limiting
igaming-cache777a7977ae9648bd81bb3be46d8012f0prodEdge cache (game catalog, odds, CMS content)
igaming-rate-limiter8d8f13f5f0db418c84d7d54515d29924prodRate limiting counters per IP/player
igaming-push-tokensdb537da837fd4459bfd6e2622b13b1e9prodFCM/APNs tokens per player (multi-device array)
igaming-player-clusters93eee5dd3b8c4440bb124ba5ff69c6b4prod62 cluster families per player (CRM segmentation)
igaming-i18nc90a8b1c08c7450290a5e8846a2b44f5prodi18n strings per tenant/language
igaming-game-catalog7fe720d47cea42e787adc783216698baprodGame metadata from Cactus aggregator
igaming-crm-campaigns8e1032388c834a6e9f23c62aa6006dc7prod59 pre-built CRM campaigns config
igaming-feature-flags2a813dce33194105855b856d70e6d768prodFeature flags per tenant
+ 10 preview namespaces (suffix -preview)
🗃️ D1 Databases (SQLite at Edge)
NameUUIDPurpose
igaming-platform-main17752182-7e11-41c8-9bdf-829cff32ce6fPlayers, accounts, KYC, tenant config tables
igaming-player-ledger-templateff57d8a4-0355-4baf-ad35-4f8dc9ad4c98Template for per-player D1 (cloned on register)
igaming-backoffice-audit5f9a0af4-390b-4650-a086-43455926102cAudit log for all backoffice operator actions
igaming-affiliate-main744abee1-ad50-4545-b18c-7abfb6c082a9Affiliates, deals, conversions, commissions
📨 Cloudflare Queues (Event Bus)
Queue NameQueue IDConsumer
igaming-events-main68aca5b6436a49eda3e2efee2849d7f0Fan-out router → all downstream queues
igaming-events-crmf52745dff1df4be8b249ade3c1b1cf80CRM engine → campaigns, segmentation
igaming-events-fraud23dda99da1cd433595b63c6538cb2e6eAnti-fraud engine → alerts, account flags
igaming-events-pixel324ac9f4650a41179c5a88210c6c161fPixel Consumer → Meta/Google/TikTok/Kwai/X
igaming-events-bonusf6ad22c37d744aa4a973b442e4d9b611Bonus Engine → auto-apply, wagering
igaming-events-bi19482400e64d455884d8253bfacf5308BI pipeline → Analytics Engine + R2
igaming-events-errors9461b13cff3a409ba6ca0c9c5ccf7664Error logger → R2 audit + alerts
igaming-events-dead-letter2ce7bfa88a0e445fb8d3090d3a34ea7dDead letter → retry + manual review
igaming-notifications-push29c3d976af794991975daec5ed862f10Push Worker → FCM/APNs
igaming-notifications-email5d33f4223889458db4c7ed8c845e48d2Email Worker → SendGrid/Mailgun
igaming-notifications-smscb71f86814474d97886e12d237584cc3SMS Worker → Twilio/Infobip
igaming-notifications-whatsapp58c93d2180ff4bc1a7c4e0de5366e6c1WhatsApp Worker → Meta BSP API
igaming-withdrawalsd4fb483ced9c4749bc04e262aa88655bWithdrawal processor → compliance + payment
igaming-kyc-jobs318ff665964042f397f40c5d7c0980ecKYC Worker → Serpro/Sumsub/Unico
🪣 R2 Buckets ⚠️ Enable R2 in Dashboard first
BucketStatusPurpose
igaming-bronze-eventsPending R2 EnableRaw event JSON (Bronze data layer), 90-day retention
igaming-kyc-documentsPending R2 EnableKYC documents (AES-256 encrypted), LGPD compliant
igaming-audit-archivePending R2 EnableBackoffice audit logs, immutable, 7-year retention
igaming-csv-exportsPending R2 EnableDaily player cluster CSVs, BI exports
igaming-media-assetsPending R2 EnableGame images, banners, CMS media (public CDN)
igaming-backupsPending R2 EnableD1 backups, KV snapshots, disaster recovery
📄 Cloudflare Pages
ProjectDomainPurpose
igaming-docsigaming-docs.pages.devThis documentation portal (docs-new-stack.cactus-v10.com)

🌐 DNS Records

Adicione manualmente estes registros no Cloudflare Dashboard → DNS para cada zona.

⚠️
O token atual não tem permissão de edição de DNS (Zone Edit). Para adicionar permissão: Dashboard → My Profile → API Tokens → Edit token → Add Zone:DNS:Edit permission. Ou adicione manualmente abaixo.

📌 cactus-v10.com (Zone ID: 40b0a2774b29f5567ab118921620a81f)

Type
Name
Target / Content
Proxy
CNAME
docs-new-stack
igaming-docs.pages.dev
☁️ ON
CNAME
api
igaming-api.workers.dev
☁️ ON
CNAME
auth
igaming-api.workers.dev
☁️ ON
CNAME
wallet
igaming-api.workers.dev
☁️ ON
CNAME
ws
igaming-api.workers.dev
☁️ ON
CNAME
backoffice
igaming-backoffice.pages.dev
☁️ ON
CNAME
affiliate
igaming-affiliate.workers.dev
☁️ ON
CNAME
crm
igaming-crm.workers.dev
☁️ ON

🎲 evian.bet (Zone ID: ca467ba3e8c79ea279dfc54e7040ddb2) ⚠️ Pending — confirm nameservers

Type
Name
Target / Content
Proxy
CNAME
evian.bet
igaming-frontend-evian.pages.dev
☁️ ON
CNAME
www
igaming-frontend-evian.pages.dev
☁️ ON
CNAME
api
igaming-api.workers.dev
☁️ ON
CNAME
ws
igaming-api.workers.dev
☁️ ON

📚 Architecture Documents

Todos os documentos da plataforma. Gerados automaticamente e sincronizados neste portal.

🏗️
Main Architecture
28 capítulos — Cloudflare stack, Durable Objects, multi-tenancy, wallet, bonus engine, VIP, gamification, CRM, KYC, mobile, SEO, affiliate system, frontend layouts, headless API
igaming-platform-architecture.docx28 chapters59KB
⚙️
12 Backoffices Architecture
14 capítulos — todos os 12 backoffices com features, REST API endpoints, MCP tools, logging coverage e universal standards
backoffices-architecture.docx14 chapters44KB
Events, Clusters & Categories
14 capítulos — 197 eventos (casino+sportsbook+app), 62 clusters de players, pixel mapping, WebSocket architecture, categorização completa
events-clusters-categories.docx14 chapters53KB
📣
CRM Campaigns & Push Notifications
14 capítulos — 59 campanhas pré-cadastradas em 8 jornadas, calendário sazonal com 33 eventos, 18 templates de push, arquitetura FCM/APNs completa
crm-campaigns-pushnotifications.docx14 chapters45KB

🗺️ Roadmap de Implementação

6 fases de implementação. Fase 1 em execução.

  • ✅ Fase 0 — Planejamento (Concluído)Arquitetura completa definida, 4 documentos gerados, infra Cloudflare provisionada (KV, D1, Queues, Pages)
  • ⚡ Fase 1 — Fundação (Em Execução)Multi-tenancy, Wallet DO, D1 per user, Event Bus Workers, Cactus casino integration, PIX deposit/withdrawal, Auth Worker, KV config seed para evian.bet
  • Fase 2 — Monetização (3 meses)Bonus Engine completo, Cashback cron, VIP básico, KYC Nível 0 e 1, Operation Backoffice v1
  • Fase 3 — Engajamento (2 meses)CRM.backoffice, Loyalty completo, Gamificação, Torneios, Communications Hub (email + SMS + WhatsApp)
  • Fase 4 — Analytics (2 meses)Bronze/Silver/Gold layers, betreport.backoffice, CSVs diários, Analytics Engine dashboards
  • Fase 5 — Expansão (2 meses)Multi-wallet crypto, KYC Nível 2 e 3, Mobile App Flutter, SEO avançado, MCP servers
  • Fase 6 — Escala (Contínuo)Performance tuning, novos tenants, novos países, ML/AI anti-fraude

🔧 Wrangler Configuration

Configuração completa do wrangler.toml com todos os bindings. Salve em cada Worker repo.

# wrangler.toml — iGaming Platform API Worker
name = "igaming-api"
main = "src/index.ts"
compatibility_date = "2025-01-01"
account_id = "b4c299d68fe566dd2192234d220e474e"

[vars]
ENVIRONMENT = "production"
TENANT_DEFAULT = "evian.bet"

[[kv_namespaces]]
binding = "CONFIG"
id = "69ad61bcdf404536bee6236086fcb9fd"
preview_id = "a7d8b7079ecc4c21978e5827d5b8bfaf"

[[kv_namespaces]]
binding = "SESSIONS"
id = "7763551443c3453eaffaea0e91331f60"
preview_id = "99eead41426b435b83e88a9ee6b1cbe1"

[[kv_namespaces]]
binding = "CACHE"
id = "777a7977ae9648bd81bb3be46d8012f0"
preview_id = "4195673486634c06b169e2cfe249b44e"

[[kv_namespaces]]
binding = "RATE_LIMITER"
id = "8d8f13f5f0db418c84d7d54515d29924"
preview_id = "b03cfda91a5f4641add7af32d5767990"

[[kv_namespaces]]
binding = "PUSH_TOKENS"
id = "db537da837fd4459bfd6e2622b13b1e9"
preview_id = "57cd931fdbc34b21be77ead996b66c74"

[[kv_namespaces]]
binding = "PLAYER_CLUSTERS"
id = "93eee5dd3b8c4440bb124ba5ff69c6b4"
preview_id = "832c464c0fca438eb1b2f5bdbebbf670"

[[kv_namespaces]]
binding = "I18N"
id = "c90a8b1c08c7450290a5e8846a2b44f5"
preview_id = "1df38e032e9e4e6497d7cf497bdb14a8"

[[kv_namespaces]]
binding = "GAME_CATALOG"
id = "7fe720d47cea42e787adc783216698ba"
preview_id = "7ee2933ea39f42198b1405c1d0577b54"

[[kv_namespaces]]
binding = "CRM_CAMPAIGNS"
id = "8e1032388c834a6e9f23c62aa6006dc7"
preview_id = "f206d8154b26486abb099ab14937c475"

[[kv_namespaces]]
binding = "FEATURE_FLAGS"
id = "2a813dce33194105855b856d70e6d768"
preview_id = "44305f983ee9473983f11e4690fbc1a4"

[[d1_databases]]
binding = "DB_MAIN"
database_name = "igaming-platform-main"
database_id = "17752182-7e11-41c8-9bdf-829cff32ce6f"

[[d1_databases]]
binding = "DB_AUDIT"
database_name = "igaming-backoffice-audit"
database_id = "5f9a0af4-390b-4650-a086-43455926102c"

[[d1_databases]]
binding = "DB_AFFILIATE"
database_name = "igaming-affiliate-main"
database_id = "744abee1-ad50-4545-b18c-7abfb6c082a9"

[[queues.producers]]
binding = "QUEUE_EVENTS"
queue = "igaming-events-main"

[[queues.producers]]
binding = "QUEUE_PUSH"
queue = "igaming-notifications-push"

[[queues.producers]]
binding = "QUEUE_EMAIL"
queue = "igaming-notifications-email"

[[queues.producers]]
binding = "QUEUE_SMS"
queue = "igaming-notifications-sms"

[[queues.producers]]
binding = "QUEUE_WHATSAPP"
queue = "igaming-notifications-whatsapp"

[[queues.producers]]
binding = "QUEUE_WITHDRAWALS"
queue = "igaming-withdrawals"

[[queues.producers]]
binding = "QUEUE_KYC"
queue = "igaming-kyc-jobs"

[[queues.consumers]]
queue = "igaming-events-main"
max_batch_size = 100
max_batch_timeout = 1
max_retries = 3
dead_letter_queue = "igaming-events-dead-letter"

[[durable_objects.bindings]]
name = "WALLET_DO"
class_name = "WalletDO"

[[durable_objects.bindings]]
name = "SESSION_DO"
class_name = "SessionDO"

[[durable_objects.bindings]]
name = "BONUS_DO"
class_name = "BonusDO"

[[durable_objects.bindings]]
name = "TOURNAMENT_DO"
class_name = "TournamentDO"

[[durable_objects.bindings]]
name = "MARKET_DO"
class_name = "MarketDO"

[[durable_objects.bindings]]
name = "CHAT_DO"
class_name = "ChatDO"

[[migrations]]
tag = "v1"
new_classes = ["WalletDO", "SessionDO", "BonusDO", "TournamentDO", "MarketDO", "ChatDO"]

[observability]
enabled = true
head_sampling_rate = 1
  

🔒 Security

🔐
API Token Rotation Required: The token shared in this session must be revoked immediately after setup. Go to dash.cloudflare.com → My Profile → API Tokens → Revoke.

Recommended Token Structure (one per service)

  • igaming-workers-deploy — Workers:Edit + Workers KV Storage:Edit + D1:Edit + Queues:Edit (for CI/CD)
  • igaming-dns-edit — Zone:DNS:Edit for cactus-v10.com + evian.bet (for DNS automation)
  • igaming-pages-deploy — Pages:Edit (for Pages deployments)
  • igaming-readonly — All:Read (for monitoring dashboards)

Platform Security Architecture

  • JWT access tokens: 15min expiry; refresh tokens: 30 days (HttpOnly cookie)
  • All KYC documents: AES-256 encrypted in R2, LGPD compliant
  • Player IP hashed SHA-256 before storage (LGPD)
  • Rate limiting: per-IP + per-player_id + per-tenant via KV
  • CORS: configured per tenant domain in KV (no hardcoded origins)
  • CSP headers: enforced at Worker edge
  • All admin endpoints require operator JWT + RBAC scope check
  • MCP servers inherit operator's RBAC scopes

💾 Backup & Disaster Recovery

Backup Strategy

  • D1 databases: Workers Cron exports daily SQLite snapshots to R2 igaming-backups/d1/{date}/
  • KV namespaces: Critical KV keys (config, campaigns) snapshotted daily to R2
  • Analytics Engine: Data is retained per Cloudflare's retention policy; raw events backed up to R2 bronze layer in real-time
  • R2 buckets: Cloudflare R2 has built-in 11-nines durability; cross-region replication configurable
  • Durable Objects: Built-in durability via Cloudflare's distributed storage (no action needed)

Disaster Recovery

  • RTO (Recovery Time Objective): <5 minutes — Workers are globally distributed, instant failover
  • RPO (Recovery Point Objective): <1 minute — R2 bronze events are near-real-time; D1 backup daily
  • Zero-downtime deploys: Workers support gradual rollout (10% → 50% → 100%) via Cloudflare dashboard
  • Rollback: Previous Worker version re-deployable in <30 seconds via wrangler rollback
  • Multi-region: Cloudflare's global network provides automatic geo-distribution with no configuration

⚙️ 12 Backoffices

Ver documento: backoffices-architecture.docx — 14 capítulos, 44KB.

⚡ Events, Clusters & Categories

Ver documento: events-clusters-categories.docx — 197 eventos, 62 clusters, 14 capítulos, 53KB.

📣 CRM Campaigns & Push

Ver documento: crm-campaigns-pushnotifications.docx — 59 campanhas, 33 eventos sazonais, 14 capítulos, 45KB.

🔌 API Reference

Ver seção 27 do Main Architecture doc — Frontend API Headless com 15 módulos REST + GraphQL + SDK.

👷 Workers & Durable Objects

Worker scaffolds sendo gerados. Ver wrangler.toml para bindings completos.