Skip to content
GitHub

Presentations

Every ReportArtefact can be viewed as an interactive presentation powered by Reveal.js. Each LayoutPage in the artefact becomes one slide. No additional manifest kind is needed — presentations are controlled entirely through optional metadata.labels.

No configuration is required. In preview mode, select a ReportArtefact from the dropdown and click the green Present button in the toolbar. A new browser tab opens with your report pages rendered as slides.

Use the arrow keys or swipe gestures to navigate between slides.

Add presentation.* labels to a ReportArtefact to customise the slide deck. All labels are optional and have sensible defaults.

apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: quarterly-review
  labels:
    presentation.theme: moon
    presentation.transition: fade
    presentation.transitionSpeed: fast
spec:
  format: hd
  layoutPages:
    - cover
    - highlights
    - regional-*
    - summary
  filename: quarterly-review.pdf
  title: "Quarterly Review"
LabelDefaultDescription
presentation.themewhiteReveal.js theme. See Themes below.
presentation.transitionslideDefault slide transition effect. See Transitions below.
presentation.transitionSpeeddefaultTransition speed: default, fast, or slow.
presentation.autoSlide0Auto-advance interval in milliseconds. 0 disables auto-advance.
presentation.loopfalseLoop back to the first slide after the last.
presentation.controlstrueShow navigation arrows at the bottom-right.
presentation.progresstrueShow a progress bar at the bottom.
presentation.hashtrueEnable hash-based navigation (#/2 in the URL).
presentation.format(from spec.format)Override slide dimensions. Uses the same format values as spec.format (e.g. hd, full-hd, 4k).
presentation.customCSS(none)Path to a custom CSS file for additional styling (relative to the manifest).

The presentation.theme label accepts any built-in Reveal.js theme:

black white league beige night moon serif simple solarized blood sky dracula

The presentation.transition label accepts:

none fade slide convex concave zoom

By default, the slide dimensions match the artefact’s spec.format. Use presentation.format to override this. Common choices for presentations:

FormatResolutionUse case
hd1280 x 720Standard 16:9 presentations
full-hd1920 x 1080High-resolution displays
4k3840 x 2160Ultra-high-resolution
xga1024 x 768Classic 4:3 ratio
a41123 x 794A4 landscape

Individual slides can be customised with presentation.slide.* labels on the LayoutPage manifest. These override the artefact-level defaults for that specific slide.

apiVersion: bino.bi/v1alpha1
kind: LayoutPage
metadata:
  name: cover
  labels:
    presentation.slide.transition: zoom
    presentation.slide.backgroundColor: "#1a1a2e"
    presentation.slide.notes: "Welcome the audience and introduce the agenda."
spec:
  pageFormat: hd
  pageOrientation: landscape
  children:
    - kind: Text
      spec:
        value: "Quarterly Business Review"
LabelDescription
presentation.slide.transitionOverride the transition effect for this slide.
presentation.slide.transitionSpeedOverride transition speed for this slide.
presentation.slide.backgroundColorSet a background colour (CSS value, e.g. #1a1a2e or rgb(26,26,46)).
presentation.slide.backgroundImageURL or path to a background image.
presentation.slide.backgroundVideoURL or path to a background video.
presentation.slide.backgroundSizeCSS background-size value (e.g. cover, contain).
presentation.slide.backgroundOpacityOpacity of the background (e.g. 0.5).
presentation.slide.autoAnimateSet to true to enable auto-animation between this slide and the next.
presentation.slide.autoAnimateIdGroup slides for auto-animation by giving them the same ID.
presentation.slide.visibilitySet to hidden to skip this slide during navigation (useful for backup slides).
presentation.slide.notesSpeaker notes displayed in the Reveal.js speaker view (press S to open).

Add notes to any slide with the presentation.slide.notes label. Press S during the presentation to open the speaker view, which shows the current slide, next slide, elapsed time, and your notes.

metadata:
  name: financial-summary
  labels:
    presentation.slide.notes: |
      Key talking points:
      - Revenue grew 12% YoY
      - APAC strongest region
      - Outlook remains positive

Use presentation.slide.autoAnimate: "true" on consecutive slides to let Reveal.js automatically animate matching elements between them. Give related slides the same presentation.slide.autoAnimateId to group them.

---
apiVersion: bino.bi/v1alpha1
kind: LayoutPage
metadata:
  name: revenue-q1
  labels:
    presentation.slide.autoAnimate: "true"
    presentation.slide.autoAnimateId: revenue
spec:
  children:
    - kind: ChartStructure
      spec:
        dataset: revenue-q1
---
apiVersion: bino.bi/v1alpha1
kind: LayoutPage
metadata:
  name: revenue-q2
  labels:
    presentation.slide.autoAnimate: "true"
    presentation.slide.autoAnimateId: revenue
spec:
  children:
    - kind: ChartStructure
      spec:
        dataset: revenue-q2

Set presentation.slide.visibility: hidden on a LayoutPage to include it in the deck without showing it during normal navigation. These slides can still be accessed via the URL hash.

metadata:
  name: appendix-methodology
  labels:
    presentation.slide.visibility: hidden

During a presentation, Reveal.js provides these shortcuts:

KeyAction
Arrow keysNavigate slides
SpaceNext slide
EscOverview mode
SSpeaker notes
FFullscreen
B / .Pause (black screen)
?Show keyboard help
---
apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: quarterly-review
  labels:
    presentation.theme: moon
    presentation.transition: fade
    presentation.transitionSpeed: fast
    presentation.controls: "true"
    presentation.progress: "true"
    presentation.format: hd
spec:
  format: hd
  orientation: landscape
  layoutPages:
    - cover
    - agenda
    - financial-*
    - regional-summary
    - outlook
    - appendix-*
  filename: quarterly-review.pdf
  title: "Q1 2026 Business Review"
---
apiVersion: bino.bi/v1alpha1
kind: LayoutPage
metadata:
  name: cover
  labels:
    presentation.slide.transition: zoom
    presentation.slide.backgroundColor: "#0f172a"
    presentation.slide.notes: "Welcome everyone. Today we review Q1 performance."
spec:
  pageFormat: hd
  pageOrientation: landscape
  children:
    - kind: Text
      spec:
        value: "Q1 2026 Business Review"
---
apiVersion: bino.bi/v1alpha1
kind: LayoutPage
metadata:
  name: appendix-methodology
  labels:
    presentation.slide.visibility: hidden
    presentation.slide.notes: "Only show if someone asks about methodology."
spec:
  pageFormat: hd
  pageOrientation: landscape
  children:
    - kind: Text
      spec:
        value: "Methodology & Data Sources"

The same manifests produce both a PDF report (via bino build) and an interactive presentation (via the Present button in bino preview).