umapalavraumamusica

Configuração e publicação

O modo local funciona sem nenhuma configuração. Este guia prepara o modo online.

1. Criar o projeto Supabase

  1. Crie um projeto em supabase.com.
  2. Em Authentication → Sign In / Providers, ative Allow anonymous sign-ins (o app usa login anônimo: cada aparelho ganha uma identidade estável, sem cadastro).
  3. Anote, em Project Settings → API, a Project URL e a chave anon (ou publishable). Essas duas são públicas e vão no app. As chaves secretas nunca vão no app.

2. Banco de dados (migrações)

Com a Supabase CLI:

npx supabase login
npx supabase link --project-ref SEU_PROJECT_REF
npx supabase db push          # aplica supabase/migrations (tabelas, RLS, regras e banco de palavras)

Sem a CLI, dá para colar o conteúdo dos arquivos de supabase/migrations/, em ordem, no SQL Editor.

As migrações já adicionam rooms e players à publicação do Realtime (supabase_realtime).

3. Edge Function submit-guess

npx supabase functions deploy submit-guess --no-verify-jwt
npx supabase secrets set MUSIXMATCH_API_KEY=sua_chave_do_musixmatch

Variáveis opcionais (npx supabase secrets set NOME=valor):

Variável Uso
MUSIC_PROVIDER musixmatch (padrão) ou mock — catálogo fictício para testar sem chave
ANTHROPIC_API_KEY Liga a IA como segunda camada apenas em casos ambíguos
AI_DISAMBIGUATION off desliga a IA mesmo com a chave configurada
AI_MODEL Modelo da IA (padrão claude-opus-5-5)

Sobre a IA: ela só recebe músicas reais encontradas pela fonte musical e responde qual corresponde ao palpite (ou nenhuma). Usa esforço baixo e, se o modelo recusar a tarefa, o próprio serviço tenta o modelo de reserva recomendado (fallbacks: "default"). Sem a chave, o jogo funciona normalmente.

Musixmatch

Crie uma conta de desenvolvedor em developer.musixmatch.com. Pontos de atenção:

4. Configurar o app

cp .env.example .env
# edite .env:
# EXPO_PUBLIC_SUPABASE_URL=https://SEU-PROJETO.supabase.co
# EXPO_PUBLIC_SUPABASE_ANON_KEY=sua-anon-key
npx expo start

O app funciona no Expo Go (todas as bibliotecas usadas estão incluídas nele), no simulador e na web.

5. Banco de palavras

A comparação ignora acentos e caixa: “coração” e “coracao” são a mesma palavra e nunca se repetem na mesma partida.

6. Publicar

7. Desenvolvimento local do backend (opcional)

Com Docker, npx supabase start sobe Postgres, Auth, Realtime e Edge Functions usando supabase/config.toml (login anônimo já habilitado). Depois:

npx supabase db reset                                   # aplica as migrações
npx supabase functions serve submit-guess --no-verify-jwt --env-file supabase/functions/.env

Para jogar sem chave do Musixmatch, coloque MUSIC_PROVIDER=mock em supabase/functions/.env (catálogo fictício em _shared/music/providers/mock.ts).