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 installConfiguracao de Ambiente
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.envVariaveis da API (apps/api/.env)
| Variavel | Obrigatoria | Descricao |
|---|---|---|
PORT | Sim | Porta do servidor (default: 3001) |
CORS_ORIGIN | Sim | URL do frontend (ex: http://localhost:3000) |
SUPABASE_URL | Sim | URL do projeto Supabase |
SUPABASE_ANON_KEY | Sim | Anon key do Supabase |
SUPABASE_SERVICE_ROLE_KEY | Sim | Service role key (bypassa RLS) |
RESEND_API_KEY | Nao | API key do Resend (email). Sem ela, emails nao sao enviados. |
MAIL_FROM | Nao | Remetente dos emails (default: noreply@soluciona.space) |
RSSHUB_URL | Nao | URL 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)
| Variavel | Obrigatoria | Descricao |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Sim | Mesma URL do Supabase |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Sim | Mesma anon key |
NEXT_PUBLIC_API_URL | Sim | URL 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 devO 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 listCUIDADO: 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-unauthenticatedRSSHub (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 Var | Descricao |
|---|---|
TWITTER_AUTH_TOKEN | Cookie auth_token do Twitter/X (obtido via DevTools) |
IG_USERNAME | Username de conta Instagram (sem 2FA) |
IG_PASSWORD | Password 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.