Regarding the guide to shiny apps I came across wonderful rintrojs package which allows you to build in descriptions of your widgets within shiny apps. You can find the description here https://carlganz.github.io/rintrojs/
rm(list = ls())
library(shiny)
library(shinyjs)
library(rintrojs)
ui <- fluidPage(
  useShinyjs(),
  introjsUI(),
  introBox(actionButton("hide","a"),data.step = 1,data.intro = "By Clicking this button the other one will dissapear"),
  introBox(actionButton("b","b"),data.step = 2,data.intro = "Toggle this button"),br(),
  bsButton("help", label = "About this Page", block = F,style = "primary",icon =icon("question-circle"))
)
server <- shinyServer(function(input,output,session){
  observeEvent(input$help,introjs(session, options = list("showBullets"="false", "showProgress"="true", "showStepNumbers"="false","nextLabel"="Next","prevLabel"="Prev","skipLabel"="Skip")))
  observeEvent(input$hide,{
    toggle("b")
  })
})
runApp(list(ui = ui, server = server))
