| Recurso | Tecnologia | Isolamento |
|---|---|---|
| Banco de Dados | PostgreSQL (RDS) | Contexto logico no app |
| Cache / Filas | Redis (ElastiCache) | Prefixado por tenant |
| Load Balancer | ALB + Nginx | Regex de subdomain |
| Autenticacao | Cognito | Atributo custom tenant |
| Busca | Typesense | Collections por tenant |
| Certificado | ACM Wildcard | *.vitrinepro.app.br |
| IA | vtp-ai-engine (Cloud Run) | CORS regex + JWT |
| Video | vtp-video-processor | Webhook callbacks |
O operador acessa o painel Filament e preenche o formulario do novo cliente:
O operador clica Deploy. Duas trilhas disparam em paralelo:
SSH para o servidor de producao executa deployanewdomain.sh:
CreateCloudFrontAndDnsAction provisiona toda a camada estatica:
3 CloudFront distributions:
• PWA: {tenant}.vitrinepro.app.br
• Painel: painel-{tenant}.vitrinepro.app.br
• Cast: {tenant}.vitrinepro.tv.br
Apos 5 min, ReadyNewDomainJob faz polling no health check. Quando responde 200: status READY, email enviado, Slack notificado.
Habilitar no console:
☑ Authentication (Email/Password + Google)
☑ Analytics
☑ Crashlytics
☑ Cloud Messaging (FCM)
Artefatos gerados:
📦 google-services.json → Android
📦 GoogleService-Info.plist → iOS
📦 Config web → PWA e Painel
O painel que a equipe do tenant usa para gerenciar conteudo, usuarios e configuracoes.
Resultado: https://painel-aprovacaoagil.vitrinepro.app.br no ar.
O app que os clientes finais do tenant utilizam. Mesmo padrao de build do painel, com configs adicionais:
Resultado: https://aprovacaoagil.vitrinepro.app.br no ar.
Um novo flavor e adicionado ao flavors.json (3.972 linhas, 120 client flavors):
Um novo diretorio apps/AprovacaoAgil/ e criado com App.swift, Info.plist, entitlements, assets e GoogleService-Info.plist:
10 SPM libraries compartilhadas:
• vtp-core-ios (networking, auth, storage)
• vtp-theme-ios (theming dinamico)
• vtp-designsystem-ios (tokens, componentes)
• vtp-serverdrivenui-ios (SDUI)
• vtp-notifications-ios (OneSignal push)
• + 5 mais (media, deeplink, shared, updates, deeplinkfeature)
24 repositorios envolvidos. 10 tocados diretamente no provisionamento.
vtp-admin (orquestra) → vtp-webservices (backend) → firebasecloud (Firebase) → vtp-painel (admin SPA) → vtp-pwa (consumer app) → vtp-android (mobile) → vtp-ios (mobile)