Skip to content

ADR-101: Product Vision & Identity

Status: Accepted

Contexto

A MIDDAG opera 3 linhas de negócio (local_middag, consultoria Moodle, Campus EAD) com um stack fragmentado: WooCommerce para pedidos, HubSpot para pipeline, Stripe para cobrança, Jira para suporte, planilhas para entitlements. Nenhum lugar único onde admin ou cliente veja "Organização X tem 3 licenças, 2 ambientes, 1 projeto ativo e uma fatura vencendo sexta." Esse problema não é exclusivo da MIDDAG — qualquer empresa B2B no WordPress enfrenta o mesmo stack remendado de 6+ plugins e 3+ serviços externos.

Decisão

Construir o middag-account — um plugin WordPress para gestão de ciclo de vida B2B que unifica organizações, entitlements, faturamento, contratos e entrega de serviços em uma única superfície.

O Que É

Um plugin WordPress, DDD Light, Symfony DI, zero dependências WP na camada de domínio, que roda dentro do wp-admin (UI React via Inertia.js) e expõe REST API v1 com auth JWT RS256 para portais headless.

O Que NÃO É

NÃO éÉ
Um CRMIntegra com CRM (HubSpot), não substitui
Um helpdeskIntegra com helpdesk (Jira/Chatwoot), não substitui
Um sistema contábilRegistra faturas de fontes externas, sem plano de contas
Um painel de hostingRastreia environments, não provisiona servidores
Um substituto do WooCommerceWC é motor de commerce por baixo; plugin adiciona camada B2B
Um produto à venda (hoje)Ferramenta interna que pode se tornar produto
Específico para MoodleGestão B2B genérica — MIDDAG vende Moodle, o plugin gerencia o negócio

Público-Alvo (3 segmentos)

  1. Primário — Empresas de software/SaaS no WordPress: 50–5.000 clientes (organizações), vendem licenças/assinaturas/ambientes, precisam de portal self-service
  2. Secundário — Empresas de serviço B2B no WordPress: Ciclo proposta→faturamento, gestão de contratos/SLA, service requests, equipes multi-usuário
  3. Terciário — Qualquer operação B2B WooCommerce: Superaram o design B2C-first do WC, precisam de gestão no nível de organização

5 Diferenciais

DiferencialDetalhe
Entitlement-centricTodo produto/serviço/ambiente rastreado via código único (inspirado no SEN da Atlassian). Nenhum outro plugin WC faz isso.
Organization-firstMulti-tenant desde o início. Clientes são organizações com colaboradores, não usuários WP individuais.
WordPress-nativeRoda dentro do wp-admin. Sem servidor separado, sem dependência SaaS. Dados no banco WordPress.
Headless-readyREST API v1 com JWT RS256. Portal NextJS consome API — ou qualquer outro frontend.
Dual-entity billingSuporta múltiplas entidades legais (ex: BR + US) com contas Stripe separadas e sistemas fiscais.

Inspiração Atlassian SEN

O SEN (Support Entitlement Number) da Atlassian é um identificador único que vincula licença a acesso a suporte. middag-account adota o conceito e o expande:

  • SEN = tipo único → middag-account: 6 classes tipadas: PLG, ENV, SVC, ORD, AFL, EDU
  • SEN = formato opaco → middag-account: formato legível {CLASS}-{YEAR}{MONTH}{SEQ:4d}
  • SEN = passivo (consulta) → middag-account: ciclo de vida com 4 estados e transições automatizadas
  • SEN = sem provisioning → middag-account: auto-provisionamento de entidades downstream
  • SEN = empresa única → middag-account: campo company para dual-entity

O entitlement é a foreign key universal: License, Environment, Service, ServiceRequest — todos os caminhos levam de volta a um entitlement.

Estratégia Internal-First / Product-Later

  • v5.0: Uso próprio da MIDDAG (dogfooding). Todos os domínios funcionais, API v1 completa, admin UI, portal NextJS.
  • v5.0.x: Ecossistema — notificações, integrações adicionais, automações.
  • v6.0+ (aspiracional): Modelo open-core — core gratuito no wp.org, funcionalidades premium gated por licença. Multi-site, white-label, marketplace de extensões.

Métricas de Sucesso

Dogfooding (MIDDAG):

  • Consulta de cliente < 5s (qualquer entitlement, fatura ou licença)
  • Ciclo quote-to-payment automatizado (zero passos manuais após aceite)
  • Zero erros de billing dual-entity (conta Stripe correta, sistema fiscal correto)
  • Cobertura de testes > 90% na camada de domínio

Adotantes (futuro):

  • Tempo até primeira organização < 30 min após instalação
  • Tempo de resposta da API < 200ms (p95)
  • 100% dos endpoints REST API v1 documentados

Consequências

Positivas:

  • Visão unificada do cliente em um lugar — elimina alternância entre 3+ sistemas
  • Pipeline automatizado quote→order→payment→entitlement
  • Arquitetura preparada para distribuição externa sem rewrite
  • Dados sob controle do operador (self-hosted), não em SaaS de terceiros

Negativas:

  • Complexidade de manter 16 domínios em um único plugin
  • Dependência de WooCommerce como motor de commerce
  • Custo de manutenção de integrações externas (Stripe, HubSpot, Jira, ISSNet (NFSe Brasília/DF))
  • Mercado-alvo nichado — nem todo negócio B2B está no WordPress

Referências

  • ADR-102 — Architecture Foundation
  • ADR-103 — Plugin Ecosystem
  • ADR-202 — Entitlement (agregador central, modelo SEN expandido)
  • ../reference/personas.md — Personas de usuário
  • Lições do modelo SEN Atlassian — conteúdo absorvido neste ADR