Aplicações e packages¶
apps/aivaleu_app¶
Aplicativo Flutter principal, versão 1.2.1+20. Reúne cliente e parceiro.
Bootstrap¶
lib/main.dart executa:
- resolução de flavor;
- carregamento de
.env; - Firebase;
- App Check;
- emuladores quando habilitados;
- preferências de tema;
- GetIt + Remote Config;
- providers/blocs globais;
MaterialAppe rotas.
Áreas do cliente¶
Auth/onboarding, discovery, feed, mapa, detalhe de oferta, campanhas, wallet/cupons, economia, perfil, indicação e Premium.
Rotas de arquitetura relevantes:
/offer_details: detalhe offer-first;/details: detalhe de unidade/restaurante;/map: experiência store-first.
Área do parceiro¶
Dashboard, lojas, ofertas, integrações, campanhas, garçons e validação de cupons. O mesmo binário usa repositories compartilhados e regras server-side.
apps/super_admin_web¶
Painel Flutter Web protegido por SuperAdminRoleGuard para UX e por custom claim super_admin == true no backend.
Rotas incluem dashboard, campanhas, revisão/criação de ofertas, parceiros, curadoria de lojas e configurações.
A mutação privilegiada não deve ser reimplementada como Firestore.set no browser: campanhas, curadoria e criação administrativa usam Functions.
apps/waiter_desktop¶
Interface focada na fila de check-in.
Fluxo atual:
sequenceDiagram
participant UI as Waiter UI
participant AUTH as Firebase Auth
participant CF as loginWaiter
participant FS as Firestore
UI->>AUTH: signInAnonymously (se necessário)
UI->>CF: email + PIN
CF->>FS: consulta waiters e cria waiter_session
CF-->>UI: waiters autorizados + sessão
UI->>FS: observa coupon_redemptions waiting_checkin
UI->>CF: confirmCheckin(couponId, waiterId)
CF->>FS: valida sessão, cupom e oferta em transaction
A sessão de garçom expira em 24 horas e é armazenada em waiter_sessions/{auth.uid}; clientes não têm permissão de escrita/leitura direta nessa coleção.
Packages compartilhados¶
aivaleu_domain¶
Entidades e use cases para oferta, campanha, cupom, partner, store, waiter, referral, Premium, conta e discovery.
aivaleu_data¶
Models + repositories concretos. Evite retornar DTO/Map direto para a UI quando já existe entidade correspondente.
aivaleu_core¶
RemoteConfigService, DI global do package e logger.
aivaleu_ui¶
Design system. Cores-base observadas no código:
- amarelo
#FFC700; - rosa
#EA3981; - azul
#0021A1; - fundo escuro
#0A0F2E.
Também contém widgets de campanhas, ofertas, estado Premium, navegação e cartões de restaurante.