Skip to content

WordPress Plugin Workflow — MIDDAG Account Development Lifecycle

Workflow end-to-end para desenvolvimento, teste e distribuicao do middag-account. Claude Code: seguir este workflow ao trabalhar no plugin middag-account.

Companion Rules

RuleFoco
wp-plugin-best-practices.mdChecklist de qualidade (15 secoes)
wp-plugin-patterns.mdPadroes de arquitetura
wp-plugin-testing-strategy.mdPiramide de testes e cobertura
wp-plugin-security-checklist.mdDeep-dive de seguranca

Phase 1: Project Setup

1.1 Scaffold

bash
# Estrutura de diretorios (ja existente no middag-account)
mkdir -p src/{Core,Domain,Api,Integration,UI,WordPress/{Hook,Admin,Email,Cron,Repository,Rest,Frontend,Database}} \
         templates/{emails,blocks} \
         tests/{Unit,Integration,fixtures} \
         ui/src/{Pages,Components,Layouts} \
         languages \
         assets/dist \
         docs/{adrs,use-cases} \
         migration

1.2 Composer Init

json
{
    "autoload": { "psr-4": { "Middag\\Account\\": "src/" } },
    "autoload-dev": { "psr-4": { "Middag\\Account\\Tests\\": "tests/" } },
    "require": {
        "php": "^8.4",
        "symfony/dependency-injection": "^7.4",
        "ramiroestrella/chatwoot-php-sdk": "^1.0"
    },
    "require-dev": {
        "brain/monkey": "^2.6",
        "phpunit/phpunit": "^12",
        "phpstan/phpstan": "^2.1",
        "friendsofphp/php-cs-fixer": "^3.80",
        "rector/rector": "^2.1",
        "php-stubs/wordpress-stubs": "^6.9",
        "php-stubs/woocommerce-stubs": "^10.7"
    }
}

1.3 Required Files Checklist

ArquivoProposito
middag-account.phpMain plugin file com header completo
uninstall.phpCleanup destrutivo no delete do plugin
composer.jsonPSR-4, scripts, dependencias
phpunit.xmlConfiguracao de testes
.php-cs-fixer.dist.phpCode style
.phpstan.neonStatic analysis
ui/package.jsonFrontend build (React 19 + Inertia.js v2)
ui/vite.config.tsVite 6 para IIFE output
.distignoreExclusoes de distribuicao
.gitattributesExclusoes Git archive
bitbucket-pipelines.ymlCI/CD pipeline

Phase 2: Architecture Setup

2.1 Core Infrastructure

ArquivoDescricao
src/Core/Container.phpSymfony DI wrapper
src/Core/Kernel.phpBoot + activation/deactivation
src/Core/ServiceProvider.phpAuto-discovery por sufixo
src/WordPress/Hook/HookInterface.phpHook contract
src/WordPress/Hook/HookRegistrar.phpAuto-discover *Hooks classes
src/WordPress/Rest/RestControllerInterface.phpREST contract
src/WordPress/Rest/RestResponse.phpRespostas API consistentes
src/WordPress/Rest/RouteRegistrar.phpAuto-register controllers

2.2 Inertia.js Setup

ArquivoDescricao
src/UI/InertiaAdapter.phpAdapter PHP para Inertia.js v2
src/UI/PageControllerInterface.phpContract para page controllers
src/UI/Middleware/OrganizationMiddleware.phpResolve Organization do request
ui/src/app.tsxReact 19 entry point com Inertia
ui/src/Layouts/AuthenticatedLayout.tsxLayout principal admin

2.3 Integration Layer

ArquivoDescricao
src/Integration/HubSpot/HubSpotClient.phpHTTP client HubSpot
src/Integration/Stripe/StripeClient.phpHTTP client Stripe
src/Integration/BancoInter/BancoInterGateway.phpGateway boleto/PIX
src/Integration/ISSNet/ISSNetService.phpNFS-e emission
src/Integration/Cloudflare/CloudflareService.phpDNS/SSL management

2.4 ADR Foundation

ADRs ja existentes em docs/adrs/:

ADRTopico
ADR-101WordPress backend + NextJS portal
ADR-102DDD light + Symfony DI + namespace src/
ADR-103wp_posts como persistencia
ADR-108Camada WordPress como abstracao
ADR-109Inertia.js + React admin UI
ADR-208Entitlement — agregador central
ADR-209Service — projetos Labs/Dev
ADR-210ServiceRequest — solicitacoes
ADR-211Environment — instalacoes gerenciadas
ADR-306SolidAffiliate — programa de parceiros

Phase 3: Development Cycle

3.1 Feature Implementation Order (por dominio)

1. Domain entity + status enum (pure PHP)
2. Repository interface (Domain/)
3. Repository implementation — wp_posts (WordPress/Repository/)
4. Repository implementation — CCT (WordPress/Repository/Cct*)
5. Service layer (Domain/)
6. Hook classes (WordPress/Hook/)
7. REST controller (Api/) — ~5-6 endpoints por dominio
8. Integration layer (Integration/) — se aplicavel
9. Inertia page controller (UI/) — admin pages
10. React pages (ui/src/Pages/) — admin frontend
11. Email classes (WordPress/Email/) — se aplicavel
12. Tests — Unit (Domain) + Integration (API, webhook, multi-tenant)

3.2 Per-Feature Checklist

  • [ ] Domain logic tem zero WP imports
  • [ ] Toda interacao WP atraves da camada WordPress/
  • [ ] Constructor injection — sem static service calls
  • [ ] Hook class implementa HookInterface
  • [ ] REST routes tem permission_callback
  • [ ] Toda entrada sanitizada, toda saida escaped
  • [ ] Organization boundary enforced em toda query
  • [ ] JWT auth suportada em endpoints externos
  • [ ] Strings traduzveis usam __() com text domain middag-account
  • [ ] Hook prefix: middag/
  • [ ] Unit test para domain logic
  • [ ] Integration test para WP layer
  • [ ] Multi-tenant isolation test

3.3 New Domain Checklist

Ao adicionar novo dominio ao middag-account:

1. Criar Domain/{Name}/ — Entity, RepositoryInterface, Service, Enums
2. Criar WordPress/Repository/{Name}Repository.php — wp_posts mapping
3. Criar WordPress/Repository/Cct{Name}Repository.php — JetEngine CCT mapping
4. Criar Api/{Name}Controller.php — REST endpoints
5. Criar UI/{Name}PageController.php — Inertia pages
6. Criar ui/src/Pages/{Name}/ — React components
7. Criar WordPress/Hook/{Name}Hooks.php — WP hooks
8. Criar tests/Unit/Domain/{Name}/ — Domain tests
9. Criar tests/Integration/Api/{Name}ControllerTest.php
10. Registrar CPT em WordPress/Cpt/{Name}CptRegistrar.php
11. Atualizar docs/domain-map.md
12. Criar/atualizar ADR se decisao arquitetural nova

Phase 4: Quality Gate

4.1 Local Checks (antes do commit)

bash
composer check     # test + style + rector + phpstan
composer fix       # auto-fix style + rector + UI build
composer i18n      # regenerar .pot + .mo
composer ui:npm:build  # build React -> assets/dist/

4.2 CI Pipeline Stages (Bitbucket Pipelines)

StageTriggerSteps
Quality GateTodo push para develop, main, PRscomposer check
Build AssetsTag pushnpm ci && npm run build em ui/
Create ZIPTag push (apos assets)composer install --no-dev + rsync + zip
DeployTag push (apos ZIP)Deploy para ambiente

4.3 Release Flow

develop --> PR --> main (quality gate) --> Manual "Release" step --> Tag --> Build + ZIP + Deploy

Phase 5: Distribution

5.1 Build Command

bash
composer dist:build   # check + i18n + ui:build + composer --no-dev

5.2 ZIP Contents Validation

ZIP DEVE conter:

  • vendor/ (production only)
  • assets/dist/ (built JS/CSS — app.js via Vite IIFE)
  • languages/ (.pot + .po + .mo)
  • templates/ (todos)
  • src/ (todo PHP)
  • Main plugin file + uninstall.php

ZIP NAO DEVE conter:

  • tests/, docs/, ui/src/, .claude/, .aiox-core/
  • .git/, node_modules/, .cache/
  • composer.json, phpunit.xml, bitbucket-pipelines.yml
  • migration/ (scripts de migracao)
  • classes/ (legacy, nao distribuir)
  • RSA private keys

Phase 6: Maintenance

6.1 Version Bumping

Gerenciado pelo CI pipeline — le versao do plugin header, incrementa patch, commita, tageia.

6.2 Dependency Updates

bash
composer update --dry-run   # preview
composer update             # apply
cd ui && npm update         # frontend

6.3 WC Compatibility Updates

Apos cada major release do WooCommerce:

  1. Atualizar WC tested up to no plugin header
  2. Rodar suite completa de testes
  3. Testar integracao com Banco Inter gateway
  4. Testar email templates com nova versao WC

6.4 Integration Maintenance

IntegracaoVerificarFrequencia
HubSpotAPI version, webhook formatA cada HubSpot release
StripeAPI version, webhook eventsA cada Stripe major
Banco InterCertificados, API changesTrimestral
ISSNetSchema NFS-e, prefeitura updatesSemestral
CloudflareAPI changesA cada Cloudflare release
SolidAffiliatePlugin updates, hook changesA cada update do plugin

6.5 Migration Monitoring

bash
# Verificar status da migracao CCT -> wp_posts
wp option get middag_migration_complete

# Scripts de migracao em migration/
# Manual de operacao PROD em migration/

MIDDAG Account WordPress Plugin Workflow v1.0 — Morgan (@pm), Abril 2026