---
# System prepended metadata

title: Meeting Notes - Templating

---

# Meeting Notes - Templating

## Attendees

* Philipp Rudidger (Anaconda Inc.)
* James A. Bednar (Anaconda Inc.)
* Marc Skov Madsen
* Scott Christensen (ERDC)
* Marvin Brown (ERDC)
* Chris Ball (JP Morgan)

## Prior work

https://panel.holoviz.org/user_guide/Templates.html

### Panel PRs

- https://github.com/holoviz/panel/pull/813
- https://github.com/holoviz/panel/pull/1157

### Other examples

- https://www.linkedin.com/posts/rami-krispin_covid19-italy-r-activity-6650403631709466624-cAgu
- https://rigorousthemes.com/blog/15-best-tableau-dashboard-examples/
- https://www.google.dk/amp/s/www.pinterest.com/amp/nixonatu/tableau-dashboard/
- https://dash-gallery.plotly.host/Portal/
- https://shiny.rstudio.com/gallery/
- https://material-ui.com/discover-more/showcase/
- https://material-ui.com/getting-started/templates/

## Agenda

* Introductions
* Templating frameworks
* Comparison to other frameworks
* Structuring of templates
* 

## Templating frameworks

* Vanilla CSS
* Bootstrap
* Materialize
* ...

## Comparison

* Streamlit
* Tableau
* R Shiny
* Javascript frameworks Angular/React
* Native toolkits: Qt


## Structuring of templates

* Different types of templates:
    * Simple app controls in sidebar some plots in main area
    * Multiple pages with menu system to navigate between them
    * Pipeline with multiple stages
* Totally custom vs. default templates
    * Customization important for ERDC
    * But default templates important for advertising Panel within ERDC
    * Want to be easy for someone to get started right away with something that looks nice and works well
    * Also need templating for embedding into a larger site
    * And need templating for filling in features not otherwise available (cards, draggable panes, etc.)
* Nice Index page, gallery-like?
* Standard organization:
    * Header
    * Sidebar (Responsive?)
    * Body
    * Footer
    * Menu System
        * Be able to click and route between different apps
        * Switching between endpoints or swap out components?
        * Problems to solve: syncing state, transferring state?
* Templating frameworks with custom capabilities


## API

* Options:
    * sidebar.write()?
    * Template().add_panel?
    * some_panel_component.servable(component='sidebar')
    * CustomTemplate().body.append()
* In Marc's example each component is a Panel layout (column):
    * This affords the ability to add/remove components
* In the simple case each area should be a single Panel layout:
    * Performance issues?
    * Easy to manipulate but does not afford the same capabilities as templating the internals of that area
* Building app in notebook:
    * Cannot display custom CSS inside notebook
    * Open in new tab
    * Could support theming inside notebook
    * Maybe add serve button to notebook UI?

## Other goals & Questions

* Building nice default apps using templates
* How do templates interact with pipelines?
    * Integrate with menu system?
* Embedding templates within layouts and the reverse
* Theming:
    * Coordinate theming between plots, template, components
    * 