Project file
Related links:
The project file (project.yaml) sets out the structure of the deck.
Basic example:
version: 2
name: Demo
src: ./src
dist: ./dist
key: demo
maintainer: your.email@example.org
servers:
- title: Production
api: 'https://server.livepreso.com'
- title: Staging
api: 'https://staging-server.livepreso.com'
dimensions:
width: 1920
height: 1080
common:
js:
- js/deck.js
css:
- css/core.css
hooks: js/hooks/hooks.js
feeds: {}
fixtures:
feeds: feeds.json
context: context.json
screenshotpreferences:
backend: chrome
vector: true
sections:
- key: were_innovative
title: "We're innovative"
slides:
- { key: introduction, title: "Introduction" }
- { key: super_stats, title: "Super stats" }
- { key: fancy_infographic, title: "Fancy infographic" }
- key: product_suite
title: "Product suite"
- key: thank_you
title: "Thank you"
See Project file overview for more information.
version
Project file version number.
version: 2
name
What the deck will be called in the CDK.
name: Demo
src
Location of the source directory, relative to the project.yaml file.
src: ./src
dist
Location of the compiled output, relative to the project.yaml file.
dist: ./dist
key
Required for uploading content to servers using the publishing feature. Must match a pre-existing deck key on the server.
key: demo
maintainer
Contact email address for sending processing updates about your content.
maintainer: your.email@example.org
servers
List of relevant servers. Title is used to list the server in the CDK, api specifies the server address.
servers:
- title: Production
api: "https://server.livepreso.com"
dimensions
Deck dimensions. Available sizes are 1024 x 768 (4:3) and 1920 x 1080 (16:9).
dimensions:
width: 1920
height: 1080
You can also supply a list of dimensions, this is useful for supplying alternate dimensions for different parts of LivePreso.
dimensions:
- { name: Screen, width: 1920, height: 1080 }
- { name: A4, width: 960, height: 540 }
You must include dimensions in the list with the name Screen
.
This is used as the default for everything unless overriden for
particular processes.
One such reason you might want to us a list is for setting specific dimensions for PDFs. See pdfpreferences for more info.
common
Refers to the javascript and css files which apply to the entire deck.
common:
js:
- js/deck.js
css:
- css/core.css
hooks
Points to the hooks.js file which references the fieldsets, selections and selection rules.
hooks: js/hooks/hooks.js
feeds
Used to pull in data from external sources. Specify a source and any required preprocessors for each feed.
feeds:
product-feed:
source: "http://{{ feed_host|default:'example.server.com' }}/api/{{ param|safe }}/{{ paramlist|safeseq|join:'/' }}.json"
preprocessors
Code run on the LivePreso server that modifies your feed just before the data is fetched.
feeds:
roi-feed:
source: "/api/roi/?account_id={{ account_id }}"
preprocessors:
- UseServerHostname
- AuthenticateWithSalesPresoApi
UseServerHostname
Replaces the hostname portion of your feed's source
with the hostname of the
LivePreso instance which is hosting your deck. Use this when your feed source
is on the LivePreso server itself, and you would like the same feed declaration
to work in the dev, staging and production server environments.
When using this preprocessor, leave the hostname out of your source
; just
include the path and any query params. To understand what final URL was hit
when your feed is fetched, see
getDebugInfo.
If you have a non-LivePreso API source with various environments like staging and production, this preprocessor is not suitable. Instead, control the hostname in the feed source using a context variable.
AuthenticateWithLivePresoApi
Adds authentication to your request that will allow use of the LivePreso API as a source of data. You'll be authenticated as the user who owns the preso at the time of the request.
AuthenticateWithSourceApi
Adds authentication to your request so that it can use a non-LivePreso API as a source of data. Auth is added for supported APIs by examining the URL of your request. Supported APIs include those where an integration between the LivePreso server and the non-LivePreso API has been made.
This works by inserting a LivePreso middle-man in the request/response chain.
If you examine the final URL which was hit
when your feed was fetched while using this preprocessor, you'll see the
request was made to a path mentioning api-proxy
. This proxy only adds
authentication. Every other detail of the response is controlled by the
upstream API which you set in the feed's source
, even when the response is
e.g. a HTTP 500.
feeds:
your_feed:
source: "https://some-private-api/api/test/"
preprocessors:
- AuthenticateWithSourceApi
You may be working on a project which directly references api-proxy
in the
feed source. This is how auth proxying was done before this preprocessor was
available. AuthenticateWithSourceApi
is easier to use and does not require
fiddly encoding of the upstream URL; we suggest you upgrade.
enabled_lookup
Only fetch this feed if the referenced context variable is truthy. The lookup
is a dotted path using exactly the same rules as template parameters appearing
in source
, though it doesn't require surrounding braces. See the Working with API data guide
for more.
When enabled_lookup
is not present on your feed object, the feed is always
fetched.
feeds:
your_feed:
source: "https://optional-api.com/api/"
enabled_lookup: "config.optionalApiSelected"
fixtures
Define optional paths to fixture files, to provide feed and context data to the deck when they would otherwise be unavailable.
fixtures:
feeds: feeds.json
context: context.json
screenshotpreferences
Preferences for PDF and thumbnail screenshots.
screenshotpreferences:
backend: chrome
vector: true
The current available options are:
backend
Screenshot backend to use to generate screenshots.
Current available option is chrome
.
screenshotpreferences:
backend: chrome
vector: true
phantomjs
was originally available as a backend option, but has since
been removed. Any presos created from old deck versions that would have
used phantomjs
will now be screenshot using Chrome.
vector
A boolean indicating whether to display the PDF rasterized (as pixels), or as a vector. Defaults to false.
screenshotpreferences:
backend: chrome
vector: true
Setting vector to true can improve the size of PDFs by a substantial amount by storing text as strings rather than as pixels.
pdfpreferences
Preferences for PDFs screenshots.
defaultDimensions
dimensions:
- { name: Screen, width: 1920, height: 1080 }
- { name: A4, width: 960, height: 540 }
pdfpreferences:
defaultDimensions: A4
Select a different set of dimensions than the default during the PDF process. In the example above it will be 1920x1080 during presentations and thumbnail screenshots, but 960x540 during PDF.
The default value will be "Screen", even if you have multiple values. Make sure to set this value to the correct name to apply the dimension changes.
sections
Breakdown of sections and slides that make up the deck.
sections:
- key: were_innovative
title: "We're innovative"
slides:
- { key: introduction, title: "Introduction" }
- { key: super_stats, title: "Super stats" }
- { key: fancy_infographic, title: "Fancy infographic" }
key
Section key for use in tracking, and any other references to that section/slide.
sections:
- key: were_innovative
title: "We're innovative"
title
Verbose name for the section/slide.
sections:
- key: thank_you
title: "Thank you"
maxAdjunctSlides
Specify custom slide limits per section.
sections:
- key: product_suite
title: "Product suite"
maxAdjunctSlides: -1
Value | Response |
---|---|
-1 | Unlimited custom slides |
0 | Custom slides disabled (default) |
1 | or more Custom slides capped at specified value |
Requires custom slide upload permissions to be enabled per-user. See the enabling custom slides guide.
tags
Used to add extra information to sections/slides. Tags can be custom-defined by the content developer, or they can be LivePreso tags with predetermined functionality. Tags can be added to slides via the project.yaml , or by an admin using PresoManager.
sections:
- key: your_quarterly_review
title: "Your quarterly review"
tags: [your-tag]
slides:
- { key: checklist, title: "Check list", tags: [prep-only] }
Tagging the welcome slide
To add tags to the welcome slide, add welcome
to the project.yaml
at the same level as sections
.
welcome:
tags: [custom-tag]
sections:
- key: your_quarterly_review
title: "Your quarterly review"
tags: [your-tag]
Tags are currently the only attribute that can be applied to the welcome slide in the project.yaml.
The LivePreso system tag can not be applied to the welcome slide. there are no restrictions on custom tags.
LivePreso tags
Tag | Description |
---|---|
prep-only | Only visible in Prep mode |
preview-only | (deprecated) - Same as prep-only |
not-for-sharing | Not included in SharePresos or PDFs |
not-for-pdf-export | Not included in PDFs |
off-by-default | Turned off on preso creation |
subslide_container | Contains adjunct subslides |
slides
Collection of slides belonging to that section. Each slide requires a key and title.
sections:
- key: were_innovative
title: "We're innovative"
slides:
- { key: introduction, title: "Introduction" }
- { key: super_stats, title: "Super stats" }
- { key: fancy_infographic, title: "Fancy infographic" }
templates
A list of the reusable slide templates, as defined in your
/templates
directory.
templates:
- key: template_product
title: "Product template"
- key: template_editorial
title: "Editorial template"
key
A unique identifying key for your template. It's how the app will locate the template's files in the folder
templates:
- key: template_product
title: "Product template"
title
Verbose name for the template
templates:
- key: template_editorial
title: "Editorial template"
require_verification
Adds a modal before the salesperson presents to accept that the presentation data is correct.
require_verification: true
notify_salesperson_after_feeds_fetched
For instances where feeds can take a long time to fetch this will send a notification to the user when the feeds have finished fetching.
notify_salesperson_after_feeds_fetched: true
point_in_time_share_policy
Controls whether a share is point-in-time (it never updates even if you update the preso), or whether a share is always up to date.
point_in_time_share_policy: always
Value | Description |
---|---|
always | Share data is locked (default) |
never | Share is always up to date |
ask (future feature) | When a share is sent, ask the user if they want it to stay updated or not |
has_editable_share_support
Allows handing over a share to be edited by a contact. This adds a new area to select the editor in the sharing modal.
has_editable_share_support: true
has_signing_support
Adds a toggle to the appointment create/edit page to turn on digital signatures. With this enabled, a signing request can be made for these presos.
has_signing_support: true
requires_user_connectivity
A list of known integrations we need to look out for in the app. At the moment, only xplan is supported. This is used to make sure the user has a connection to the particular integration before accessing things like feeds, etc.
requires_user_connectivity: ["xplan"]