digitalfabrik / integreat-cms

Simplified content management back end for the Integreat App - a multilingual information platform for newcomers
https://digitalfabrik.github.io/integreat-cms/
Apache License 2.0
55 stars 33 forks source link

Federated Integreat Platform #116

Open svenseeberg opened 5 years ago

svenseeberg commented 5 years ago

If there are multiple CMS installations, we want them to be able to exchange available regions. The Integreat App should be able to show the content of all connected CMS servers.

Challenges:

The following information has to be exchanged, cached, and kept up to date:

Available CMSes:

Available regions: (site/city)

svenseeberg commented 2 months ago

I think there are (categorically) 2 approaches:

The simplest solution would be to set up the region locally in the Integreat CMS with all required settings and then configure reverse proxy rules to the external CMS for all API endpoints that actually return content. However, there would be a huge performance penalty here. The latency would at least double. This could be somewhat mitigated by aggressive caching, which in turn would not be nice for the content editing team due to delayed visibility of content.

I think a good approach would be to set up the region locally on the main CMS (admin.integreat-app.de) and add a 3rd_party_cms_url. This URL would then be returned to the Integreat App when fetching regions. The app could then directly connect to the other CMS to fetch content. There is one larger legal caveat here: we would directly load content from a (legal) third party. That means we need to either ask the user for permissions to continue to that provider or, alternatively, sign a data processing agreement with the third party. That would make the owner of the original CMS responsible for compliance with GDPR regulation. Therefore, I think, the better approach would be to ask the user in the front end when changing to a third party server.

I would skip over the original idea of CMS servers exchanging data/content etc.