Construído junto

Portal da comunidade

Uma janela aberta do nosso processo: acompanhe o que está sendo construído, as sugestões que a comunidade enviou e como cada uma está sendo tratada. O envio de feedback fica disponível para quem já usa o NestCards.

Planejado

12

Scan: várias cartas na mesa — Etapa 3 (experimental, SPEC 014)

Uma foto com ~10 cartas abertas na mesa: detectar os retângulos das cartas (contornos via canvas/OpenCV.js), recortar cada um e passar pelo mesmo pipeline de sinais da Etapa 1. Começa como experimento de viabilidade — só promete se a taxa de acerto for boa. Spec: docs/SPEC-CAMERA-SCAN.md

Lances públicos (bid offers)

Faça lances públicos em cartas; demanda visível à comunidade.

Índices NestCards

NestCards 100, índice de liquidez, vintage e moderno.

API de mercado

Endpoints de preços, liquidez, tendências e rankings.

Alertas de preço

Avise-me quando uma carta passar ou cair de um valor.

Dashboard de mercado por carta

Aba de mercado em cada carta: preço, histórico, liquidez e score.

Rankings de mercado

Mais negociadas, maior valorização, maior liquidez e volume.

Market Score da carta

Indicador único (0-100) de saúde de mercado da carta.

Tendências de preço e volume

Alta, baixa e estabilidade a partir de médias móveis.

Liquidez de mercado

Medir oferta, demanda e velocidade de negociação real.

Histórico de preços

Timeline de preço e volume (7/30/90/180/365 dias).

Preço real de mercado

Preço baseado só em negociações concluídas — mediana como referência.

Em desenvolvimento

1

Catálogo em português completo

Todos os sets passam a ter cartas em PT (dados em inglês onde a fonte ainda não publicou o PT).

Em teste

4

Validação CIS: reconhecer o token na foto da carta

IMPLEMENTADA (commit 593f9ba): submitValidationPhoto roda OCR server-side na foto e exige que o token VAL apareça nela antes de marcar verified — tolerante a erros clássicos de leitura (O→0, I/L→1, U→V). Token VAL agora é opaco (mesmo esquema do CLM, data embutida via HMAC). Cartas adicionadas pelo scan (com foto real) nascem VERIFIED com source=scan.

Feed: correção da página quebrada

O feed caía no error boundary: função de i18n passada do server pro client (não serializa). Virou template string interpolada no client. Commit: cfe1f28

Skeletons de carregamento e feedback de envio nos forms

Skeletons (loading.tsx) em home/binder/feed/pokédex, SubmitButton com spinner nos formulários e modal de transferência no tema Nest. Commits: 1805bc7, 5004b3c

Pokédex contando cartas em PT

Cartas em português agora marcam os Pokémon na Pokédex (dexNumber preenchido).

Aguardando liberação

0

Concluído

38

[Scan] Reconhecimento de cartas por foto (SPEC 014)

Scanner de cartas por foto — **em teste em produção**. ## O que foi entregue - **OCR no servidor** (PaddleOCR PP-OCRv4 via onnxruntime-node) — saiu do navegador, que crashava o iPhone. - **Câmera in-app com moldura** (formato de carta), recorta só a carta, captura várias em sequência com miniaturas dentro da câmera. - **Identificação** por número `N/M` + **número da Pokédex** (`Nº046`) + nome + idioma + similaridade visual (dHash). - **Filtro de espécie** (por dex ou nome) — descarta cartas de outro Pokémon com o mesmo N/M. - **Idioma**: detectou no template → filtra; não detectou → preferência do usuário desempata. - **Fila processa 3 fotos em paralelo**. - Liberado para todos os usuários. ## Checklist de teste - [ ] Carta PT moderna (com `Nº` da dex) — número e espécie corretos - [ ] Carta EN — idioma detectado/filtrado certo - [ ] Carta antiga sem `Nº` da dex — filtro por nome - [ ] Duas espécies com mesmo N/M (ex.: 4/149 Paras vs Bellossom) — só a certa - [ ] Carta de Treinador/Energia (sem espécie) - [ ] Lote de 5+ fotos — velocidade aceitável - [ ] iPhone (Safari e Chrome) — não crasha

Scan: recortar só a carta da foto (limpar fundo)

Hoje a foto enviada no scan é salva inteira como foto da cópia (fundo/mesa aparecem). Detectar o retângulo da carta (contornos via canvas/OpenCV.js), corrigir perspectiva e salvar só a carta recortada. Mesma base técnica do multi-carta na mesa (#54) — resolver os dois juntos pode fazer sentido. Spec: docs/SPEC-CAMERA-SCAN.md

Scan: câmera ao vivo — Etapa 2 (SPEC 014)

getUserMedia com moldura-guia na proporção da carta, obturador e loop contínuo (escaneia → ajusta → próxima sem sair da câmera). Refinamento de UX sobre a mesma infra de OCR/resolver da Etapa 1. Spec: docs/SPEC-CAMERA-SCAN.md

Scan: dHash da arte — Etapa 1.5 (SPEC 014)

Índice de hash perceptual (dHash 64-bit) da janela de arte das ~37k cartas (coluna `CatalogCard.imageHash` + script de backfill a partir dos webp no R2). O resolver passa a pontuar com 3 sinais: arte + número + nome. Elimina ambiguidade de sets com o mesmo total impresso. Spec: docs/SPEC-CAMERA-SCAN.md

Scan por fotos — Etapa 1 (SPEC 014)

A pessoa envia fotos das cartas (galeria ou câmera nativa), uma carta por foto. OCR client-side (tesseract.js) lê número/total do rodapé + nome; resolver sugere candidatos do catálogo; condição/variante por carta e inserção em lote. Rota: `/add/scan` (botão Escanear fotos no /add). Commit: 199d94e · Spec: docs/SPEC-CAMERA-SCAN.md Ajuste conhecido pra polir durante o teste: dois sets com o mesmo total impresso podem confundir (ex.: 4/102 é Charizard base1 E Drapion Triumphant) — o peso do nome no score resolve a maioria; o dHash da arte (Etapa 1.5) elimina de vez.

Lightbox do perfil público corrigido no celular

O lightbox das seções raras/recentes abria preso dentro da seção (will-change permanente do scroll-reveal criava containing block pro position:fixed). Agora cobre a tela inteira, com efeito holo. Commit: 61f8cf7

Ajustes mobile: safe-area, viewport, Pokédex em 3 colunas

Bottom nav e painel Mais respeitam env(safe-area-inset-bottom) (iPhone com barra de gesto), viewport-fit=cover + theme-color, Pokédex com 3 colunas no celular e resumo de cartas+valor no hero da home. Commit: cfe1f28

Catálogo de imagens 100% WebP

347 imagens png convertidas pra webp (~189MB economizados). Script: `npm run db:r2:convert-webp` (objetos antigos mantidos até validar; depois rodar `db:r2:prune`). Commit: d0267ab

Hardening das actions de troca, escrow e claims

Rejeição no escrow em transação atômica, rate limit em ofertas/sessões de troca e transferências, validação Zod na criação de oferta. Commit: 1805bc7

Variantes de carta corrigidas

Holo e reverse holo recuperados em sets cujo dado da fonte vinha incompleto.

Correção do feed de novidades

Posts da rede passam a aparecer corretamente no feed; aba para ver seus próprios posts.

Efeito holográfico no celular

Inclinação/brilho da carta agora respondem ao toque no mobile.

Ampliar carta em tela cheia

Clique numa carta pra vê-la grande, sem moldura, com efeito holográfico.

Adicionar cartas em lote

Busque e marque várias cartas (de sets diferentes) e adicione todas de uma vez, escolhendo o estado.

Pokédex pública por colecionador

Veja a Pokédex de cada colecionador: o que capturou e o que falta.

Perfil público de colecionador

Perfil com selo de fundador, nível de treinador, cartas mais raras, últimas adicionadas, sets, wishlist e atividade — respeitando privacidade.

Busca de colecionadores e cartas

Barra de busca encontra usuários e cartas; nova página com todos os colecionadores cadastrados.

Navegação mobile e melhorias de uso

Nova barra de navegação inferior no celular, busca que encontra cartas mesmo filtrando por idioma, e correções de robustez em trocas e importação. Em teste antes da liberação geral.

Deploy em produção

Subindo a plataforma para a nuvem (Vercel + banco gerenciado).

Acesso por e-mail e Google

Cadastro e login por e-mail/senha além do Google.

Dashboard público de confiança

Página pública com score, histórico e avaliações de cada colecionador.

Programa de Founders

Os primeiros membros ganham número de Founder vitalício.

Badges e conquistas

Conquistas automáticas por trocas, escrow e marcos.

Avaliações pós-troca

Avalie quem negociou com você; nota e comentário.

Reputação e níveis de confiança

Reputação event-sourced, níveis automáticos e selo de confiança.

Trocas com escrow seguro

Custódia intermediada para trocas e vendas com segurança.

Feed social e comunidade

Movimentação real da comunidade, sugestões, bugs e changelog.

Coleções temáticas

Vitrines curadas por você, públicas no seu perfil.

Pokédex pessoal

Acompanhe quantas espécies você já tem na coleção.

Binders e fichário digital

Organize sua coleção em fichários, com impressão estilo 9-pocket.

Importação de coleções

Importe sua coleção via CSV (LigaPokemon e genérico).

Catálogo completo de cartas

Todos os sets de Pokémon, multilíngue (EN/PT), com imagens próprias.

Scan de cartas

proporcionar o scan de cartas pra localizar uma carta pela imagem dela

Ícone do app (favicon)

Pikachu no lugar do ícone padrão na aba do navegador.

Entrega de e-mail no domínio próprio

E-mails saem de @nestcards.com.br com DKIM, SPF e DMARC para cair na caixa de entrada.

Convite de acesso pelo admin

Admin convida alguém por nome e e-mail: libera o cadastro e dispara o e-mail de convite.

Foto de perfil personalizada

Avatar puxa a foto do Google no login e botão para enviar/trocar a própria imagem.

Ajuste botao ver todos os set

Na tela de Binders ao clickar no botao para ver todos os sets a pagina nao renderizava