BMJ Studios
← Todos os trabalhos

BMJ TCG

Seis card games, um banco de dados em português e um metagame que se recalcula sozinho.

Cliente
Projeto próprio
Segmento
Mídia e produto · Card games
Ano
2026
Escopo
Produto · Arquitetura de dados · UX/UI · Desenvolvimento · SEO · Automação
Visitar o site → bmjtcg.com.br
bmjtcg.com.br
BMJ TCG — página inicial

O problema

O jogador brasileiro de card game competitivo vivia com a informação espalhada: grupo de WhatsApp, planilha solta e site gringo. Quem queria saber o que estava ganhando torneio tinha que ler inglês e garimpar decklist em três lugares diferentes. Não existia um lugar só com carta traduzida, resultado de torneio e metagame calculado.

O problema real não era falta de notícia. Era falta de dado organizado. Escrever matéria sobre o meta resolve por um dia; deixar o meta consultável resolve todo dia.


O que eu fiz

Montei o site como hub com um subdomínio por jogo, cada um com a cor canônica do próprio jogo e o mesmo esqueleto de navegação: metagame, torneios, agenda, galeria de cartas, deckbuilder. O jogador de Pokémon e o de Yu-Gi-Oh! encontram a mesma coisa no mesmo lugar, sem aprender duas interfaces.

Por baixo, um pipeline puxa carta de cinco bancos e torneio de outros cinco, normaliza e grava. O tier list não é escrito na mão: ele é calculado sobre as decklists importadas e traz a variação em relação ao recorte anterior, então dá pra ver o que subiu e o que caiu sem ter que lembrar do mês passado. As imagens passam por transformação na borda, porque tabela grande no celular é onde esse tipo de site costuma morrer.

O metagame é calculado, não escrito

Cada torneio novo recalcula o tier list. A tabela mostra share, número de decks, Top 8, títulos e a seta de tendência contra o recorte anterior. Dá pra trocar o circuito e navegar por recortes antigos de coleção, então o jogador consegue olhar o meta de dois meses atrás sem depender de alguém ter escrito sobre ele.

Carta em português é o produto

A galeria separa coleção internacional de japonesa, mostra nome em português e em inglês, código do set, data e contagem de cartas. A Pokédex própria agrupa por geração e marca as variantes. Num nicho onde a referência é toda em inglês, ler a carta no próprio idioma é o motivo de voltar.

Editorial com regra escrita

O calendário de lançamento mostra coleção anunciada sem data como trimestre, nunca com dia inventado. É uma regra pequena e é exatamente o tipo de coisa que separa um portal de referência de um agregador.

Por dentro

Painel do Pokémon TCG: metagame, torneios e cartas no subdomínio do jogo
Painel do Pokémon TCG: metagame, torneios e cartas no subdomínio do jogo
Tier list calculada a partir das decklists importadas, com variação contra o recorte anterior
Tier list calculada a partir das decklists importadas, com variação contra o recorte anterior
Página de torneio: chaveamento, colocação e decklist de cada jogador
Página de torneio: chaveamento, colocação e decklist de cada jogador
Deckbuilder: monta, valida pelo formato e compartilha — a parte que precisa de estado de verdade
Deckbuilder: monta, valida pelo formato e compartilha — a parte que precisa de estado de verdade
Galeria de cartas com nome em português e inglês, código do set e data
Galeria de cartas com nome em português e inglês, código do set e data

Documentação do projeto

Direção de arte

Cinco jogos de carta dividindo o mesmo site, cada um com estética própria e fanbase que não se mistura. A decisão de arte foi não escolher um lado: o chassi é preto neutro e cada jogo entra com a própria cor de marca por cima. Você sabe em que jogo está antes de ler o título da página.

Tipografia

  • Aa
    Archivo Black

    Título e número de torneio. Pesada o bastante pra segurar nome de carta em cima de arte cheia.

  • Aa
    Barlow Condensed

    Tabela de decklist e ranking. Condensada porque nome de carta é comprido e a coluna não é.

  • Aa
    Archivo

    Texto corrido de matéria e nota.

  • Aa
    JetBrains Mono

    Contagem, data de torneio e percentual de metagame — número que precisa alinhar em coluna.

Paleta

  • #070707 Fundo
  • #161616 Painel
  • #262626 Linha
  • #1E8FEF Ação
  • #FFCB05 Pokémon
  • #C99A3B Magic
  • #32C8E0 Lorcana
  • #E4342B Yu-Gi-Oh!

Uma variável só — a cor do jogo — troca o acento do painel inteiro. Nenhum componente precisa saber em que jogo está.

Por que essa stack

Astro na frente porque página de torneio e de carta é conteúdo que muda pouco depois de publicado: renderiza uma vez, serve como HTML estático, e o leitor não paga por framework que ele não usa. Svelte entra só onde precisa de estado de verdade — deckbuilder, filtro de metagame, busca. Cloudflare Workers com D1 e R2 porque o importador precisa rodar perto do banco e as imagens de carta são muitas e pesadas; servir de R2 pelo Images custa uma fração do que custaria num host tradicional.

AstroSvelteCloudflare WorkersD1R2Cloudflare Images

Detalhes

Por que não WordPress aqui

Torneio não é post. É linha em tabela, com participante, deck e resultado que se cruzam. Num CMS de post isso vira campo customizado em cima de campo customizado até ninguém conseguir consultar nada.

Coluna que cabe no celular

Decklist tem 60 linhas. A tipografia condensada e o corpo mono no número foram escolhidos pra caber sem rolagem horizontal, que é onde a maioria dos sites de TCG desiste.


Em números

O que foi construído, contado no próprio site.

6

card games cobertos, cada um com subdomínio próprio

10

fontes externas integradas: 5 de carta, 5 de torneio

1.025

Pokémon na Pokédex própria, ligados a 13.843 cartas

Stack

AstroSvelteCloudflare WorkersD1R2Cloudflare Images

Eu abro seu site de graça e te digo o que está travando.

Manda o link e eu olho hoje: velocidade, checkout e o que o Google e as IAs leem da sua página. Te respondo o que está atrapalhando — ou que está tudo certo, se estiver. Ainda não tem site? Me conta o que você vende.

Mandar o link no WhatsApp →

Mandar o link por e-mail

Quem responde sou eu, no mesmo diaSe não for caso pra mim, eu falo na horaPreço fechado por projeto, sem mensalidade