Pular para conteúdo

Visão geral e instalação

O que existe no repositório

O AiValeu é um workspace Dart 1.2.1+20, gerenciado por Melos, com SDK ^3.10.7. Ele reúne:

Área Local Responsabilidade
App principal apps/aivaleu_app Experiências de cliente e parceiro em um app Flutter
Monitor do garçom apps/waiter_desktop Login por e-mail/PIN, seleção de unidade e fila de check-ins
Super Admin apps/super_admin_web Curadoria, campanhas, parceiros, configurações e operação
Domínio packages/aivaleu_domain Entidades, contratos de repository e casos de uso sem Firebase
Dados packages/aivaleu_data Modelos e implementações Firestore/Auth/Functions
Core packages/aivaleu_core Serviços comuns, logging, Remote Config e DI base
UI packages/aivaleu_ui Tema e componentes reutilizáveis
Backend functions Functions v2 em Node.js 22, schedulers e scripts

Pré-requisitos

  • Flutter/Dart compatível com Dart ^3.10.7;
  • Node.js 22 para reproduzir o runtime declarado em functions/package.json;
  • Firebase CLI para a suíte de emuladores e deploy;
  • Java disponível para os emuladores Firebase;
  • Melos, executável pelo SDK Dart.

Bootstrap

Na raiz do repositório:

dart pub global activate melos
dart run melos bootstrap
cd functions
npm ci

melos.yaml liga os três apps e os quatro packages locais. O bootstrap usa pubspec_overrides, portanto os imports internos resolvem para o próprio checkout.

Ambiente local seguro

O app principal carrega apps/aivaleu_app/.env.dev ou .env.prod como asset. Esses arquivos são ignorados pelo Git e precisam existir localmente. Para desenvolvimento, crie .env.dev apenas com valores não secretos:

USE_FIREBASE_EMULATOR=true
AUTH_EMULATOR_HOST=127.0.0.1
AUTH_EMULATOR_PORT=9099
FIRESTORE_EMULATOR_HOST=127.0.0.1
FIRESTORE_EMULATOR_PORT=8081
FUNCTIONS_EMULATOR_HOST=127.0.0.1
FUNCTIONS_EMULATOR_PORT=5001
STORAGE_EMULATOR_HOST=127.0.0.1
STORAGE_EMULATOR_PORT=9199

Android Emulator

Do Android Emulator, 127.0.0.1 aponta para o próprio dispositivo virtual. Use 10.0.2.2 para alcançar o host ou configure adb reverse para cada porta.

Não coloque credenciais Stripe, service accounts ou chaves privadas nesses assets. Segredos do backend local pertencem a functions/.secret.local, que também não deve ser versionado.

Primeira execução

Inicie os serviços em um terminal:

cd functions
npm run emulators

O script importa e exporta functions/emulators_data quando esse diretório existe. Em uma base nova, o seed é uma operação de escrita somente nos emuladores:

cd functions
npm run seed

Em outro terminal, execute o app principal:

cd apps/aivaleu_app
flutter run --flavor dev --dart-define=FLAVOR=dev

Resultado esperado: o entrypoint resolve o flavor dev, carrega .env.dev, inicializa Firebase/App Check em modo de desenvolvimento, conecta os emuladores quando USE_FIREBASE_EMULATOR=true, registra dependências e abre o fluxo de splash/autenticação.

Outros entrypoints:

# Monitor de check-in
cd apps/waiter_desktop
flutter run -d windows --dart-define=USE_FIREBASE_EMULATOR=true

# Curadoria web
cd apps/super_admin_web
flutter run -d chrome --dart-define=USE_FIREBASE_EMULATOR=true

O Super Admin fixa localhost e as portas padrão quando usa emuladores. O monitor aceita host e portas por --dart-define; veja Configuração.

Portas locais

Serviço Porta Origem
Emulator UI 4000 padrão da Firebase CLI
Functions 5001 firebase.json
Firestore 8081 firebase.json
Realtime Database 9000 firebase.json
Auth 9099 firebase.json
Storage 9199 firebase.json

O código não usa Realtime Database como persistência de negócio, embora o emulador esteja configurado.