Pular para conteúdo

Configuração

Esta página lista nomes e responsabilidades, nunca valores secretos.

App principal

O app lê .env.dev/.env.prod através de flutter_dotenv. As chaves utilizadas pelo bootstrap incluem:

Variável Uso
USE_FIREBASE_EMULATOR Habilita emuladores somente em debug.
AUTH_EMULATOR_HOST / AUTH_EMULATOR_PORT Firebase Auth local.
FIRESTORE_EMULATOR_HOST / FIRESTORE_EMULATOR_PORT Firestore local.
FUNCTIONS_EMULATOR_HOST / FUNCTIONS_EMULATOR_PORT Cloud Functions local.
STORAGE_EMULATOR_HOST / STORAGE_EMULATOR_PORT Firebase Storage local.

O flavor também pode ser fornecido por --dart-define=FLAVOR=dev|prod. No Android, NativeBuildInfo fornece um segundo sinal para resolver o flavor quando o define não está presente.

App Check

No app principal:

  • desenvolvimento/non-release usa providers de debug;
  • produção release usa Play Integrity no Android e App Attest no ecossistema Apple;
  • o bootstrap tenta obter um token com timeout curto antes de iniciar a UI.

No Super Admin Web e no Waiter Web, a produção usa reCAPTCHA Enterprise. RECAPTCHA_SITE_KEY pode ser fornecida por --dart-define.

Secrets do backend

functions/src/stripe_billing.js declara os secrets abaixo com defineSecret:

STRIPE_SECRET_KEY
STRIPE_WEBHOOK_SECRET
STRIPE_PRICE_PREMIUM_MONTHLY
STRIPE_PRICE_PREMIUM_LAUNCH_MONTHLY
STRIPE_SUCCESS_URL
STRIPE_CANCEL_URL
STRIPE_PORTAL_RETURN_URL

Em ambiente local, o Firebase Emulator pode carregar secrets de um arquivo local não versionado. Em produção, use o mecanismo de secrets do Firebase/Google Cloud. Nunca mova os valores para Dart, Markdown, Remote Config ou Firestore legível pelo cliente.

Projeto e região Firebase

  • projeto padrão em .firebaserc: aivaleu;
  • Firestore: southamerica-east1;
  • callables e triggers principais: southamerica-east1;
  • hosting target do painel: super-admin.

Configuração de schedulers

O backend lê settings/schedulers. O documento é operacional e só pode ser lido/escrito por Super Admin segundo as Firestore Rules.

Intervalos aceitos: 1, 5, 10, 60 e 720 minutos. Defaults atuais:

Job Intervalo lógico
campaignAutoTransitions 5 min
closeExpiredCampaigns 10 min
expireCoupons 30 min

Os jobs podem ser deployados em frequência maior; scheduler_runner.js decide se a lógica deve realmente executar.