CMS-agnosticisme
De onderliggende GraphQL-server waarop Gato GraphQL is gebaseerd, is CMS-agnostisch en kan dus samenwerken met elk PHP-CMS of -framework (niet alleen WordPress, maar ook Laravel en Symfony).
Om CMS-agnostisch te zijn, wordt alle functionaliteit die met het CMS moet communiceren, opgesplitst in 2 afzonderlijke pakketten:
- Een CMS-agnostisch pakket, dat alle bedrijfslogica en contracten bevat voor interactie met het geïmplementeerde CMS, welk dat ook is (bijv.: posts)
- Een CMS-specifiek pakket, dat de implementatie van de contracten voor een specifiek CMS bevat (bijv.: posts-wp, dat de contracten voor WordPress implementeert)
Het grootste deel van de code (ongeveer 90%) bevindt zich in het CMS-agnostische pakket. Om de API naar een ander CMS te porten (bijv.: van WordPress naar Laravel), hoeft alleen het CMS-specifieke pakket geïmplementeerd te worden (wat ongeveer 10% van de totale code vertegenwoordigt).
Het minimaliseren van de hoeveelheid code die opnieuw geïmplementeerd moet worden, en het vermijden van dubbele code tussen pakketten, zijn de belangrijkste factoren die bepalen hoe de code in pakketten wordt opgesplitst.