diff --git a/src/app/components/BoilerPlateComponent/README.md b/src/app/components/BoilerPlateComponent/README.md
new file mode 100644
index 00000000000..c9368ea36ac
--- /dev/null
+++ b/src/app/components/BoilerPlateComponent/README.md
@@ -0,0 +1,7 @@
+## Description
+
+Renders a formatted user defined text.
+
+| Parameter | type | example |
+| ------------ | ------ | ----------------- |
+| textToRender | string | "Hello Everyone!" |
\ No newline at end of file
diff --git a/src/app/components/BoilerPlateComponent/index.stories.tsx b/src/app/components/BoilerPlateComponent/index.stories.tsx
new file mode 100644
index 00000000000..23baddf644e
--- /dev/null
+++ b/src/app/components/BoilerPlateComponent/index.stories.tsx
@@ -0,0 +1,26 @@
+import HelloWorld, { BoilerPlateProps } from '.';
+import { ServiceContextProvider } from '#app/contexts/ServiceContext';
+import readme from './README.md';
+import metadata from './metadata.json';
+
+
+
+const Component = ({ textToRender }: BoilerPlateProps) => (
+
+
+
+);
+
+export default {
+ title: 'Components/BoilerPlateComponent',
+ Component,
+ parameters: {
+ docs: { readme },
+ metadata,
+ },
+ args: {
+ textToRender: 'Example Text',
+ },
+};
+
+export const ExampleBoilerPlateComponent = Component;
\ No newline at end of file
diff --git a/src/app/components/BoilerPlateComponent/index.style.ts b/src/app/components/BoilerPlateComponent/index.style.ts
new file mode 100644
index 00000000000..461ef31a75d
--- /dev/null
+++ b/src/app/components/BoilerPlateComponent/index.style.ts
@@ -0,0 +1,11 @@
+import { css, Theme } from '@emotion/react';
+
+export default {
+ text: ({ palette, mq }: Theme) =>
+ css({
+ color: palette.GREY_6,
+ [mq.GROUP_1_MAX_WIDTH]: {
+ color: palette.POSTBOX,
+ },
+ }),
+};
diff --git a/src/app/components/BoilerPlateComponent/index.test.tsx b/src/app/components/BoilerPlateComponent/index.test.tsx
new file mode 100644
index 00000000000..ded41023fc7
--- /dev/null
+++ b/src/app/components/BoilerPlateComponent/index.test.tsx
@@ -0,0 +1,22 @@
+import { render } from '#app/components/react-testing-library-with-providers';
+import HelloWorld from '.';
+
+describe('BoilerPlateComponent', () => {
+ describe('formatting behaviour', () => {
+ it.each([
+ { text: 'Hello World' },
+ { text: 'Goodbye World' },
+ { text: 'Good Evevning World' },
+ ])(`should render the service and the text $text`, ({ text }) => {
+ const { container } = render(, {
+ service: 'pidgin',
+ });
+
+ const resultingHeading = container.querySelector('h2');
+ const resultingText = container.querySelector('span');
+
+ expect(resultingHeading?.innerHTML).toBe('You are on pidgin');
+ expect(resultingText?.innerHTML).toBe(text);
+ });
+ });
+});
diff --git a/src/app/components/BoilerPlateComponent/index.tsx b/src/app/components/BoilerPlateComponent/index.tsx
new file mode 100644
index 00000000000..63f1ff850e9
--- /dev/null
+++ b/src/app/components/BoilerPlateComponent/index.tsx
@@ -0,0 +1,29 @@
+import { use } from 'react';
+import { ServiceContext } from '#app/contexts/ServiceContext';
+import Text from '#app/components/Text';
+import style from './index.style';
+import Heading from '../Heading';
+
+export type BoilerPlateProps = {
+ textToRender: string;
+};
+
+const SERVICE_ALLOW_LIST = ['mundo'];
+
+export default ({ textToRender }: BoilerPlateProps) => {
+ const { service } = use(ServiceContext);
+ if (!SERVICE_ALLOW_LIST.includes(service)) {
+ return null;
+ }
+
+ return (
+ <>
+
+ You are on {service}
+
+
+ {textToRender}
+
+ >
+ );
+};
diff --git a/src/app/components/BoilerPlateComponent/metadata.json b/src/app/components/BoilerPlateComponent/metadata.json
new file mode 100644
index 00000000000..20e3427f02a
--- /dev/null
+++ b/src/app/components/BoilerPlateComponent/metadata.json
@@ -0,0 +1,29 @@
+{
+ "alpha": true,
+ "lastUpdated": {
+ "day": "",
+ "month": "",
+ "year": ""
+ },
+ "uxAccessibilityDoc": {
+ "done": true,
+ "reference": {
+ "url": "",
+ "label": "Screen Reader UX"
+ }
+ },
+ "acceptanceCriteria": {
+ "done": true,
+ "reference": {
+ "url": "",
+ "label": "Accessibility Acceptance Criteria"
+ }
+ },
+ "swarm": {
+ "done": true,
+ "reference": {
+ "url": "",
+ "label": "Accessibility Swarm Notes"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/app/pages/ArticlePage/ArticlePage.tsx b/src/app/pages/ArticlePage/ArticlePage.tsx
index 1247d7f5d5c..3114810e3c0 100644
--- a/src/app/pages/ArticlePage/ArticlePage.tsx
+++ b/src/app/pages/ArticlePage/ArticlePage.tsx
@@ -60,6 +60,7 @@ import ContinueReadingButton, {
} from '#app/components/ContinueReadingButton';
import SaveArticleButton from '#app/components/SaveArticleButton';
import isLive from '#lib/utilities/isLive';
+import BoilerPlateComponent from '#app/components/BoilerPlateComponent';
import ElectionBanner from './ElectionBanner';
import ImageWithCaption from '../../components/ImageWithCaption';
import AdContainer from '../../components/Ad';
@@ -502,6 +503,7 @@ const ArticlePage = ({
+
{
return (
<>
{/* EXPERIMENT: PWA Promotional Banner */}
+
@@ -90,6 +92,7 @@ const HomePage = ({ pageData }: HomePageProps) => {