1

Pitch: Fiz um TCG (jogo de cartas) que roda dentro do VS Code — colecionando tecnologias de verdade. Vim contar os perrengues e chamar vocês pra testar

Passei os últimos meses construindo uma coisa meio maluca: um Trading Card Game
que roda dentro do VS Code. Chama TechDex TCG — em vez de colecionar Pokémon,
você coleciona tecnologias reais: Docker, React, Kubernetes, Rust, PostgreSQL, AWS…
cada uma com stats, raridade, classe e habilidades.

Abri pra quem quiser testar e, mais do que divulgar, vim compartilhar os perrengues
técnicos — que foi a parte que mais aprendi.

O que dá pra fazer

  • Booster diário grátis (com pity timer: Lendária garantida a cada 20 sem sorte)
  • TechDex — a "Pokédex" das 50 cartas, cada uma com ilustração exclusiva
  • Quiz diário de tecnologia que dá cartas se você acertar
  • Arena — monte um deck de 8 cartas e batalhe contra a IA, que pilota decks
    reais de outros jogadores
    (tipo "fantasma")
  • Economia de Dust — queime repetidas e crafte as que faltam
  • Trocas entre jogadores, XP, níveis, ranking e conquistas

Tudo sincroniza na nuvem via login com GitHub — começa numa máquina, continua em outra.

A stack

  • Extensão: webview em React + Vite + TypeScript, conversando com o extension
    host (Node) via postMessage.
  • Backend: Node + Express + MongoDB (Mongoose), hospedado no Render.
  • Auth: GitHub OAuth + JWT com renovação deslizante (sliding renewal).
  • Landing: Vite/React na Vercel.

Os perrengues (a parte boa)

1. O quiz estava "viciado". Percebi que a resposta certa era quase sempre a mais
longa
— e, pior, estava quase sempre na mesma posição. Dava pra gabaritar sem saber
o assunto. Tive que embaralhar as posições e reescrever os distratores das 145
perguntas pra ficarem plausíveis e do mesmo tamanho. Lição: viés em dados é sorrateiro.

2. O Render bloqueia SMTP de saída. Fiz um canal de feedback in-game que manda e-mail…
e batia timeout em toda porta SMTP (587, 465). O plano bloqueia as portas de e-mail.
Solução: troquei pra Resend (envio via HTTP/443, que ninguém bloqueia).

3. 28 MB de artes. As 50 ilustrações em PNG somavam ~29 MB — pesado pra grade da
coleção. Converti tudo pra WebP q82: caiu pra 4,5 MB (−84%) sem perda visível.

4. trust proxy e rate limit. Atrás do proxy do Render, o express-rate-limit
contava o IP errado (X-Forwarded-For) até eu setar app.set('trust proxy', 1).

5. Anti-spam no feedback. Login obrigatório + cooldown de 45s + limite diário por
usuário + rate limit por IP. Porque internet é internet.

Bora testar?

É grátis. Instala, loga com o GitHub e abre seu primeiro booster:

Marketplace: https://marketplace.visualstudio.com/items?itemName=gustavoweb.techdex-tcg
Site: https://techdex.com.br

Tem um botão de Feedback dentro do jogo — se achar um bug ou tiver ideia, manda por
lá que chega direto no meu e-mail. E aqui no TabNews também: crítica honesta é super
bem-vinda
, tanto de game design quanto de código/arquitetura. O que vocês fariam
diferente?

Valeu quem for testar 🚀

Carregando publicação patrocinada...
1

A dúvida que ficou é: Precisa mesmo ser dentro do VSCode?
Não poderia ser um cliente electron a parte?

Algo standalone que eu pudesse jogar sem precisar do VSCode.

1