Setup Local

Pre-requisitos

  • Node.js >= 20
  • npm >= 11
  • Supabase CLI (npm i -g supabase)
  • Google Cloud SDK (para deploy)

Instalacao

git clone https://github.com/agamenor/mbles.git
cd mbles
npm install

Configuracao de Ambiente

cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env

Variaveis da API (apps/api/.env)

VariavelObrigatoriaDescricao
PORTSimPorta do servidor (default: 3001)
CORS_ORIGINSimURL do frontend (ex: http://localhost:3000)
SUPABASE_URLSimURL do projeto Supabase
SUPABASE_ANON_KEYSimAnon key do Supabase
SUPABASE_SERVICE_ROLE_KEYSimService role key (bypassa RLS)
RESEND_API_KEYNaoAPI key do Resend (email). Sem ela, emails nao sao enviados.
MAIL_FROMNaoRemetente dos emails (default: noreply@soluciona.space)
RSSHUB_URLNaoURL da instancia RSSHub auto-hospedada. Sem ela, sync de porta-vozes usa rsshub.app (instavel).

Nota: Asaas API key e configurada POR NUCLEO no dashboard (Configuracoes), nao como env var global.

Variaveis do Web (apps/web/.env)

VariavelObrigatoriaDescricao
NEXT_PUBLIC_SUPABASE_URLSimMesma URL do Supabase
NEXT_PUBLIC_SUPABASE_ANON_KEYSimMesma anon key
NEXT_PUBLIC_API_URLSimURL do backend (ex: http://localhost:3001)

Rodar Local

# Terminal 1: API (porta 3001)
cd apps/api && npm run dev

# Terminal 2: Web (porta 3000)
cd apps/web && npm run dev

# Ou ambos via Turborepo:
npm run dev

O banco e o Supabase remoto — nao precisa rodar supabase start.

Migrations

# Aplicar todas as migrations pendentes no banco remoto
supabase db push --include-all

# Listar status (local vs remoto)
supabase migration list

CUIDADO: se a migration tem numero menor que a ultima aplicada no remoto, o supabase db push normal ignora. Use --include-all para forcar.

Deploy (Google Cloud Run)

# Backend
cd apps/api
gcloud run deploy mbles-api --source . --region southamerica-east1 --allow-unauthenticated

# Frontend
cd apps/web
gcloud run deploy mbles-web --source . --region southamerica-east1 --allow-unauthenticated

RSSHub (Porta-Vozes)

Instancia auto-hospedada para sync de YouTube e Twitter/X dos porta-vozes.

gcloud run deploy rsshub --image diygod/rsshub:latest --region southamerica-east1 --allow-unauthenticated --memory 2Gi --cpu 2
Env VarDescricao
TWITTER_AUTH_TOKENCookie auth_token do Twitter/X (obtido via DevTools)
IG_USERNAMEUsername de conta Instagram (sem 2FA)
IG_PASSWORDPassword da conta Instagram

YouTube: funciona sem config extra.
Twitter/X: precisa do cookie auth_token.
Instagram: nao funciona via RSSHub no Cloud Run (IP bloqueado). Posts adicionados manualmente.