-
Notifications
You must be signed in to change notification settings - Fork 0
Design
The Shiny app is developed using the {golem} framework.
Among other things, this means that we make heavy use of Shiny modules.
In brief, a Shiny module is a self-contained, encapsulated piece of Shiny UI and server logic.
In practice, this will often be a particular component of the dashboard.
Note that it is possible to nest modules within other modules, leading to a hierarchical structure.
The filenames in R/ follow the {golem} conventions:
- The
app_*.Rfiles define the UI and server logic for the app itself. - The
mod_*.Rfiles define the UI and server logic for the modules. - Any business logic functions, which are independent from the app's application logic, are defined in the
fct_*.Rfiles.
An overview of the app's design is given in the diagram below (note that this is subject to change):

The source for this image is available here
The repository is organised as an R package with a few additional directories used for deployment of the Shiny app:
-
R/: contains the R source code for the package -
inst/: configuration files and dummy data for the app-
dev_data/: dummy data for the app to use during development -
app/wwww: static files (e.g. CSS, JavaScript) for the app
-
-
man/: documentation files for the package, generated by{roxygen2} -
tests/: unit tests for the package, written with{testthat}
The directories not included in the package (i.e. listed in .Rbuildignore) but used for deployment and data preprocessing:
-
data-raw/test_db: the source data for generating the test data -
data/test_data: test data parquet files mimicking what real data would look like to run the app in production -
dev/: contains scripts and helper functions for development -
deploy/: contains Docker files and scripts for deployment -
renv/: contains therenvlibrary, managed by{renv} -
scripts/: contains scripts for data preprocessing and generating the test and development data