PLAYWISE
biblioteca Steam + IA + brutalismo pixel-retrô
Seu assistente pessoal de jogos para decidir o que jogar, organizar a biblioteca e redescobrir o que estava parado.
PlayWise é um app pessoal para biblioteca Steam com IA, feito para resolver um problema simples: abrir a estante, olhar centenas de jogos e ainda assim não saber o que jogar.
Ele sincroniza a tua biblioteca, enriquece os jogos com metadados, organiza status e variantes, sugere partidas com IA, gera desafios mensais e monta um perfil de estilo de jogo.
O README agora acompanha a linguagem do produto:
- Brutalist + pixel-retrô: bordas grossas, sombras duras, zero radius, grid forte
- Paleta v2.0: cream, ink, lime, gold, blue, cyan e coral
- Tipografia: JetBrains Mono como base e Press Start 2P para acentos
- Mascote Wise: pixel-art com estados de humor espalhados pela experiência
- Dark mode quente: grafite queimado com cream como tinta
- Microinterações 8-bit: chiptune via Web Audio, opt-in
O laboratório visual vivo continua na rota /styleguide e no arquivo app/styleguide/page.tsx.
- dashboard com saudação dinâmica
- recomendação do dia com Claude primário e Gemini fallback
- botão de reroll sem repetir jogo já sorteado na sessão atual
- imagem hero melhorada usando assets da Steam quando disponíveis
- estatísticas reais da biblioteca: total, horas, zerados, favoritos, jogando e nunca abri
- jogos recentes e desafio ativo na mesma visão
- sync da biblioteca via Steam Web API
- 3 modos de visualização: compacto, normal e grande
- filtros por status, controle, gêneros e tags
- ordenação por nome, horas, último jogado, rating e Metacritic
- classificação manual persistida em banco com status + estrelas
- busca com relevância: título exato e prefixo sobem para o topo
- contadores consistentes com paginação completa da biblioteca
- agrupamento por série/franquia com toggle na Biblioteca
- política de variantes:
mainaparece na grade principalrelated_onlyaparece como item relacionado do jogo paihidden_variantfica fora da grade principal
- revisão incremental de capas, tipos Steam e variantes
- ação de reprocessamento completo da biblioteca em lotes
- busca em linguagem natural com Claude primário
- fallback automático para Gemini
- usa a biblioteca inteira, não só os primeiros 1000 registros
- separa biblioteca, wishlist e resultados externos
- cache com fingerprint da biblioteca para reduzir respostas envelhecidas
- recomendação rápida por tempo, pegada e controle
- filtros opcionais de mood, gênero e social
- chat conversacional com contexto da biblioteca
- heurística para variar franquias nas alternativas
- fallback local quando a cota de IA estoura
- 1 desafio ativo por mês
- geração baseada em jogos pouco jogados
- progresso manual com atualização persistida
- estados ativo, concluído e expirado
- leitura da biblioteca inteira com paginação completa
- perfil gamer gerado por IA
- resumo de gêneros, tags, estilo e padrões de sessão
- chave da Steam
- chave RAWG
- chave Claude
- chave Gemini
- seletor de modelo Claude
- sync da biblioteca
- refresh de metadados Steam:
Atualizar bibliotecaSó pendentesRefazer tudo
- enriquecimento RAWG:
Só os novosRefazer tudo
Quando você sincroniza:
- resolve o
Steam ID - valida o perfil
- busca a biblioteca completa via
GetOwnedGames - grava horas jogadas e últimos dados base em
games
Depois do sync, o app pode revisar a biblioteca usando dados da Steam Store:
steam_typesteam_fullgame_appidvariant_kindlibrary_visibilitycard_image_urlhero_image_urlcover_image_url
Isso corrige:
- capas quebradas
- demos/betas/playtests perdidos na grade principal
- distinção entre jogo base, variante relacionada e variante oculta
RAWG agora entra como complemento, não como fonte principal de imagem para jogo Steam:
- prioriza jogos
main - evita matches fracos por nome
- persiste
series_namepara agrupamento de franquias - preenche gêneros, tags, Metacritic e controle quando fizer sentido
A pilha de IA segue esta ordem:
- Claude
- Gemini
- fallback local em fluxos que precisam continuar funcionando
| Camada | Tecnologia |
|---|---|
| Frontend | Next.js 16.2.4 + React 19 + TypeScript |
| Estilo | Tailwind CSS 4 + tokens do design system |
| Tipografia | JetBrains Mono + Press Start 2P |
| Banco | Supabase PostgreSQL |
| IA | Anthropic Claude + Google Gemini |
| APIs externas | Steam Web API, Steam Store appdetails, RAWG API |
| Ícones | Lucide React |
| Mascote | Wise em SVG pixel-art |
PlayWise/
├── app/
│ ├── page.tsx
│ ├── layout.tsx
│ ├── globals.css
│ ├── biblioteca/page.tsx
│ ├── busca/page.tsx
│ ├── sessao/page.tsx
│ ├── desafios/page.tsx
│ ├── gamer-dna/page.tsx
│ ├── configuracoes/page.tsx
│ ├── styleguide/page.tsx
│ └── api/
│ ├── games/
│ ├── search/
│ ├── session/
│ ├── challenges/
│ ├── gamer-dna/
│ ├── home/
│ ├── settings/
│ ├── steam/
│ │ ├── sync/
│ │ └── metadata/
│ └── rawg/enrich/
├── components/
│ ├── sidebar.tsx
│ ├── wise.tsx
│ ├── theme-toggle.tsx
│ ├── sound-toggle.tsx
│ ├── api-key-field.tsx
│ ├── game-card.tsx
│ ├── game-card-compact.tsx
│ ├── game-card-large.tsx
│ ├── home/
│ └── ui/
├── lib/
│ ├── ai/
│ ├── claude/
│ ├── supabase/
│ ├── steam/
│ ├── classifications.ts
│ ├── library-visibility.ts
│ ├── game-status.ts
│ └── sounds.ts
├── types/
└── .env.example
- Node.js 18+
- conta no Supabase
- chave da Steam Web API
- chave da RAWG
- chave da Anthropic
- chave da Google AI Studio
git clone https://github.com/rajaba21/PlayWise.git
cd PlayWisenpm cicp .env.example .env.localPreencha o .env.local com as credenciais do seu projeto Supabase:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYrecomendada antes de expor o app na internet, para as rotas de servidor não dependerem só da anon key
As chaves de Steam, RAWG, Claude e Gemini não ficam no repositório nem no
.env.example. Elas são configuradas na UI em Configurações e salvas no teu
próprio banco.
- Crie um projeto no Supabase
- Abra o
SQL Editor - Execute o conteúdo de
lib/supabase/schema.sql
npm run devAbra http://localhost:3000.
- Vá em
Configurações - Salve Steam, Claude, Gemini e RAWG
- Clique em
Atualizar biblioteca - Rode
Só pendentesouRefazer tudopara revisar capas, tipos Steam e variantes - Rode o enriquecimento RAWG para completar gêneros, tags e Metacritic
- O repositório não inclui tua base do Supabase, teu
.env.localou as chaves salvas emConfigurações .env.local,.next,node_modulese caches locais não entram no git- Tornar o repositório público no GitHub não publica automaticamente teus dados locais ou do banco
- O schema em
lib/supabase/schema.sqlcria policies RLS abertas (ok para uso pessoal, inseguro para multi-user). Antes de hospedar publicamente, leiaSECURITY.md - Se fores hospedar o app publicamente, configura
SUPABASE_SERVICE_ROLE_KEYno servidor e revisa autenticação/RLS antes do deploy
| API | Uso |
|---|---|
| Steam Web API | biblioteca, horas jogadas, últimos jogos |
| Steam Store appdetails | tipo do app, imagem de card, hero, variantes e vínculo com jogo pai |
| RAWG API | gêneros, tags, controle e Metacritic |
| Anthropic Claude | recomendações, busca, desafios, Gamer DNA |
| Google Gemini | fallback quando Claude falha ou está indisponível |
| Supabase | banco, persistência de classificações e cache de IA |
Planejamento detalhado da próxima expansão Steam:
docs/steam-profile-and-achievements-plan.md
- Setup do projeto + schema Supabase
- Home dinâmica com recomendação do dia
- Biblioteca 2.0 com 3 modos de visualização
- Filtros avançados, rating e Metacritic
- Classificação manual persistida em banco
- Busca por linguagem natural com Claude + fallback Gemini
- Modo Sessão com rápida + chat
- Desafios mensais
- Gamer DNA
- Design v2.0 brutalist + pixel-retrô
- Wise com estados e animação idle
- Dark mode + auto/manual override
- Microinterações 8-bit opt-in
- Claude como provider primário
- Sync Steam + enriquecimento RAWG
- Reprocessamento de metadados Steam para capas, tipos e variantes
- Política de variantes na biblioteca (
main,related_only,hidden_variant) - Agrupamento por série/franquia via RAWG game-series API
- Busca da biblioteca com relevância por título
- Contagem completa da biblioteca acima de 1000 jogos
- Detecção e exibição de DLCs vinculadas ao jogo pai
- Steam OpenID Auth
- Deploy na Vercel
- PWA instalável
- PlayWise é um app pessoal, não uma rede social
- o foco é biblioteca, contexto e decisão de jogo
- variantes como demo, beta, playtest e test server não devem poluir a grade principal
- horas continuam preservadas por
appid, sem somar automaticamente no jogo pai
Feito com Wise, Lucide e uma dose saudável de brutalismo.
Zero emojis. Sempre ícones.



