Sobre o projeto
Deck Lab é um aplicativo web Python/Flask para construir, pesquisar e testar decks competitivos de Commander (Magic: The Gathering) em um único workspace. Os usuários podem editar decks, pesquisar o metagame competitivo, inspecionar informações de cartas e executar simulações goldfish; decks salvos, contas e preferências persistem entre sessões. A instância hospedada exige uma conta provisionada pelo proprietário.
Principais recursos descritos no README:
- Fluxo de trabalho de edição e pesquisa de decks: resultados de pesquisa públicos são servidos a partir de um snapshot persistido com rastreamento de revisão, atualização em segundo plano e serviço limitado de dados obsoletos; filtros e histórico do navegador são atualizados sem reconstrução completa da página.
- Lógica de domínio determinística: legalidade de Commander, identidade de cores, combinações de parceiros e tamanho do deck são validadas em código; o construtor de pacotes de estratégia seleciona cartas deterministicamente, com a saída do modelo confinada a um limite validado separado para explicações.
- Contratos de dados explícitos: a pesquisa PostgreSQL é exposta por meio de visões `mtg_v1` versionadas com um consumidor somente leitura, e um simulador separado troca JSON versionado validado contra um esquema empacotado. Evidências ausentes e simulações indisponíveis são apresentadas como estados visíveis, em vez de resultados inventados.
- Segurança: hashes de senha Argon2, proteção CSRF, provisionamento de contas, recuperação de senha e verificações de autorização; produção e QA usam credenciais, dados e redes de contêineres separados.
- Lançamentos reproduzíveis: GitHub Actions controla testes, lint, formatação, tipos e verificações de fumaça de contêineres; a implantação verifica revisão da imagem, hash do arquivo, plataforma e camadas; backups criptografados e verificações de restauração isoladas apoiam a recuperação.
Arquitetura: um aplicativo web Flask + Waitress apoiado por SQLite para contas, decks e o snapshot de pesquisa; uma atualização em segundo plano puxa das visões PostgreSQL `mtg_v1`; o aplicativo pode chamar um simulador privado via JSON versionado e um gateway de modelo opcional. A implantação usa Caddy para HTTPS e Docker Compose na DigitalOcean, com portas de banco de dados e simulador mantidas privadas; o QA está disponível em um subdomínio separado para revisão do proprietário antes do lançamento em produção.
A execução local requer Python 3.11+. A configuração usa um ambiente virtual, `pip install -e '.[dev,postgres,legacy]'`, um script de configuração do banco de dados, variáveis de ambiente para chave secreta, modo de autenticação e flags de rollout, um comando CLI de criação de administrador e um comando de serve. A CLI/empacotamento mantém o nome histórico `sabermetrics` para compatibilidade. O caminho cEDH padrão baseado em fixtures funciona sem credenciais de provedor, PostgreSQL ou simulador; o corpus de pesquisa de produção e contas privadas não são distribuídos com o repositório. Um construtor determinístico offline pode ser exercitado por meio de comandos CLI que listam e constroem pacotes de estratégia.
A verificação usa pytest, ruff, black e mypy; a suíte padrão depende de fixtures e mocks, enquanto integrações ao vivo com PostgreSQL, modelo e simulador são opcionais e os testes de modelo podem incorrer em cobranças de API. O CI também exercita o comportamento do pacote instalado, autenticação/recuperação, feedback com entrega simulada e inicialização do contêiner HTTP. A configuração de tipos registra exclusões legadas escopadas em vez de reivindicar cobertura total.
Escopo e limitações: este é um aplicativo focado em Commander, não um motor de regras completo; goldfishing mede padrões de jogo modelados, não probabilidade de vitória em multijogador; a cobertura de torneios reflete os dados de origem disponíveis e a taxa de inclusão não é prova de qualidade de carta; o suporte a pacotes de estratégia é limitado pelo material curado e pelas capacidades do simulador; a implantação em host único é uma compensação operacional deliberada, não uma afirmação de alta disponibilidade. Alguns módulos geradores originais permanecem como código de compatibilidade, com o produto gerador ativo em um repositório separado. O projeto é um projeto de fã não oficial, não afiliado à Wizards of the Coast, e é licenciado sob MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.