PlayWise é um app single-user por design. Cada usuário:
- roda a própria instância local ou self-hosted
- conecta o próprio projeto Supabase
- configura as próprias chaves de API (Steam, RAWG, Claude, Gemini) pela UI em
/configuracoes
As chaves de API não entram no .env nem no repositório. Elas ficam na
tabela user_settings do seu próprio Supabase. O servidor também não devolve
essas chaves em respostas JSON para o cliente (ver lib/user-settings.ts).
Só 3 variáveis vão no .env.local:
| Variável | Onde usar | Obrigatória |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
URL do seu projeto Supabase | sim |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
anon key usada no cliente | sim |
SUPABASE_SERVICE_ROLE_KEY |
service role key usada no servidor | recomendada antes de deploy público |
Veja .env.example.
O schema SQL atual em lib/supabase/schema.sql cria policies RLS abertas
porque PlayWise foi pensado como app pessoal. Não hospede uma instância
multi-user sem antes:
- substituir as policies
FOR ALL USING (true)por policies baseadas emauth.uid() - configurar
SUPABASE_SERVICE_ROLE_KEYno servidor - implementar autenticação de verdade (Steam OpenID ou Supabase Auth)
Sem esses três passos, qualquer visitante da sua instância pode ler e escrever API keys, bibliotecas e configurações de todos os usuários usando a anon key exposta no cliente.
Se encontrar uma vulnerabilidade real, prefira abrir um report privado em GitHub Security Advisories. Se for um aviso geral não explorável, um issue público também funciona.