Design Doc 001 Adobe Experience Manager - DTS-STN/sc-digital-centre GitHub Wiki
Adobe Experience Manager(AEM)
List of AEM requirements
List of AEM Painpoints
What is AEM?
Adobe Experience Manager (AEM), is a comprehensive content management solution for building websites, mobile apps and forms. And it makes it easy to manage your marketing content and assets.
How is it being used in the Digital Centre(DC) product?
Digital Centre(DC) is taking advantage of AEM's headless CMS capabilities. Using AEM's API(Application Programming Interface) the React front end of the DC application can surface content from AEM. This architecture allows AEM to surface the exact same content to multiple platforms (ie Web apps, Phone apps, Alexa, Chatbot, etc.)
Surfacing content
Handling Language
DC did an investigation on how to handle language with AEM and came up with three potential options.
- Language specific fragments separated by folder structures (/en containing English fragments and /fr containing French fragments)
- Bilingual models appending En or Fr to field names
- Metadata within fragments to describe language
Option 2 was agreed on with mentality of trying to fail fast. The main advantages are meta data is not repeated, one fragment is created for both official languages and handling language within an app is easier. Option 1 is the next best in the event option 2 becomes not viable. It is the standard for AEM pages and has been proven reliable.
Displaying AEM Content in DC
The DC React app fetches JSON provided by AEM once on page load. The JSON is loaded into the application's context to be reused and displayed on the page.
AEM Content Models
AEM Content Models are the templates that define content fragments. A single model approach is being taken to build one content model that is generic but flexible to fit the design and give content creators flexibility. A single model fits the needs of most pages.
It is unclear at this time how pages that require customisation, forms or fields will be handled.
Risks
AEM Caching bug
AEM caches content fragments and doesn't refresh for an unknown amount of time causing stale content to be surfaced. This is a documented bug that is being worked on. A workaround is to add query string parameters at the end of a request that are updated when publishing fragments.