Independência do CMS
O servidor GraphQL subjacente no qual o Gato GraphQL é baseado é independente do CMS, podendo funcionar com qualquer CMS ou framework PHP (não apenas WordPress, mas também Laravel e Symfony).
Para alcançar essa independência do CMS, toda a funcionalidade que precisa interagir com o CMS é dividida em 2 pacotes distintos:
- Um pacote independente do CMS, contendo todo o código de negócio e os contratos para interagir com o CMS que o implementa, seja ele qual for (ex.: posts)
- Um pacote específico para o CMS, contendo a implementação dos contratos para um determinado CMS (ex.: posts-wp, implementando os contratos para WordPress)
Dessa forma, a maior parte do código (cerca de 90%) reside no pacote independente do CMS. Para portar a API para um CMS diferente (ex.: de WordPress para Laravel), apenas o pacote específico do CMS precisa ser implementado (representando cerca de 10% do código total).
Minimizar a quantidade de código que precisa ser reimplementada e evitar duplicação de código entre os pacotes são os principais critérios que definem como o código é dividido em pacotes.