Discovery: Arquitetura de Marca — MIDDAG Account
Scope: Product discovery — hierarquia de marca, convenções de nomenclatura (interna vs comercial), estratégia de domínios, arquitetura de portal, nomenclatura de níveis de plano, modelo multi-moeda e roteamento de entidade Context: A MIDDAG está entrando em uma nova fase com abertura da LLC, reorganização de marca e middag-account como backbone operacional. Este documento captura TODAS as decisões de nomenclatura, branding e estruturais para evitar perda de raciocínio entre sessões. Decisões aqui se propagam para todos os outros documentos de discovery.
Nota: Multi-currency, entity routing, entitlement labels → ver
docs/adrs/ADR-301.md,docs/adrs/ADR-202.mde REFs relacionados.
1. Hierarquia de Marca
1.1 A Estrutura
MIDDAG (marca-mãe / empresa)
│
├── MIDDAG for Moodle → Plugins (linha de produto primária)
│ ├── local_middag → Plugin Moodle core (gratuito)
│ ├── local_middagpro → Plugin de distribuição de extensões premium (interno)
│ ├── [plugin_name] by MIDDAG → Produtos de plugin individuais
│ └── (futuro: MIDDAG for [Platform]) → Expansão multi-plataforma
│
├── Campus EAD / MIDDAG Pro → Plataforma SaaS LMS
│ ├── Campus EAD (campusead.com.br) → Nome comercial para o Brasil
│ ├── MIDDAG Pro → Plataforma de produto SaaS (internacional)
│ └── local_middagpro → Mecanismo de distribuição (transparente para o cliente)
│
└── MIDDAG Services → Serviços profissionais (ex-MIDDAG Labs)
├── Managed Hosting
├── Technical Support
├── Infrastructure Management
├── Environment Management (TBD)
├── Development (modelo UST)
├── Consulting
└── Training1.2 Três Pilares
| Pilar | Nome Comercial | Nome Interno | O Que É | Público | Status |
|---|---|---|---|---|---|
| Plugins | MIDDAG for Moodle | middag-plugins | Produtos de software para Moodle (e futuras plataformas) | Global (BR + LLC) | Ativo — prioridade LLC |
| Platform | Campus EAD (BR) / MIDDAG Pro (intl) | middag-pro | SaaS LMS gerenciado pela MIDDAG | Brasil primeiro, internacional depois | Adiado — médio prazo |
| Services | MIDDAG Services | middag-services (ex-Labs) | Serviços profissionais sob demanda | Brasil principalmente, LLC raro | Ativo — alto ticket |
1.3 Convenção de Nomenclatura: Interna vs Comercial
| Princípio | Regra | Exemplo |
|---|---|---|
| Nomes internos são permanentes | Código, classes, namespaces nunca mudam por branding | SVC-2026040003 permanece SVC mesmo se a marca diz "Services" |
| Nomes comerciais são fluidos | Labels, texto de UI, copy do portal podem mudar via configuração | SVC exibido como "Service Project" no portal |
| Nomes de plugin seguem convenção da plataforma | Moodle: local_middag, WP: middag-account | A plataforma dita o slug |
| "by MIDDAG" para plataformas de terceiros | Produtos em outras plataformas usam atribuição | "WooCommerce Quotes by MIDDAG" |
| "MIDDAG for X" para suítes específicas de plataforma | Suíte de plugins para uma plataforma | "MIDDAG for Moodle" |
2. Estratégia de Domínios
2.1 Inventário de Domínios
| Domínio | Propósito | Status |
|---|---|---|
middag.com.br | Site corporativo (BR) | Ativo — sem alteração |
middag.io | Novo domínio primário da marca + portal app | Ativo — nova marca |
middag.pro | Plataforma de produto SaaS (internacional) | Reservado — futuro |
campusead.com.br | Campus EAD SaaS (Brasil) | Reservado — futuro |
account.middag.com.br | MIDDAG Account (equipe interna / wp-admin) | Ativo — sem alteração |
suporte.middag.com.br | Help Center / portal Jira | Ativo — sem alteração |
2.2 Arquitetura de Portal
VOLTADO AO CLIENTE INTERNO
──────────────── ────────
app.middag.io account.middag.com.br
├── MIDDAG App ├── MIDDAG Account (wp-admin)
├── TODOS os produtos, TODOS os clientes ├── APENAS equipe interna
├── Frontend NextJS ├── Inertia.js + React (wp-admin)
├── Consome REST API v1 ├── Interface WP direta
├── Portal self-serve ├── Operações de backoffice
└── Auth JWT RS256 └── Login WordPress
account.middag.pro (futuro)
├── Portal branded para clientes SaaS
├── Mesmo backend de API
├── Branding Campus EAD / MIDDAG Pro
└── Subconjunto de funcionalidades do MIDDAG AppDecisões-chave:
app.middag.io= UM portal para TODOS os clientes (Plugins, Platform, Services)account.middag.com.br= apenas equipe interna (UI admin no wp-admin)account.middag.pro= portal branded opcional para clientes SaaS, apoiado pela mesma API- Portal por marca é possível via API — frontend diferente, mesmo backend
2.3 Roteamento de Domínio
Cliente visita app.middag.io
│
├── Faz login com credenciais (JWT RS256)
│
├── Sistema verifica Organization → qual entidade? (BR ou LLC)
│ ├── BR → exibe valores em BRL, labels em português, documentos NFSe
│ └── LLC → exibe valores em USD, labels em inglês, Stripe invoices
│
└── Sistema verifica Entitlements → quais produtos?
├── PLG → Licenças de plugin, downloads, ativações
├── ENV → Status do ambiente, solicitações de serviço
├── SVC → Progresso do projeto, consumo de UST, SRs
└── ORD/EDU/AFL → Pedidos, educação, dashboard de afiliado3. Classes de Serviço (Nomenclatura)
3.1 Classes de Serviço — Nomes Finais (EN, Global)
| Classe | Descrição |
|---|---|
| Free | Self-serve, sem SLA, sem suporte humano |
| Basic | Incluído com produto pago, ticket, horário comercial |
| Flex | Pay-as-you-go, créditos sob demanda |
| Business | Plano mensal, especialista dedicado |
| Enterprise | Contrato customizado, setor privado |
| Government | Contrato customizado, setor público |
3.2 Planos de Produto vs Classes de Serviço
PLANOS DE PRODUTO (definidos por linha) CLASSES DE SERVIÇO (transversal)
──────────────────────────────────────── ───────────────────────────────────────────
Plugins: FREE / FULL / LIFETIME / Exts Free → self-serve, sem SLA
Platform: a definir Basic → ticket, horário comercial
Services: a redefinir Flex → pay-as-you-go, créditos
Business → especialista, plano mensal
Enterprise → contrato customizado (privado)
Government → contrato customizado (público)Planos de produto definem quais funcionalidades o cliente recebe. Classes de serviço definem qual atendimento o cliente recebe. São atribuíveis independentemente no Entitlement.
3.3 Onde os Planos se Aplicam
Cada linha define seus próprios planos. Não existe nomenclatura genérica de tiers (BASIC/PLUS/PREMIUM está deprecado).
| Linha de Produto | Planos Atuais | Referência |
|---|---|---|
| MIDDAG for Moodle | FREE, FULL, LIFETIME + Extensions | docs/commerce/plugins/ |
| Campus EAD / MIDDAG Pro | A definir | docs/commerce/platform/ |
| MIDDAG Services: Planos | A redefinir | docs/commerce/services/ |
| MIDDAG Services: Projetos | Modelo UST (sem planos, baseado em crédito) | 04-service-catalog.md |
7. middag-account — Infraestrutura vs Produto
7.1 Posição Atual
middag-account é infraestrutura interna com potencial aspiracional de produto (open-core / freemium).
| Fase | Status | O Que Significa |
|---|---|---|
| v5.0 | Infraestrutura interna | Construído para as operações da MIDDAG. Não distribuído. |
| v5.0.x | Infraestrutura estabilizada | Testado em produção. Documentação completa. |
| v6.0+ | Produto aspiracional | Se a arquitetura se provar sólida, lançar como open-core com nome comercial. |
7.2 Se/Quando se Tornar um Produto
| Aspecto | Decisão |
|---|---|
| Nome comercial | TBD — NÃO será "middag-account" (slug interno permanece) |
| Distribuição | WordPress.org (core gratuito) + extensões premium |
| Padrão de nome | "[Product Name] by MIDDAG" ou "MIDDAG [Product Name]" |
| Limite open-core | Conforme ../adrs/ADR-101.md §Estratégia Internal-First |
7.3 Convenção de Nome Interno Atual
| Contexto | Nome |
|---|---|
| Slug do plugin WordPress | middag-account |
| Namespace PHP | Middag\Account\ |
| Namespace REST API | middag-account/v1 |
| Menu wp-admin | "MIDDAG Account" |
| Referência interna | "Account" ou "middag-account" |
| Repositório Git | middag-account |
8. Decisão de Arquitetura SaaS
8.1 Campus EAD / MIDDAG Pro
| Aspecto | Decisão |
|---|---|
| Mercado Brasil | Campus EAD (campusead.com.br) — nome comercial |
| Mercado internacional | MIDDAG Pro — plataforma de produto SaaS |
| Relação | Mesmo produto, branding diferente por mercado |
| Gestão de clientes | Usa backend de API do middag-account |
| Portal próprio possível | account.middag.pro ou app.campusead.com.br — frontend branded, API compartilhada |
Plugin Moodle: local_middagpro | Plugin de distribuição para extensões premium — transparente para o cliente |
8.2 SaaS e middag-account
Campus EAD / MIDDAG Pro (SaaS)
│
├── Cliente se cadastra → Organization criada no middag-account
├── Escolhe plano do produto → Entitlement (classe ENV) criado
├── Pagamento via Stripe → Invoice no middag-account
├── Ambiente provisionado → Entidade Environment no middag-account
├── Ticket de suporte → ServiceRequest no middag-account → Jira
│
└── TODOS os dados do cliente vivem no middag-account.
O frontend SaaS é apenas um portal branded consumindo a mesma API.9. Log de Decisões
Todas as decisões tomadas durante as conversas de discovery, cronologicamente:
| # | Decisão | Data | Contexto |
|---|---|---|---|
| 1 | Nome do plugin: middag-account | 2026-04-27 | Sessão anterior — escolhido sobre middag-desk, middag-manage |
| 2 | Namespace: Middag\Account\ → src/ | 2026-04-27 | README criado |
| 3 | DDD Light + Symfony DI Container 7.4 | 2026-04-27 | Herdado do tema ADR-102 |
| 4 | Classes de entitlement: PLG, ENV, SVC, ORD, AFL, EDU | 2026-04-27 | Herdado do tema ADR-208 |
| 5 | Dual-entity: middag_br + middag_global | 2026-04-27 | Herdado do tema ADR-105 |
| 6 | Modelo de negócio open-core (futuro) | 2026-04-27 | 02-product-vision |
| 7 | 6 classes de serviço: Free, Basic, Flex, Business, Enterprise, Government | 2026-04-27 | Substitui BASIC/PLUS/PREMIUM para suporte |
| 8 | Sem 24/7 abaixo de Enterprise | 2026-04-27 | Sustentabilidade da equipe |
| 9 | Enterprise = "fale com vendas", contrato customizado | 2026-04-27 | Pode exigir contratações dedicadas |
| 10 | Marca: MIDDAG for Moodle (plugins) | 2026-04-27 | Linha de produto primária |
| 11 | Marca: Campus EAD (BR) / MIDDAG Pro (intl) para SaaS | 2026-04-27 | Marca separada, reduz sobrecarga da MIDDAG |
| 12 | Marca: MIDDAG Services (ex-Labs) | 2026-04-27 | Mais claro que "Labs" para clientes |
| 13 | Código SVC permanece, label vira "Service Project" | 2026-04-27 | Nomenclatura interna vs comercial |
| 14 | Portal: app.middag.io (todos os clientes), account.middag.com.br (interno) | 2026-04-27 | Portal unificado de clientes, admin separado |
| 15 | 2026-04-27 | Substituído por planos por linha + classes de serviço transversais | |
| 16 | Multi-moeda: BRL + USD, conversão manual ou automática | 2026-04-27 | Fatores de conversão em cascata |
| 17 | Preço BR intencionalmente mais alto que LLC | 2026-04-27 | Incentivar compras pela LLC |
| 18 | Organization tem moeda preferencial | 2026-04-27 | Determina exibição no portal |
| 19 | Relatórios separados por entidade, consolidáveis via taxa de câmbio diária | 2026-04-27 | Novo requisito: armazenamento de taxa diária BRL/USD |
| 20 | UST existe em ambas as moedas (valores independentes) | 2026-04-27 | Não apenas conversão — específico por mercado |
| 21 | Tudo pode existir na BR e LLC — limites via configuração WP | 2026-04-27 | Sem restrições de entidade hardcoded |
| 22 | middag-account = infra interna, produto aspiracional | 2026-04-27 | Pode se tornar open-core na v6.0+ |
| 23 | Nomes de classes de serviço em EN globalmente | 2026-04-27 | Free/Basic/Flex/Business/Enterprise|Government |
| 24 | Padrão de nomes "MIDDAG for X" ou "X by MIDDAG" | 2026-04-27 | Flexível conforme contexto |
| 25 | local_middagpro = distribuição de extensões premium (interno) | 2026-04-27 | Transparente para o cliente |
10. Itens em Aberto
Itens em aberto de branding e nomenclatura estão registrados em BACKLOG.md (neste diretório) e ../commerce/BACKLOG.md.
11. Referências
- Linhas de negócio:
02-business-lines.md - Classes de serviço:
../adrs/ADR-601.md - Catálogo de serviços (UST):
04-service-catalog.md - Visão do produto:
../adrs/ADR-101.md - Modelo de domínio:
../adrs/ADR-202.md - Fonte dos termos:
/private/var/www/middag.termos.localhost/terms/ - Fonte das regras de SLA:
/private/var/www/middag.termos.localhost/sla-rules/ - Fichas técnicas de produto:
/private/var/www/middag.termos.localhost/draft/