Idéen er at have et enkelt repository som din "white-label base", eller "parent repo", med al den kode, som du ønsker, der skal deles mellem de enkelte websites. Eventuelle kodeændringer, du foretager her, skal gælde for alle websites, og når du skal deploye ændringerne, kræver det kun et "pull" fra "datter" websites.
For at gøre det muligt for hvert website at differentiere sig, bruger det konfigurationsfiler til at styre forskellige ting, såsom hvor dataene kommer fra og administrere unikke ID'er til tredjepartstjenester.
Vi skriver også koden for at gøre brug af CSS variabler for alle styling valg. Dette giver os mulighed for at bruge en enkelt konfigurationsstylingfil til at tilsidesætte hele designsystemet, som er det, der giver hvert website sine egne farver, skrifttyper, mellemrum og meget mere.
Som tidligere nævnt er det sandsynligt, at dine websites ikke altid forbliver helt synkroniserede (funktionalitetsmæssigt). En simpel ændring af krav eller nye forretningsmuligheder kan nemt betyde, at opdateringer er nødvendige for et bestemt website. Men hvordan implementerer man det? Vi ønsker kun at foretage ændringer i kodebasen, når alle websites kan drage nytte af det, så vi har brug for en løsning, hvor filerne er gemt i de enkelte site repos. Og da et website altid skal kunne modtage opdateringer fra kodebasen, kan vi ikke bare ændre basisfilerne på hvert website.
Derfor besluttede vi at bruge paradigmet "convention over configuration". Hvert enkelt website kan vælge at “opt-out” af basen per fil, blot ved at oprette en ny fil med samme navn i sin egen "brugerdefinerede" mappe. Dette tillader sitet at overskrive individuelle filer eller komponenter, samt implementere dens egen skabelon og logik, når det er nødvendigt, mens det stadig synkroniserer alle andre filer med basen for at modtage opdateringer med jævne mellemrum.
Denne arkitektur har vist sig at være ekstremt stærk, og vi opnår det ved at anvende et specifikt modul i NuxtJS, som er vores foretrukne valg i alle vores white-label frontends.