Mozart
Envelopes
What?
Mozart:
page composition as a service
Envelope:
component/message container
Where?
- github.com/BBC-News/composition
- github.com/BBC-News/composition-example
- github.com/BBC-News/mozart-composition
Envelopes?
- An envelope is simply an interface
- An envelope contains component information
- An envelope is a response to a HTTP request
Envelope
{
key: "",
head: "",
bodyfirst: "",
bodylast: "",
}
Interaction
Request
- A page is made up of multiple components
- We make a request for each component
- The request will be to a HTTP endpoint
- We'll pass a component identifier 'key' (query param vs REST?)
- The key enables us to enforce component order
- The envelope should include/return the identifier key
Request Construction
- Components are defined in YAML config
-
We have three levels of config
- Page (e.g. home_page)
- Base (e.g. furniture, such as ORB)
- Default (e.g. missing settings, config inheritance)
-
http://<base_url>/<component.id>?<opts>
Example Page YAML
base_url: "https://s3-eu-west-1.amazonaws.com/components"
components:
- id: 'meta-author'
- id: 'orb-header'
mandatory: true
- id: 'articles'
mandatory: true
opts:
- count: 10
- id: 'orb-footer'
mandatory: true
Example Page Mustache
<html lang="en-GB">
<head>
<title>My Home Page</title>
<link href="/css/home_page.css" rel="stylesheet" />
{{{ head }}}
</head>
<body>
<div id="center">
{{{ bodyfirst }}}
</div>
{{{ bodylast }}}
</body>
</html>
Interpolation
Discussion
Mozart/Envelope
By Mark McDonnell
Mozart/Envelope
- 1,462