Prepr headless CMS

Peer Techniek

Wat krijg je als je een headless CMS, GraphQL en gepersonaliseerde content in één SaaS stopt? Het antwoord is: Prepr!

Met Prepr kan je alle content die je nodig hebt voor je website modelleren waarmee je ontwikkelaars garanties kan geven op de vorm van je data en tegelijkertijd restricties op kan leggen aan niet-technische mensen die de content moeten beheren. Daarmee kan je risico’s afdekken dat een content redacteur onbedoeld de website stuk maakt.

Models en content items

Om de content vorm te geven begin je met het aanmaken van “Models”. Dat zijn de blauwdrukken van de content die je later inricht. Denk hierbij aan pagina’s en data structuren. Prepr is backward compatible. Als je een wijziging aanbrengt in een model, dan zullen de verouderde content items niet aangepast worden en de data blijft beschikbaar. De content wordt beschikbaar gesteld via een GraphQL interface. Als je met typescript werkt is het prettig om met codegen te werken om de types van je schema te genereren. Zorg er dan wel voor dat je die regelmatig of automatisch update. Mocht je liever geen GraphQL willen gebruiken dan faciliteert Prepr ook een Rest API (waar je overigens ook content mutaties mee kan doen).

Components

Soms hangt content altijd op een bepaalde manier samen, maar is het niet je bedoeling om zo’n samenstelling als een zelfstandig content item te laten bestaan; het is altijd onderdeel van iets anders. Op dat moment maak je gebruik van “Components”. Denk hierbij aan een blok op een pagina. Je wilt bijvoorbeeld op verschillende plekken in je website een call-to-action blok toevoegen dat altijd dezelfde structuur heeft: een plaatje, een tekst en een knop. Tegelijkertijd is dat blok altijd onderdeel van een pagina. Wat je dan doet is: Je maakt content items voor je pagina’s en vervolgens plaats je daar een instantie van een call-to-action component.

Dynamic content

Een krachtig onderdeel van Prepr is de mogelijkheid om op een gecontroleerde manier dynamische content creatie toe te staan. Hiervoor gebruik je het zogenaamd “dynamic content” blok. Je stelt in welke soorten componenten er in het geplaatst mogen worden. De content editor kan vervolgens zelfstandig zoveel content plaatsen als die maar wil. De content die je in een dynamic content blok plaatst kan bestaan uit standaard elementen, maar ook components. Op die manier kan je bijvoorbeeld volledige pagina’s dynamisch opbouwen. Zo hebben wij een  project gehad met slechts één model voor een dynamische pagina, en vervolgens kon de volledige website gebouwd worden met content items van het dynamische pagina model.

Content edit restricties

Om de stabiliteit van je website te borgen wil je niet dat een niet technische content editor onbedoeld iets stuk maakt. Daar heb je restricties voor nodig; het opbouwen van Models en Components is iets wat je aan de ontwikkelaars wil overlaten – niet aan de content editors. Je kan hier gebruik maken van het feit dat Prepr een hierarchische multi-tenant applicatie is. De tenants worden binnen Prepr “Organizations” genoemd. Wat je dan doet is: Je maakt een root organisatie waarin je het schema definieert (dwz de Models en Components) maar geen content items toevoegt. Op die organisatie geef je de ontwikkelaars beheer rechten. Vervolgens maak je een “child organisation” die het schema overerft, maar er geen wijzigingen aan toe kan brengen. Op die organisation kan je alleen content-items beheren. Content editors krijgen alleen maar rechten op die organisation en op die manier voorkom je dat editors iets aan je schema kunnen veranderen. Ontwikkelaars zullen wel zorgvuldig hun schema moeten opstellen en testen om te voorkomen dat content editors via content-items iets kunnen doen wat er niet goed uitziet op de website.

Andere features

Prepr heeft nog een hoop meer mooie tools en features, zoals gepersonaliseerde content, localization, access tokens, content status en meer. Wil je er meer over weten, bekijk dan eens de officiële documentatie.

Een afspraak maken bij ons op kantoor of wil je even iemand spreken? Stuur ons een mail of geef een belletje.