Pular para conteúdo

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:

  1. resolução de flavor;
  2. carregamento de .env;
  3. Firebase;
  4. App Check;
  5. emuladores quando habilitados;
  6. preferências de tema;
  7. GetIt + Remote Config;
  8. providers/blocs globais;
  9. MaterialApp e 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.