Static Content Serving

Decision In progress

The various online channels of Napoleon Games have static content, both text and media, both on the Belgian platform and the multimarket platform. We need a content management system to feed all those channels with static content. Potentially even the Superbet channels could be added to this in the future.

Current State
Hard-coded content
Whenever a marketeer wants to create or update a page on the new SPA website, they need support from a developer to update the content in the website code and to deploy the new content to production. The Terms and Conditions page requires intervention from the techops team.
Different sources of content
There are currently several places where content needs to be managed. Fork CMS is used for mainly configuration and some digital assets, Pimcore is used for tranlated content, content pages and some fragmented digital assets, the website content is hard coded in the website, and we have separate Wordpress campaign websites.
Personalization through content injection
Frosmo is used to inject personalized content directly in the website, as it is loaded by the user.
Web only
The various content management systems only serve websites and progressive webapps.
Goals
Content pages
Marketeers can add or edit content on the various channels without requiring intervention from any development op operations team, and in an environment that is intuitive and productive. If needed, external copywriters can be given access to do the same.
Unification
Provide a single content management system for all channels and all platforms. Napoleon Games currently has 2 platforms: the legacy Belgian platform and the greenfield Multimarket platform that will eventually also replace the Belgian one. The CMS should serve both, and potentially even the channels of Superbet, the company that acquired Napoleon Games recently.
Omnichannel
A big focus of Project Bayern is to become the mobile reference for online casino games. In addition, the offline and online businesses of Napoleon Games have recently merged again, so we will want to serve offline content using the same CMS.
Personalized in the core
Personalization based on customer segments of content will become ever more important for Napoleon Games. We want to manage all personalized content in the same place, and assign it to customer segments that are retrieved from the CDP.
Assumptions
Focus on online
We have not yet talked to the offline parts of the company (casino and arcade halls). These might be added in the future, which is taken into account with the 'Evolvability' quality attribute requirement.
No metadata management
The chosen solution will only manage static content for the website, not metadata for games etc. This will be done by the admin tool of the gaming platform
Content push
Content will be pushed to the various channels and stored/cached there. This means that content will not be dynamically fetched from the CMS every time a page is requested on the website.
RACI
Responsible Accountable Consulted Informed
Functional Requirements
Content editing without technical knowledge Must Have
Someone from the marketing team should be able to update the content of the NG website, without needing a developer to deploy the changes.
Configurable Content Types Must Have
The website has several content types, such as banners, game promos, FAQ and About pages, policy pages, etc. The chosen solution should allow to manage these types of content, in a user-friendly manner.
Support Omnichannel Content Management Must Have
With project Bayern focusing more on mobile, and a general desire to provide the customer with a consistent omnichannel experience, the CMS should be able to serve all of our channels, both online and offline.
Multilingual Must Have
In Belgium, we already have 3 languages. As we move into additional markets, more languages will be needed.
Simple Workflow capabilities Should Have
The actual authoring of the content, including review and approval flows, translation by external agencies, etc, will be handled outside of this solution (for now). What is required is a simple staging/production workflow, so as to see whether the content is displayed correctly in the website.
Custom pages for geoblocking and DDOS Should Have
Cloudflare allows us to customize pages for geoblocked users and in case of DDOS
Personalization Must Have
Based on the segmentation in our CDP (Customer Data Platform), we want to be able to show personalized content from the CMS.
Content Versioning Could Have
Ability to track the historical versions of content, and potentially revert to previous versions.
SEO Must Have
The resulting website must be able to show SEO-friendly URLs and content.
Invision (or Figma) export Could Have
When designing a user interface or marketing website, the copywrite is an essential part of the design. The ability to import the actual copy of the website/channel into the design tool would be a nice feature to have.
Quality Attribute Requirements
Securability - Joiners Movers Leavers Must Have
stimulus
A new employee joins Napoleon Games and needs access to the CMS. An employee moves departments and needs access or needs their access revoked. An employee leaves Napoleon Games and needs their access revoked.
response
The access management of the CMS needs to be automated in the standard NG JML workflow Response Measure: automatically, without manual intervention.
Integratability Should Have
stimulus
a new channel, whether it is a mobile app, an SPA, a static, or a server-side rendered website, is added to the landscape and needs a content management system.
response
The chosen solution can be reused without custom development in the CMS itself.
Maintainability Should Have
stimulus
The chosen solution has an updated version.
response
The upgrade can be performed
response measure
Minimal effort, max. 1 man day
Customizability Should Have
stimulus
A new content type is added to the website, app or any other channel using the chosen solution
response
The content type can be defined and managed
response measure
Without development effort
Interoperability - Digital Asset Management Should Have
stimulus
An as of now not yet chosen Digital Asset Management tool is added to the IT landscape
response
The chosen solution should be able to integrate with the DAM
response measure
with minimal development effort.
Privacy Should Have
stimulus
Content is stored in the CMS
response
We should know where the content is stored, in the context of GDPR
Static Website Support Would Have
source of stimulus
The Content Management System
stimulus
Content is created or updated.
response
Events are pushed from the Content Management System to the static or cached versions of the various channels, as well as the CDN (Cloudflare) that distributes them so as to invalidate the cache.
response measure
in realtime
Evolvability Should Have
stimulus
New requirements appear, such as more complicated workflows, integration with translation agencies, integration with other systems, etc.
response
The chosen solution should be able to fulfill the (reasonable) new requirements, with little or no development.
Constraints
Budget Should Have
The chosen solution should offer good quality for a good price, in terms of TCO. Not only license cost should be counted, setup and maintenance should also be reasonable.
Architecture Principle Match Should Have
Rent over buy over build
Vendor Maturity Should Have
If we invest effort and a considerable budget in a CMS, we want to know that the vendor is reasonably mature, has a number of customers similar to us, and therefore has a good chance of not disappearing in the next 5-10 years.
Options Considered
description verdict
StoryBlok Storyblok is a SaaS Headless CMS. It has a fully configurable content model, and claims to be the only one with a fully visual editor. Under investigation
Strapi Headless CMS Strapi is a CMS targeting developers mainly. It is open-source, and fully based on Javascript. There are different pricing models, each offering a bit more functionality. A managed version in the cloud is planned, but not available yet. Rejected
Lifecycle
Due on 2021-10-15