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.