Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Shiny Web Applications Part 2
Welcome to Shiny Web Applications Part 2!
Become a Shiny Developer - Your Journey Awaits! (2:44)
Disclaimer - Costs - AWS EC2, Rstudio Shiny Server, & MongoDB Atlas
Private Slack Channel - How to Join
Video Subtitles (Captions)
Course Certificate
Would You Like To Become An Affiliate (And Earn 20% On Your Sales)?
Prerequisites
Prerequisite - Shiny Web Applications Part 1
Getting Help
Getting Help (IMPORTANT!!!)
End-to-End Course Project - Stock Analyzer
Course Project - Monitor Stock Price Movements for Multiple Companies via Web App (1:46)
Tools In Our Toolbox
Resource #1: Ultimate R Cheat Sheet Version 2.1 (File Download) (6:30)
Resource #2: Shiny Cheat Sheet (3:40)
Resource #3: CSS & Google Chrome Inspector Refresher (3:42)
Shiny vs Flexdashboard
Why Use Shiny (vs Flexdashboard) to Build an App? (2:23)
Transitioning from Flexdashboard to Shiny - From Part 1 to Part 2 (3:42)
R & R Package Installation
[Optional] Install R (3:06)
[Optional] Install RStudio IDE (3:03)
[IMPORTANT] R Package Installation (File Download) (1:26)
Comparing Files - Identifying Differences Between My Code Checkpoints & Your Files - diffr Training
Resource #4: Comparing Differences in R Files - diffr Training (Project Download) (2:54)
Part 1 - Stock Analyzer Application - Shiny Jumpstart!
Welcome to Part 1: Stock Analyzer App - You're building this! (1:18)
Project Setup (0:55)
1.1 Stock Analyzer - App Workflow
Stock Analyzer - Financial Analysis Code Workflow for our App (1:31)
Setup (File Download) (5:48)
Get the S&P500 Stock List: tq_index() (6:22)
Extracting the Stock Symbol from the User Input (4:32)
Getting Historical Stock Prices from a Stock Symbol: tq_get() (10:18)
Modularizing Collection of the Stock Prices (4:54)
Plotting the Stock Price Time Series Interactively (5:59)
Modularizing the Stock Time Series Plot (1:47)
Fix Issue: gather(factor_key = TRUE) (1:34)
Automating Analyst Commentary (9:14)
Modularlizing the Analyst Commentary Code (2:23)
Testing Our Workflow (2:45)
Saving our Workflow Scripts (3:11)
Code Checkpoint (File Download)
1.2 Stock Analyzer - Creating the Layout with Shiny
Creating the Stock Analyzer Layout (0:47)
Setup (File Download) (1:30)
The 3 Components of a Shiny App (5:02)
Making the Header of our Web App (5:48)
Adding the Main Application UI Section (7:34)
Generating the S&P500 Stock List Dropdown (7:32)
Adding the "Analyze" Button to our UI (1:51)
Inserting the Interactive Time Series Plot into our UI (5:07)
Adding the Analyst Commentary (5:24)
Code Checkpoint (File Download)
1.3 Stock Analyzer - Adding Server Functionality
Stock Analyzer - Adding Server Functionality (0:35)
Setup (File Download) (0:47)
Reactively Extract Symbol - On Button Click (6:26)
Reactively Generate the Plot Header - On Button Click (4:40)
Reactively Import Stock Data - On Symbol Extraction (5:24)
Reactively Render the Interactive Time Series Plot - On Stock Data Update (3:29)
Reactively Render the Analyst Commentary - On Stock Data Update + Action Button Event (4:52)
App Cleanup (3:10)
Code Checkpoint (File Download)
1.4 Challenge #1 - Add Moving Average Sliders to your Stock Analyzer
Challenge #1: Add Sliders to Adjust the Moving Averages (File Download) (1:19)
Solution #1: Add Sliders to Adjust the Moving Averages (File Download) (7:45)
1.5 Stock Analyzer App Checkpoint - Complete App Download
Stock Analyzer Checkpoint - Complete App Download
Part 2 - Front End Web Development for Shiny
Welcome to Part 2: Frontend Web Development For Shiny Developers! (1:05)
2.0 Bootstrap for Shiny Developers
Module 2 - Bootstrap Cheat Sheet - What You're Building! (5:00)
2.1 Shiny App Setup & Bootstrap Documentation
app.R - Shiny's "Special" app.R file (7:49)
www - Shiny's "Special" Folder for Images, CSS, & JavaScript (File Download) (1:28)
2.2 Bootstrap Documentation
Resource #5: Bootstrap 3 Documentation (6:31)
2.3 Bootstrap Containers
Fluid Page (6:07)
Containers - Fluid vs Fixed (5:46)
Aside on Staying Organized - Outlining the Cheat Sheet (1:58)
2.4 Bootstrap Web App Setup - Headers & Lead Paragraphs
Page Headers (7:18)
Lead Paragraph (2:12)
Adding Hyperlinks (2:48)
Cleanup & Review (0:26)
2.5 Bootstrap Fundamentals - Grid System
Grid System 1 - Setup (2:59)
Grid System 2 - Rows & Columns (6:22)
Grid System 3 - Responsive (Mobile-First) Design (1:00)
Grid System 4 - Adding a Row (3:31)
Code Checkpoint (File Download)
2.6 Bootstrap Fundamentals - Text, Alignment, & Lists
Text Basics 1 - Setup (3:22)
Text Basics 2 - Adding Bold, Italics (5:57)
Text Basics 3 - Highlight & Code (4:50)
Text Basics 4 - Blockquote (7:49)
Text Alignment 1 - Left, Center, Right (5:12)
Text Alignment 2 - Using Columns To Align On A Single Row (4:34)
Lists - Ordered (Numbered) & Unordered (Bulleted) (4:01)
Code Checkpoint (File Download)
2.7 Boostrap Fundamentals - Colors, Buttons, Images, & Thumbnails
Contextual Colors - Default, Primary, Info, Success, Warning, Danger (6:04)
Buttons - From Links (9:01)
Shiny Buttons - Action Button (6:24)
Shiny Buttons - Adding Server Functionality (A Counter) (7:26)
Images 1 - Responsive Images (6:18)
Images 2 - Formatting Images (4:01)
Thumbnails - Intro to Components (9:24)
Code Checkpoint (File Download)
2.8 Bootstrap Components - Navigation
Navbars 1 - Creating a Bootstrap Navbar with navbarPage() (7:19)
Navbars 2 - Adding Tabs with tabPanel() (5:40)
Navbars 3 - Adding a Dropdown with navbarMenu() (3:52)
Tabsets - tabsetPanel() (6:14)
Navlists (Stacked Tabsets) - navlistPanel() (4:56)
Sidebar Layout - sidebarLayout() (8:54)
Code Checkpoint (File Download)
2.9 Bootstrap Components - Jumbotrons & Panels
Jumbotron 1 - Using the Jumbotron Class (4:56)
Jumbotron 2 - Customizing the Jumbotron (6:49)
Panels & Cards 1 - Using the Panel Class (4:35)
Panels & Cards 2 - Adding an Interactive Plot (4:39)
Panels & Cards 3 - Customizing Appearance with Contextual Colors & CSS (4:20)
Code Checkpoint (File Download)
2.10 CSS, Bootstrap Themes & Mobile-Friendly Development
Mobile Development - Hiding & Showing UI by Screen Size (7:14)
CSS 1 - Working with Bootswatch Themes (via shinythemes) (5:31)
CSS 2 - Sketchy - Using A Custom Bootstrap Theme (Download Available) (3:03)
CSS 3 - Adding Custom CSS to Your App! (3:55)
CSS 4 - Back to Flatly Theme (0:44)
Code Checkpoint (File Download)
2.11 JavaScript & ShinyJS
Intro to ShinyJS: Building A Retractable User Input Form (1:25)
Resource #6: ShinyJS Documentation (4:20)
Adding ShinyJS to Your App (4:43)
Creating the User Input Form (6:12)
Creating the Alert (2:50)
Hiding the Form: hidden() (1:49)
Showing/Hiding the Form: toggle() (4:21)
Disabling the Submit Button Until We Are Ready: toggleState() (6:33)
Creating A New User on Submit (4:23)
Success! Alerting Your User that the Submission Worked (4:48)
Code Checkpoint (File Download)
2.12 Table of Contents
Adding a Table of Contents with Links to Section ID's (7:57)
Code Checkpoint (File Download)
2.13 Bootstrap Cheatsheet - Complete App Download
App Checkpoint - Bootstrap Cheat Sheet (Complete App Download)
3.0 Upgrading the Stock Analyzer - Adding Bootsrap, CSS, & ShinyJS
Module 3 - Upgrading the Stock Analyzer - Adding Bootstrap, CSS & ShinyJS (0:53)
Setup (1:43)
3.1 Upgrading the Stock Analyzer - Adding Bootsrap, CSS, & ShinyJS
Adding the Bootstrap Navbar (3:14)
Adding CSS Themes with shinythemes (3:12)
Adding Structure to Our App with Containers (3:00)
Header Section - Adding page-header & lead classes (3:59)
UI Section - Adding Structure with Containers & ID's (5:17)
UI Section - Adding a Settings Toggle Button (2:30)
Plot Section - Adding the Panel Class (2:27)
Custom CSS - Modifying the Panel Class Padding (7:17)
Commentary Section - Adding the Panel Class (2:39)
Front End Web Development - What did Bootstrap do for your Stock Analyzer App? (1:44)
Code Checkpoint (File Download)
3.2 Challenge #2 - Toggling the Moving Average Setting Visibility
Challenge #2 - Toggle the Moving Average Setting Visibility (File Download) (1:29)
Challenge #2 Solution (File Download) (5:06)
4.0 Custom UI Training
Module 4 - Creating Custom Shiny UI Functions (1:22)
Setup (File Download) (4:19)
4.1 Custom UI Training
Jumbotron - Developing the Jumbotron Component (8:49)
Jumbotron - Finishing the Jumbotron Component & Investigating Bootswatch Themes (5:33)
Jumbotron - Making the Jumbotron Function, Part 1 (7:52)
Jumbotron - Making the Jumbotron Function, Part 2 (5:56)
Info Card - Developing the Info Card Component (8:08)
Info Card - Making the Info Card Function (8:49)
Code Checkpoint (File Download)
4.2 Challenge #3 - Making a Thumbnail Function
Thumbnail Challenge - Making a thumbnail() Function (File Download) (4:20)
Thumbnail Solution - Making a thumnail() Function (File Download) (5:40)
4.3 Custom UI Training Checkpoint - App Download
Complete App Download - Custom UI Training
5.0 Stock Analyzer - Adding Our Custom Info Cards!
Module 5 - Adding the Favorites Section to our Stock Analyzer App! (1:00)
Setup (File Download) (2:29)
5.1 Custom Info Cards
Layout - Adding a Favorite Card Section to the App Structure (4:47)
Info Card - Adding the Info Card in the Favorites Section (3:17)
Info Card - Adding A Second Info Card (2:25)
Mobile - Hiding the Favorites Section on Mobile Screen Sizes (1:43)
Code Checkpoint (File Download)
5.2 Stock Analyzer - Custom Info Cards - App Download
App Checkpoint - Stock Analyzer (Complete App Download)
Part 3 - Back End Web Development for Shiny
Shiny Backend Development (0:54)
6.0 Dynamic UI Training
Module 6 - Dynamic UI Training (0:54)
Setup (File Download) (3:41)
6.1 Intro to Rendering UI
UI - Creating the Front End Layout & Controls for the Single Card Example (8:04)
Server - Adding an eventReactive() to Store the User Input (5:33)
Server - Rending the Card Changes Dynamically with renderUI() (2:44)
Server - Changing the Card Arrows & Colors Dynamically (3:31)
Code Checkpoint (File Download)
6.2 Dynamic UI - Storing User Input
UI - Setting Up the Multi-Card User Interface (10:11)
Storing User Input 1 - Initializing Data Storage with reactiveValues() (2:32)
Storing User Input 2 - Storing User Updates with observeEvent() (5:36)
Storing User Input 3 - Debugging Input Storage - renderPrint() & verbatimTextOutput() (3:12)
Pro Tip - Prevent Duplicates with distinct() (1:38)
6.3 Adding UI Dynamically
Tag List - Combine Multiple UI with tagList() (4:55)
Preparing for Iteration - Splitting the Tibble Row-Wise into an Iterable List (4:23)
Pro Tip - Maintain the Split Order using as_factor() (2:38)
Iterative UI Creation - Add Multiple UI Using map() (8:40)
6.4 Removing UI Dynamically
Removing UI - Rendering the Drop List Dynamically (5:16)
Removing UI - Connecting the Drop List & Drop Button to the Stored User Input (4:30)
Code Checkpoint (File Download)
6.5 Dynamic UI Training - Complete App Download
Dynamic UI - Complete App Download
7.0 Stock Analyzer - Enable Users to Dynamically Update Favorite Cards
Module 7 - Adding Dynamic Favorite Cards to the Stock Analyzer App (1:12)
Project Setup (File Download) (4:56)
7.1 Favorite Card Analysis
Favorite Card Analysis Goal (1:14)
Analysis Setup (File Download) (3:22)
Data Prep, Step 1 - Collecting Historical Stock Prices for Each of the Favorite Stocks (3:21)
Data Prep, Step 2 - Convert Stock Prices to Data Needed for the Favorite Cards (7:02)
Data Prep, Step 3 (Pro Tip) - Use Bind Rows to Get List Names into a Data Frame (1:29)
Map (Iteration) Workflow, Part 1 - Combining Steps 1 - 3 in a single map() Workflow! (6:05)
Map (Iteration) Workflow, Part 2 - Extending the map() Workflow with Steps 4 (Make Card) & 5 (tagList)! (6:52)
Modularizing Functions 1 - Single Card: generate_favorite_card() (1:40)
Modularizing Functions 2 - Multi-Card: generate_favorite_cards() (5:09)
Save the Generate Favorite Cards Functions with dump() (0:57)
Code Checkpoint (File Download)
7.2 Integrating Dynamic Cards - Add & Delete Functionality!
Integrating Dynamic Favorite Cards (0:47)
Setup (3:40)
UI - Adding the Action Buttons (7:18)
UI - Testing the Generate Favorite Cards Function (1:38)
Server - Setting Up Reactive Values to Track the User's Favorites (5:04)
Server - Adding New Favorites to the Favorites List (6:06)
Server - Rendering New Favorite Cards (6:00)
Modal 1 - Creating the Modal with modalDialog() (6:16)
Modal 2 - Adding UI (Buttons & Dropdowns) to the Modal (5:25)
Modal 3 - Deleting a Single Favorite Card (6:09)
Code Checkpoint (File Download)
7.3 Challenge #4 - Dynamic UI - Adding "Clear All" & "Show/Hide Favorites"
Challenge #4 - Adding Clear All & Show Favorites Toggle (File Download) (1:23)
Solution (File Download) (8:36)
7.4 App Cleanup & Debugging
App Cleanup - Row + Container Discussion (3:21)
Testing & Debugging - Fixing an Issue with the "Clear Single" Button (3:02)
Code Checkpoint (File Download)
7.5 Stock Analyzer - Dynamic Favorite Cards - Complete App Download
App Download (File Download)
8.0 Stock Analyzer - Integrating a Dynamic Tabset
Module 8 - Adding Dynamic Tabs to Our Stock Analyzer (0:51)
Setup (File Download) (2:21)
8.1 Dynamic Tabset Panels
User Feedback - Collecting & Integrating Feedback from Beta Testers (1:40)
Moving the Plot Panel UI to the Server (4:12)
Building the tabsetPanel() (7:30)
Extracting the "Last Analysis" Tab Panel (2:45)
Problem - The tagList() doesn't work for generating Dynamic Navigation Panels (1:12)
Solution - Use do.call() to Programmatically make a tabsetPanel() (2:12)
do.call(), Part 1 - Creating the "Last Analysis" tabPanel() Argument (2:36)
do.call(), Part 2 - Adding the Favorites tabPanel() List with append() (2:47)
do.call(), Part 3 - Adding the Named Arguments (id & type) (5:59)
map() - Iteratively Building the Favorites tabPanel() List (6:54)
Code Checkpoint (File Download)
8.2 Control Reactive Flow with "Apply & Save" Button & App Cleanup
Making the Dynamic Tabs Caused A Few Issues - Let's Fix Them (1:34)
Apply & Save Button (1:46)
Controlling the Moving Average Reaction (5:53)
Controlling the Tab Selection (6:25)
Isolating the Chart Recalculation (2:54)
8.3 App Cleanup
App Cleanup (6:14)
Code Checkpoint (File Download)
8.4 Challenge #5: Creating a Panel Card Function
Challenge #5: Create a Panel Card Function (1:30)
Solution (8:36)
8.5 Stock Analyzer Checkpoint - Dynamic Tabs - Complete App Download
Stock Analyzer - Dynamic Tabs - App Download (Zip Available)
9.0 Authentication & Shiny Module Training
Module 9 - Shiny Authentication & Module Training! (1:22)
Setup (File Download) (5:20)
9.1 Introduction to Authentication
Making a User Login Form (8:55)
Rendering UI After Authentication (5:13)
Validating the User (5:38)
Code Checkpoint (File Download)
9.2 Introduction to Shiny Modules
When & Why To Use Shiny Modules (2:15)
Setting Up the Shiny Module (3:53)
Shiny Module - Login UI Function (5:10)
Shiny Module - Validate Password Server Function (4:47)
UI - Using the Modular UI Function (1:56)
Server - Calling the Modular Server Function - callModule() (5:11)
Modifying Our Module - Hiding the Login After Validation (3:27)
Recapping Shiny Modules (2:24)
Checkpoint (File Download)
9.3 Authentication with shinyauthr
Resource: shinyauthr (1:48)
Rendering a Webpage (2:16)
User Login Form - Adding shinyauthr::loginUI() (2:43)
Server Authentication 1 (4:24)
Server Authentication 2 (5:03)
Authentication - Rendering the App on Success (3:43)
Checkpoint (File Download)
9.4 Authentication & Module Training - Complete App Download
App Download
10.0 Stock Analyzer - Adding User Authentication & User Experience
Module 10 - Adding Authentication & User Experience to the Stock Analyzer (1:19)
Setup (File Download) (2:15)
10.1 User Login - with shinyauthr
Moving the Navbar Page to the Server (2:23)
Integrating the User Login Form: loginUI() (8:22)
User Authentication 1 - login module (5:04)
User Authentication 2 - login module (5:40)
Display the Web App (1:50)
Code Checkpoint (File Download)
10.2 User Experience - Customize the App based on the User Preferences
Adding User Experience to our Stock Analyzer (0:59)
Collecting User's Reactive Values, Part 1 - User Instantiation (5:56)
Collecting User's Reactive Values, Part 2 - Debugging (7:11)
User Experience - Welcome the User (3:58)
User Experience - Load the Last Analyzed Stock (2:01)
Debugging - Testing User 1 & Debugging Google Stock Prices (2:44)
App Cleanup (5:49)
Code Checkpoint (File Download)
10.3 Challenge #6 - Stock Analyzer User Settings
Challenge #6 - Stock Analyzer User Settings (File Download) (2:50)
Solution, Part 1 - Prep (File Download) (3:04)
Solution, Part 2 - Connect User's Moving Average Settings (8:15)
Solution, Part 3 - Add Time Window Setting (5:40)
10.4 Stock Analyzer Checkpoint - Complete App Download
Stock Analyzer - Complete App Download
[IMPORTANT] Database Training for Shiny App Developers
Database Training for Shiny App Developers (Download Available) (3:30)
What is a Database & How Does It Fit Into My Shiny App? (4:45)
Database Types - SQL vs NoSQL (10:23)
Core DB Players - Local File, SQLite, MySQL, & MongoDB (2:32)
What About AWS & Cloud Databases? (7:52)
Next Steps - Progression & Final Tech Stack (2:01)
[DEVELOPMENT VS PRODUCTION] Shiny Scalability in Production - Remote vs Local Storage
11.0 Stock Analyzer - Persistent Data Storage (Local) & CRUD Operations
Module 11 - Persistent Data Storage & CRUD Operations (0:50)
Setup, Part 1 - Download and Prepare Files (File Downloads) (2:38)
Setup, Part 2 - Connecting the RDS file to the App (2:30)
11.1 CRUD Operations & R Workflow
CRUD Operations Workflow & Double Assignment (3:20)
Update Operation, Part 1 - Updating the last_symbol (4:31)
Update Operations, Part 2 - Updating the User's favorites (2:41)
Update Operations, Part 3 - Updating the user_settings (5:36)
Modularize Database Functions, Part 1 - read_user_base() (3:47)
Modularize Database Functions, Part 2 - Double Assignment (1:44)
Modularize Database Functions, Part 3 - Update & Write (5:43)
Modularize Database Functions, Part 4 - Combining Update & Write into 1 Function (1:40)
Testing the Workflow (2:09)
Save Your Work (2:34)
Code Checkpoint - CRUD Workflow (File Download)
11.2 Integrating Persistent Data Storage Locally
Integrating Persistent Data Storage to Improve User Experience (3:45)
Read the User Base (2:30)
Write to the User Base, Part 1 - Analyze Button (9:37)
Write to the User Base, Part 2 - Apply & Save Button (8:28)
Write to the User Base, Part 3 - Adding Favorites (5:14)
Write to the User Base Part, 4 - Removing Favorites (3:59)
App Cleanup & Debug (4:32)
Code Checkpoint (File Download)
11.3 Stock Analyzer Checkpoint - Persistent Data - Complete App Download
Complete App Download
[IMPORTANT] MongoDB Atlas Setup for Shiny Developers
MongoDB Atlas Training - Creating an Account, Organization, and Project (3:09)
Atlas - Cluster Setup & Training (4:25)
Atlas - Whitelist IP Address & Connection Training (2:52)
12.0 Stock Analyzer - Cloud Database (Remote Storage)
Resource - Mongolite User Manual (3:57)
Setup (File Download) (3:19)
12.1 Mongolite Training, Part 1 - Main Functions & Operations
Configuration File - YAML (4:49)
Connecting to MongoDB Atlas: mongo() (9:12)
Adding Data: Insert (3:04)
Query Data: Find (5:29)
Mongolite User Manual: Query Data (1:55)
Manipulate Data: Insert (3:39)
[PRO-TIP] Querying JSON - How to Easily Find a Record (3:38)
Manipulate Data: Update (6:26)
Manipulate Data: Remove & Drop (2:08)
Disconnecting from the Database (1:00)
Mongolite User Manual: Manipulate Data (1:13)
Code Checkpoint (File Download)
12.2 Mongolite Training, Part 2 - Stock Analyzer CRUD Operations
Nested Data Structures & Their Relationship to JSON (4:36)
Sending & Receiving Nested Data Structures (3:10)
CRUD Workflow Setup (2:25)
CRUD Read Function: mongo_read_user_base() (8:28)
Simulating shinyauthr::login() (1:50)
CRUD Update Function, Part 1: mongo_update_and_write_user_base() (7:06)
CRUD Update Function, Part 2: Query Parameter (4:02)
CRUD Update Function, Part 3: Update Parameter (9:15)
CRUD Update Function, Part 4: Disconnect & Test (5:12)
Save the CRUD Functions (1:51)
Code Checkpoint (File Download)
13.0 Stock Analyzer - MongoDB Atlas Integration
Setup (File Download) (2:49)
13.1 Integrating the CRUD Operations into Your Stock Analyzer App
Integrate the Config Parameters (2:18)
Integrate CRUD Read: mongo_read_user_base() (2:34)
Integrate CRUD Update, Part 1: mongo_update_and_write_user_base() (1:25)
Integrate CRUD Update, Part2: Debugging the MongoDB CRUD Functions (7:26)
Testing the App CRUD Operations (3:20)
Code Checkpoint
13.2 Complete App Download
Complete App Download
Part 4 - Production with AWS
Welcome to Production with AWS (1:19)
[Shiny Scalability] Managing Concurrent Users - Local (RDS) vs Remote (MongoDB) Storage (5:37)
[BOOK AVAILABLE] Shiny Developer with AWS Guide
Student Identified Issues & Troubleshooting
14.1 AWS Server Setup
Cheat Sheet 01 - AWS EC2 Server Setup (Download) (1:05)
EC2 Server Overview (5:13)
Setup & Launch an EC2 Server (10:55)
14.2 Billing Alerts
Cheat Sheet 02 - Cost & Billing Management (Download) (0:35)
Cost Management - Setting a Budget (7:38)
14.3 SSH - Connecting to the EC2 Server
Cheat Sheet 03 - SSH (Download) (1:45)
SSH Overview - Connecting to our EC2 Instance (1:11)
Windows Users - SSH with Putty (7:23)
Mac & Linux Users - SSH with Terminal (6:45)
Mac & Linux Users - Create .ppk File with Putty (2:25)
Upgrade Ubuntu Server Software (3:49)
14.4 LINUX Command Line - Navigating the Ubuntu Server via the Shell
Cheat Sheet 04 - Shell Ubuntu (Linux) Commands (Download) (1:20)
Navigation Commands: pwd, cd, and ls (3:28)
Help Documentation & Options: --help (7:52)
tree - Getting Directory Structure (3:09)
snap - Ubuntu's Package Manager for Installing Ubuntu Software (3:18)
exit - Disconnecting from Your AWS EC2 Server (0:23)
Shell Wrap-Up (0:50)
15.1 Docker Overview & Command Line Interface (CLI)
Cheat Sheet 05 - Docker CLI (File Download) (1:51)
What is Docker? (5:07)
Docker Installation (1:55)
Docker Help (6:20)
15.2 DockerHub
Cheat Sheet 06 - Docker Hub (File Download) (2:10)
DockerHub Account Setup (3:29)
Docker CLI - Login to DockerHub (2:13)
Docker CLI - Search (4:36)
Docker CLI - Pull an Image from DockerHub (4:11)
Rocker Project (2:07)
Wrapup (0:25)
15.3 Docker Containers
Cheat Sheet 07 - Docker Container (File Download) (4:04)
Docker CLI - Run (docker container run) (3:07)
Running Shiny Server - rocker/shiny-verse (6:59)
Running RStudio Server (RStudio IDE) - rocker/tidyverse (7:13)
Docker CLI - Detached Mode (-d) (2:41)
Docker CLI - Linked Volume (-v) - Part 1 (6:31)
Docker CLI - Linked Volume (-v) - Part 2 (7:22)
Docker Deployment Workflow (10:24)
Wrapup (1:20)
Bonus - Changing RStudio User Name (for Login) (4:47)
15.4 Docker Images
Cheat Sheet 08 - Docker Images (File Download) (3:52)
Dockerfile (7:54)
Docker CLI - Build an Image (build) (5:59)
DockerHub Preparation - Tagging the Image (tag) (3:20)
DockerHub - Pushing the Image (push) (3:10)
shinyauth Dockerfile (8:57)
DockerHub - Pulling the mdancho/shinyauth Image & Cleaning Up Our Image List (3:07)
16.1 GitHub Overview & Command Line Interface (CLI)
Application Setup (App Download) (7:58)
Cheat Sheet 09 - Git CLI (File Download) (1:03)
What is Git? (5:56)
Installation (1:59)
Git Command Workflow (2:50)
Git CLI - Common Commands (2:28)
16.2 GitHub
Cheat Sheet 10 - GitHub (File Download) (2:27)
Local Repository Setup - RStudio Git Integration (4:05)
Remote Repository Setup - Linking to GitHub to Local Repo (4:13)
16.3 Cloning Your Remote Repo onto EC2 Server
Cheat Sheet 11 - Git Clone (for EC2 Server) (0:49)
What is Cloning a Remote? (1:36)
Cloning Your Remote Repo on Your EC2 Server (5:17)
Running Your Test App on EC2 (7:42)
Shut Down & Log Files (2:02)
Wrapup (1:09)
16.4 App Change Management Workflow - Simple / No Branches
Cheat Sheet 12 - Managing App Changes (File Download) (3:36)
Making an App Change - Modifying Local & Remote Repos (6:56)
Making an App Change - Pulling the Change to Your EC2 Server (2:46)
Reverting the Change - Reset Your Local Repo (4:09)
Reverting the Change - Resetting the Remote (2:19)
Reverting the Change - Resetting Your EC2 App (3:37)
16.5 App Change Management Workflow - Complex / Using Branches
Making Changes in Production with a Review (4:21)
Making a Branch - Local (4:45)
Pushing the Branch - Remote (1:21)
Creating the Pull Request - Remote (2:31)
Merge the Pull Request - Remote (4:04)
Clean Up Branches - Local (3:57)
Pull Changes to Production - EC2 Server (2:42)
Wrapup (1:08)
17.1 Shiny Server - App Hosting Model
Cheat Sheet 13 - Shiny Server on AWS with Docker (File Download) (3:43)
AWS Preparation - Add HTTP Rule (5:38)
Testing HTTP Port 80 (7:06)
The Shiny Server Hosting Model (4:14)
Interactive Exploration of the Shiny Server Hosting Model (10:08)
Launching Shiny Apps with Docker (on Port 80) (9:30)
Hosting Multiple Apps (Linked Directory Method) (9:46)
Additional Hosting Methods (3:17)
Troubleshooting Common App Issues (8:47)
Wrapup (2:26)
18.1 Database Connection, Permissions, & Elastic IP
Cheat Sheet 14 -Database Connection & Permission (File Download) (1:01)
Permissions - Local Database (4:23)
Permissions - MongoDB Atlas (7:26)
Elastic IP Address - AWS Setup & MongoDB Networking (5:16)
Elastic IP Address - Update SSH Connection (Putty / Terminal) (1:27)
Wrapup (0:48)
18.2 Branded URLs - Domain & Subdomain w/ Cloudflare
Cheat Sheet 15 - Domain Setup & SSL Certificates (File Download) (3:00)
Pre-Requisites & Definitions (6:53)
Acquiring a Domain (3:46)
Cloudflare - Domain Name Services (DNS) (3:01)
Cloudflare - Setup Your Site (3:14)
Cloudflare - Subdomain Setup (4:02)
Cloudflare - Create SSL Certificates (4:53)
Wrapup (1:36)
18.3 HTTPS & SSL Encryption - NGINX & Docker Compose
Cheat Sheet 16 - HTTPS with NGINX & Docker Compose (File Download) (3:47)
NGINX Webserver (4:06)
Docker Compose (6:19)
Step 1 - AWS EC2 - Open Port 443 (HTTPS) (1:18)
Step 2 - FileZilla - Transfer SSL Certificates to EC2 (5:21)
Step 3 - RStudio IDE - Setup as Text Editor (1:57)
Step 4 - NGINX - Setup Configuration File (6:01)
Step 5 - Docker Compose - Setup YAML File (5:10)
Step 6 - Docker Compose - docker compose up (3:19)
Step 7 - Test App & Run in Detached Mode (4:05)
Wrapup (2:32)
19.0 Final Project - Application Library
Your Final Project: Application Library with Full-Text Search (0:44)
19.1 EC2 - Shiny Server Configuration
Cheat Sheet 17 - Application Library (File Download) (4:11)
Shiny Server - Default Configuration File (4:26)
Shiny Server - Custom Configuration File (4:16)
Docker Container - Apply Custom Shiny Server Configuration (5:51)
19.2 Application Library - app.R Setup
app.R Setup - Local (File Download) (5:03)
app.R Setup - EC2 Server (2:36)
19.3 UI - Frontend Development
Navbar - Custom Shiny Input Setup (10:44)
Navbar - Add Full-Text Search Inputs (2:19)
HTML HEAD - Change HTML Page's Title Meta Data (1:53)
App Outline & Theme (4:37)
App Library Contents - tabPanel() (3:34)
Brand Logo (3:23)
App Thumbnail Card, Part 1 - Bootswatch 3 (7:49)
App Thumbnail Card, Part 2 - Images (File Download) (2:52)
Publish Your App Changes! (3:07)
App Checkpoint 1 - Frontend Development (File Download)
19.4 Dynamic UI - Card Iteration
App Card Iteration Plan (2:10)
Tag Iteration: make_tags() (9:53)
Card Iteration: make_cards() (10:32)
Publish Your App Changes! (2:57)
App Checkpoint 2 - Iteration (File Download)
19.5 Server - Full-Text Search & Tag Filtering Logic
Full Text Search Game Plan (1:19)
Tag Filters - Update Radio Group Button Choices (3:08)
Theme - Organize Button Colors (6:34)
Full-Text Search - Search Button Logic (9:15)
Full-Text Search - Clear Button Logic (3:57)
Tag Search - Filter Logic (7:42)
Logic Cleanup (3:20)
Publish Your Work (3:00)
App Cleanup - Container Padding (3:43)
Congrats! You've just completed your Final Project :) (1:03)
App Checkpoint 3 - Full-Text Search & Tag Filtering (File Download)
App Bugfix
Congrats! Certificate - Get it, Post it, Tag Matt!
Congratulations!!! (1:15)
User Login Form - Adding shinyauthr::loginUI()
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock