Pular para o conteúdo principal

Sports

O template suporta quatro providers de sportsbook: First, Altenar, Betby e Rogue (SDK React nativo da Cactus, renderizado in-app).

A configuracao e feita por arquivo sports.config.ts (base + override por brand). O config e um objeto estatico importado diretamente tanto no client quanto no server — sem wrappers ou functions intermediarias.

Onde configurar

  • Base: app/config/sports/sports.ts
  • Override por brand: overrides/<brand-key>/app/config/sports/sports.ts
  • Hook (client): app/hooks/useSportsConfig.ts — resolve o provider ativo pela rota

O <brand-key> pode vir de:

  • ORIGIN_DOMAIN normalizado (state77.com -> state77-com)

Exemplo

import type { SportsModuleConfig } from "@cactus-agents/sports";

export const sportsConfig: SportsModuleConfig = {
main: "altenar",
test: "betby",
first: {},
altenar: {
integration: "minha-marca",
libraryUrl: "https://sb1client-altenar.biahosted.com/...",
},
betby: {
brandId: "minha-marca-id",
theme: "default",
libraryUrl: "https://ui.betby.com/...",
},
};

Configuracao por provider

Altenar

main: "altenar",
altenar: {
integration: "minha-marca",
libraryUrl: "https://sb1client-altenar.biahosted.com/...",
},

Betby

main: "betby",
betby: {
brandId: "minha-marca-id",
theme: "default",
libraryUrl: "https://ui.betby.com/...",
},

First

main: "first",

O First nao requer configuracao adicional alem do provider em main.

Rogue

SDK React nativo da Cactus (@cactus-agents/sports-rogue), renderizado in-app com UI/UX propria. Todos os campos de rogue sao opcionais:

main: "rogue",
rogue: {
theme: "default", // familia de cor: default | blue | green | purple | orange | red
scheme: "dark", // "dark" | "light"
oddsStyle: "decimal", // "decimal" | "malay" | "indo" | "hk" | "american"
// themeColors, brandPreferences, customAssets, logoBaseUrl, assetBaseUrl tambem aceitos
},

Para rodar o Rogue em um ambiente especifico sem mexer no main estatico da brand, use a env var FORCE_SPORTBOOK (valores: first | altenar | betby | rogue). Ela sobrescreve o main por ambiente — util quando um worker dedicado roda rogue enquanto a producao da brand segue em outro provider.

Rota de teste

Para testar um provider alternativo sem afetar /sports, defina test:

test: "betby",

Isso habilita a rota /sports-test com o provider de teste no sports.config.ts.

Customizacao da sidebar

Edite app/config/layout/sidebar-sports.ts para personalizar os items de navegacao:

export const sportsMainItems = [
{ slug: "live", label: "Ao Vivo", ... },
{ slug: "upcoming", label: "Comeca em Breve", ... },
];

export const popularChampionships = [
{ slug: "brasileirao-a", label: "Brasileirao Serie A", flagCode: "BR", ... },
// adicione ou remova campeonatos
];

Cada item deve conter paths para os providers que sua marca usa (firstPath, altenarPath, betbyPath).

Desabilitando

Para desabilitar completamente o modulo de esportes:

main: null,