Shiny Web Applications Part 2
Learn how to build Scalable Data Science Applications using R, Shiny, and AWS Cloud Technology.
Enroll in Course
Become an Expert Shiny Developer with AWS
Shiny Developer with AWS Course is an amazing course designed to teach Data Scientists and Programmers how to develop applications and deploy into production! You'll undergo a complete transformation learning the most in-demand skills that organizations need right now. Time to accelerate your career!
Discover What's Inside the Expert Shiny Developer with AWS Course
Crafted For Data Scientists and Programmers
That need to deploy shiny
apps into production using a full-stack application deployment process
Everything You Need to Become the R Shiny Expert Level 2 for Your Organization
434 Lessons, 35.1 Hours of Video, and 6 Challenges to Test Your Skills
Undergo a Complete Transformation
By Learning An End-To-End Development Process
With Expert Shiny Developer, you will undergo a complete transformation by learning the most in-demand skills for building complex web applications and distributing data science within an organization.
You will build a Web Application that combines tidyquant, MongoDB Atlas, Shiny Server, and Amazon EC2.
To complete the project, you will need to learn:
- Front end web development:
Shiny
&Bootstrap
, - Backend server development
Shiny
&MongoDB
- Deployment using
AWS
,Docker
,Git
, &NGINX
A Project-Based Course
Learn By Building A Real-World Application
This is a project-based course, and here’s the scenario. You are developing a financial application that enables multiple users to track various companies and their historical stock price movements. To complete this project, you will need to undergo a complete transformation by learning an end-to-end development process.
Empowering data scientists to complete the last mile... Production
Get started now!
How it works
Your path to become an amazing Shiny Developer is simplified into 4 streamlined steps.
Part 1
Shiny Jumpstart
First, we jumpstart your shiny development skills. You learn:
- App Workflow: Design the financial analysis workflow
- UI Layout: Develop the basic user interface layout
- Server Functionality: Add server functionality to dynamically perform the financial analysis
Part 2
Learn Front End Development for Shiny
Next, you learn Front End Web Development for Shiny.
- Bootstrap: Integrate bootstrap grid system, containers, and components - including navbars, panels, thumbnails, and more!
- ShinyJS: Perform common javascript actions like hiding and unhiding parts of your web application.
Part 3
Learn Backend Development for Shiny
You learn Backend Web Development for Shiny.
- Dynamic UI: Let Users control the look and appearance of your application.
- Authentication and User Management: Provide a secure and customized user experience.
- Persistent Data Storage: Connect your application to a NoSQL cloud database powered by the MongoDB Atlas cloud database service.
Part 4
Deploy your application with AWS
You learn how to take your application into Production with AWS
, Docker
, Git
, Shiny Server
, and NGINX
:
- AWS EC2: Launch your app on Amazon EC2
- Docker: Use docker to control the software environment in deployment
- Git: Manage the entire software deployment workflow
- Shiny Server: Manage the shiny hosting configuration
- NGINX: Add SSL Security and HTTPS to encrypt communication during login
Summary of what you get
- A methodical training plan that goes from concept to production ($10,000 value)
- Part 1 - Shiny Jumpstart
- Part 2 - Frontend Web Development - Shiny + Bootstrap
- Part 3 - Backend Development - User Authentication, Dynamic UI, & NoSQL User Database with MongoDB Atlas Cloud
- Part 4 - Production - AWS + Docker + Git + Shiny Server + NGINX
$10,000 Value
Purchase today for: 👇
*Price excludes local taxes & VAT
Get started now!
Your Instructor
Founder of Business Science and general business & finance guru, He has worked with many clients from Fortune 500 to high-octane startups! Matt loves educating data scientists on how to apply powerful tools within their organization to yield ROI. Matt doesn't rest until he gets results (literally, he doesn't sleep so don't be suprised if he responds to your email at 4AM)!
Course Curriculum
-
PreviewBecome a Shiny Developer - Your Journey Awaits! (2:44)
-
PreviewDisclaimer - Costs - AWS EC2, Rstudio Shiny Server, & MongoDB Atlas
-
StartPrivate Slack Channel - How to Join
-
StartVideo Subtitles (Captions)
-
StartCourse Certificate
-
StartWould You Like To Become An Affiliate (And Earn 20% On Your Sales)?
-
StartStock Analyzer - Financial Analysis Code Workflow for our App (1:31)
-
StartSetup (File Download) (5:48)
-
StartGet the S&P500 Stock List: tq_index() (6:22)
-
StartExtracting the Stock Symbol from the User Input (4:32)
-
StartGetting Historical Stock Prices from a Stock Symbol: tq_get() (10:18)
-
StartModularizing Collection of the Stock Prices (4:54)
-
StartPlotting the Stock Price Time Series Interactively (5:59)
-
StartModularizing the Stock Time Series Plot (1:47)
-
StartFix Issue: gather(factor_key = TRUE) (1:34)
-
StartAutomating Analyst Commentary (9:14)
-
StartModularlizing the Analyst Commentary Code (2:23)
-
StartTesting Our Workflow (2:45)
-
StartSaving our Workflow Scripts (3:11)
-
StartCode Checkpoint (File Download)
-
StartCreating the Stock Analyzer Layout (0:47)
-
StartSetup (File Download) (1:30)
-
StartThe 3 Components of a Shiny App (5:02)
-
StartMaking the Header of our Web App (5:48)
-
StartAdding the Main Application UI Section (7:34)
-
StartGenerating the S&P500 Stock List Dropdown (7:32)
-
StartAdding the "Analyze" Button to our UI (1:51)
-
StartInserting the Interactive Time Series Plot into our UI (5:07)
-
StartAdding the Analyst Commentary (5:24)
-
StartCode Checkpoint (File Download)
-
StartStock Analyzer - Adding Server Functionality (0:35)
-
StartSetup (File Download) (0:47)
-
StartReactively Extract Symbol - On Button Click (6:26)
-
StartReactively Generate the Plot Header - On Button Click (4:40)
-
StartReactively Import Stock Data - On Symbol Extraction (5:24)
-
StartReactively Render the Interactive Time Series Plot - On Stock Data Update (3:29)
-
StartReactively Render the Analyst Commentary - On Stock Data Update + Action Button Event (4:52)
-
StartApp Cleanup (3:10)
-
StartCode Checkpoint (File Download)
-
StartText Basics 1 - Setup (3:22)
-
StartText Basics 2 - Adding Bold, Italics (5:57)
-
StartText Basics 3 - Highlight & Code (4:50)
-
StartText Basics 4 - Blockquote (7:49)
-
StartText Alignment 1 - Left, Center, Right (5:12)
-
StartText Alignment 2 - Using Columns To Align On A Single Row (4:34)
-
StartLists - Ordered (Numbered) & Unordered (Bulleted) (4:01)
-
StartCode Checkpoint (File Download)
-
StartContextual Colors - Default, Primary, Info, Success, Warning, Danger (6:04)
-
StartButtons - From Links (9:01)
-
StartShiny Buttons - Action Button (6:24)
-
StartShiny Buttons - Adding Server Functionality (A Counter) (7:26)
-
StartImages 1 - Responsive Images (6:18)
-
StartImages 2 - Formatting Images (4:01)
-
StartThumbnails - Intro to Components (9:24)
-
StartCode Checkpoint (File Download)
-
StartNavbars 1 - Creating a Bootstrap Navbar with navbarPage() (7:19)
-
StartNavbars 2 - Adding Tabs with tabPanel() (5:40)
-
StartNavbars 3 - Adding a Dropdown with navbarMenu() (3:52)
-
StartTabsets - tabsetPanel() (6:14)
-
StartNavlists (Stacked Tabsets) - navlistPanel() (4:56)
-
StartSidebar Layout - sidebarLayout() (8:54)
-
StartCode Checkpoint (File Download)
-
StartJumbotron 1 - Using the Jumbotron Class (4:56)
-
StartJumbotron 2 - Customizing the Jumbotron (6:49)
-
StartPanels & Cards 1 - Using the Panel Class (4:35)
-
StartPanels & Cards 2 - Adding an Interactive Plot (4:39)
-
StartPanels & Cards 3 - Customizing Appearance with Contextual Colors & CSS (4:20)
-
StartCode Checkpoint (File Download)
-
StartMobile Development - Hiding & Showing UI by Screen Size (7:14)
-
StartCSS 1 - Working with Bootswatch Themes (via shinythemes) (5:31)
-
StartCSS 2 - Sketchy - Using A Custom Bootstrap Theme (Download Available) (3:03)
-
StartCSS 3 - Adding Custom CSS to Your App! (3:55)
-
StartCSS 4 - Back to Flatly Theme (0:44)
-
StartCode Checkpoint (File Download)
-
StartIntro to ShinyJS: Building A Retractable User Input Form (1:25)
-
StartResource #6: ShinyJS Documentation (4:20)
-
StartAdding ShinyJS to Your App (4:43)
-
StartCreating the User Input Form (6:12)
-
StartCreating the Alert (2:50)
-
StartHiding the Form: hidden() (1:49)
-
StartShowing/Hiding the Form: toggle() (4:21)
-
StartDisabling the Submit Button Until We Are Ready: toggleState() (6:33)
-
StartCreating A New User on Submit (4:23)
-
StartSuccess! Alerting Your User that the Submission Worked (4:48)
-
StartCode Checkpoint (File Download)
-
StartAdding the Bootstrap Navbar (3:14)
-
StartAdding CSS Themes with shinythemes (3:12)
-
StartAdding Structure to Our App with Containers (3:00)
-
StartHeader Section - Adding page-header & lead classes (3:59)
-
StartUI Section - Adding Structure with Containers & ID's (5:17)
-
StartUI Section - Adding a Settings Toggle Button (2:30)
-
StartPlot Section - Adding the Panel Class (2:27)
-
StartCustom CSS - Modifying the Panel Class Padding (7:17)
-
StartCommentary Section - Adding the Panel Class (2:39)
-
StartFront End Web Development - What did Bootstrap do for your Stock Analyzer App? (1:44)
-
StartCode Checkpoint (File Download)
-
StartJumbotron - Developing the Jumbotron Component (8:49)
-
StartJumbotron - Finishing the Jumbotron Component & Investigating Bootswatch Themes (5:33)
-
StartJumbotron - Making the Jumbotron Function, Part 1 (7:52)
-
StartJumbotron - Making the Jumbotron Function, Part 2 (5:56)
-
StartInfo Card - Developing the Info Card Component (8:08)
-
StartInfo Card - Making the Info Card Function (8:49)
-
StartCode Checkpoint (File Download)
-
StartLayout - Adding a Favorite Card Section to the App Structure (4:47)
-
StartInfo Card - Adding the Info Card in the Favorites Section (3:17)
-
StartInfo Card - Adding A Second Info Card (2:25)
-
StartMobile - Hiding the Favorites Section on Mobile Screen Sizes (1:43)
-
StartCode Checkpoint (File Download)
-
StartUI - Creating the Front End Layout & Controls for the Single Card Example (8:04)
-
StartServer - Adding an eventReactive() to Store the User Input (5:33)
-
StartServer - Rending the Card Changes Dynamically with renderUI() (2:44)
-
StartServer - Changing the Card Arrows & Colors Dynamically (3:31)
-
StartCode Checkpoint (File Download)
-
StartUI - Setting Up the Multi-Card User Interface (10:11)
-
StartStoring User Input 1 - Initializing Data Storage with reactiveValues() (2:32)
-
StartStoring User Input 2 - Storing User Updates with observeEvent() (5:36)
-
StartStoring User Input 3 - Debugging Input Storage - renderPrint() & verbatimTextOutput() (3:12)
-
StartPro Tip - Prevent Duplicates with distinct() (1:38)
-
StartFavorite Card Analysis Goal (1:14)
-
StartAnalysis Setup (File Download) (3:22)
-
StartData Prep, Step 1 - Collecting Historical Stock Prices for Each of the Favorite Stocks (3:21)
-
StartData Prep, Step 2 - Convert Stock Prices to Data Needed for the Favorite Cards (7:02)
-
StartData Prep, Step 3 (Pro Tip) - Use Bind Rows to Get List Names into a Data Frame (1:29)
-
StartMap (Iteration) Workflow, Part 1 - Combining Steps 1 - 3 in a single map() Workflow! (6:05)
-
StartMap (Iteration) Workflow, Part 2 - Extending the map() Workflow with Steps 4 (Make Card) & 5 (tagList)! (6:52)
-
StartModularizing Functions 1 - Single Card: generate_favorite_card() (1:40)
-
StartModularizing Functions 2 - Multi-Card: generate_favorite_cards() (5:09)
-
StartSave the Generate Favorite Cards Functions with dump() (0:57)
-
StartCode Checkpoint (File Download)
-
StartIntegrating Dynamic Favorite Cards (0:47)
-
StartSetup (3:40)
-
StartUI - Adding the Action Buttons (7:18)
-
StartUI - Testing the Generate Favorite Cards Function (1:38)
-
StartServer - Setting Up Reactive Values to Track the User's Favorites (5:04)
-
StartServer - Adding New Favorites to the Favorites List (6:06)
-
StartServer - Rendering New Favorite Cards (6:00)
-
StartModal 1 - Creating the Modal with modalDialog() (6:16)
-
StartModal 2 - Adding UI (Buttons & Dropdowns) to the Modal (5:25)
-
StartModal 3 - Deleting a Single Favorite Card (6:09)
-
StartCode Checkpoint (File Download)
-
StartUser Feedback - Collecting & Integrating Feedback from Beta Testers (1:40)
-
StartMoving the Plot Panel UI to the Server (4:12)
-
StartBuilding the tabsetPanel() (7:30)
-
StartExtracting the "Last Analysis" Tab Panel (2:45)
-
StartProblem - The tagList() doesn't work for generating Dynamic Navigation Panels (1:12)
-
StartSolution - Use do.call() to Programmatically make a tabsetPanel() (2:12)
-
Startdo.call(), Part 1 - Creating the "Last Analysis" tabPanel() Argument (2:36)
-
Startdo.call(), Part 2 - Adding the Favorites tabPanel() List with append() (2:47)
-
Startdo.call(), Part 3 - Adding the Named Arguments (id & type) (5:59)
-
Startmap() - Iteratively Building the Favorites tabPanel() List (6:54)
-
StartCode Checkpoint (File Download)
-
StartWhen & Why To Use Shiny Modules (2:15)
-
StartSetting Up the Shiny Module (3:53)
-
StartShiny Module - Login UI Function (5:10)
-
StartShiny Module - Validate Password Server Function (4:47)
-
StartUI - Using the Modular UI Function (1:56)
-
StartServer - Calling the Modular Server Function - callModule() (5:11)
-
StartModifying Our Module - Hiding the Login After Validation (3:27)
-
StartRecapping Shiny Modules (2:24)
-
StartCheckpoint (File Download)
-
StartAdding User Experience to our Stock Analyzer (0:59)
-
StartCollecting User's Reactive Values, Part 1 - User Instantiation (5:56)
-
StartCollecting User's Reactive Values, Part 2 - Debugging (7:11)
-
StartUser Experience - Welcome the User (3:58)
-
StartUser Experience - Load the Last Analyzed Stock (2:01)
-
StartDebugging - Testing User 1 & Debugging Google Stock Prices (2:44)
-
StartApp Cleanup (5:49)
-
StartCode Checkpoint (File Download)
-
StartDatabase Training for Shiny App Developers (Download Available) (3:30)
-
StartWhat is a Database & How Does It Fit Into My Shiny App? (4:45)
-
StartDatabase Types - SQL vs NoSQL (10:23)
-
StartCore DB Players - Local File, SQLite, MySQL, & MongoDB (2:32)
-
StartWhat About AWS & Cloud Databases? (7:52)
-
StartNext Steps - Progression & Final Tech Stack (2:01)
-
Start[DEVELOPMENT VS PRODUCTION] Shiny Scalability in Production - Remote vs Local Storage
-
StartCRUD Operations Workflow & Double Assignment (3:20)
-
StartUpdate Operation, Part 1 - Updating the last_symbol (4:31)
-
StartUpdate Operations, Part 2 - Updating the User's favorites (2:41)
-
StartUpdate Operations, Part 3 - Updating the user_settings (5:36)
-
StartModularize Database Functions, Part 1 - read_user_base() (3:47)
-
StartModularize Database Functions, Part 2 - Double Assignment (1:44)
-
StartModularize Database Functions, Part 3 - Update & Write (5:43)
-
StartModularize Database Functions, Part 4 - Combining Update & Write into 1 Function (1:40)
-
StartTesting the Workflow (2:09)
-
StartSave Your Work (2:34)
-
StartCode Checkpoint - CRUD Workflow (File Download)
-
StartIntegrating Persistent Data Storage to Improve User Experience (3:45)
-
StartRead the User Base (2:30)
-
StartWrite to the User Base, Part 1 - Analyze Button (9:37)
-
StartWrite to the User Base, Part 2 - Apply & Save Button (8:28)
-
StartWrite to the User Base, Part 3 - Adding Favorites (5:14)
-
StartWrite to the User Base Part, 4 - Removing Favorites (3:59)
-
StartApp Cleanup & Debug (4:32)
-
StartCode Checkpoint (File Download)
-
StartConfiguration File - YAML (4:49)
-
StartConnecting to MongoDB Atlas: mongo() (9:12)
-
StartAdding Data: Insert (3:04)
-
StartQuery Data: Find (5:29)
-
StartMongolite User Manual: Query Data (1:55)
-
StartManipulate Data: Insert (3:39)
-
Start[PRO-TIP] Querying JSON - How to Easily Find a Record (3:38)
-
StartManipulate Data: Update (6:26)
-
StartManipulate Data: Remove & Drop (2:08)
-
StartDisconnecting from the Database (1:00)
-
StartMongolite User Manual: Manipulate Data (1:13)
-
StartCode Checkpoint (File Download)
-
StartNested Data Structures & Their Relationship to JSON (4:36)
-
StartSending & Receiving Nested Data Structures (3:10)
-
StartCRUD Workflow Setup (2:25)
-
StartCRUD Read Function: mongo_read_user_base() (8:28)
-
StartSimulating shinyauthr::login() (1:50)
-
StartCRUD Update Function, Part 1: mongo_update_and_write_user_base() (7:06)
-
StartCRUD Update Function, Part 2: Query Parameter (4:02)
-
StartCRUD Update Function, Part 3: Update Parameter (9:15)
-
StartCRUD Update Function, Part 4: Disconnect & Test (5:12)
-
StartSave the CRUD Functions (1:51)
-
StartCode Checkpoint (File Download)
-
StartIntegrate the Config Parameters (2:18)
-
StartIntegrate CRUD Read: mongo_read_user_base() (2:34)
-
StartIntegrate CRUD Update, Part 1: mongo_update_and_write_user_base() (1:25)
-
StartIntegrate CRUD Update, Part2: Debugging the MongoDB CRUD Functions (7:26)
-
StartTesting the App CRUD Operations (3:20)
-
StartCode Checkpoint
-
StartCheat Sheet 03 - SSH (Download) (1:45)
-
StartSSH Overview - Connecting to our EC2 Instance (1:11)
-
StartWindows Users - SSH with Putty (7:23)
-
StartMac & Linux Users - SSH with Terminal (6:45)
-
StartMac & Linux Users - Create .ppk File with Putty (2:25)
-
StartUpgrade Ubuntu Server Software (3:49)
-
StartCheat Sheet 04 - Shell Ubuntu (Linux) Commands (Download) (1:20)
-
StartNavigation Commands: pwd, cd, and ls (3:28)
-
StartHelp Documentation & Options: --help (7:52)
-
Starttree - Getting Directory Structure (3:09)
-
Startsnap - Ubuntu's Package Manager for Installing Ubuntu Software (3:18)
-
Startexit - Disconnecting from Your AWS EC2 Server (0:23)
-
StartShell Wrap-Up (0:50)
-
StartCheat Sheet 07 - Docker Container (File Download) (4:04)
-
StartDocker CLI - Run (docker container run) (3:07)
-
StartRunning Shiny Server - rocker/shiny-verse (6:59)
-
StartRunning RStudio Server (RStudio IDE) - rocker/tidyverse (7:13)
-
StartDocker CLI - Detached Mode (-d) (2:41)
-
StartDocker CLI - Linked Volume (-v) - Part 1 (6:31)
-
StartDocker CLI - Linked Volume (-v) - Part 2 (7:22)
-
StartDocker Deployment Workflow (10:24)
-
StartWrapup (1:20)
-
StartBonus - Changing RStudio User Name (for Login) (4:47)
-
StartCheat Sheet 08 - Docker Images (File Download) (3:52)
-
StartDockerfile (7:54)
-
StartDocker CLI - Build an Image (build) (5:59)
-
StartDockerHub Preparation - Tagging the Image (tag) (3:20)
-
StartDockerHub - Pushing the Image (push) (3:10)
-
Startshinyauth Dockerfile (8:57)
-
StartDockerHub - Pulling the mdancho/shinyauth Image & Cleaning Up Our Image List (3:07)
-
StartCheat Sheet 12 - Managing App Changes (File Download) (3:36)
-
StartMaking an App Change - Modifying Local & Remote Repos (6:56)
-
StartMaking an App Change - Pulling the Change to Your EC2 Server (2:46)
-
StartReverting the Change - Reset Your Local Repo (4:09)
-
StartReverting the Change - Resetting the Remote (2:19)
-
StartReverting the Change - Resetting Your EC2 App (3:37)
-
StartMaking Changes in Production with a Review (4:21)
-
StartMaking a Branch - Local (4:45)
-
StartPushing the Branch - Remote (1:21)
-
StartCreating the Pull Request - Remote (2:31)
-
StartMerge the Pull Request - Remote (4:04)
-
StartClean Up Branches - Local (3:57)
-
StartPull Changes to Production - EC2 Server (2:42)
-
StartWrapup (1:08)
-
StartCheat Sheet 13 - Shiny Server on AWS with Docker (File Download) (3:43)
-
StartAWS Preparation - Add HTTP Rule (5:38)
-
StartTesting HTTP Port 80 (7:06)
-
StartThe Shiny Server Hosting Model (4:14)
-
StartInteractive Exploration of the Shiny Server Hosting Model (10:08)
-
StartLaunching Shiny Apps with Docker (on Port 80) (9:30)
-
StartHosting Multiple Apps (Linked Directory Method) (9:46)
-
StartAdditional Hosting Methods (3:17)
-
StartTroubleshooting Common App Issues (8:47)
-
StartWrapup (2:26)
-
StartCheat Sheet 14 -Database Connection & Permission (File Download) (1:01)
-
StartPermissions - Local Database (4:23)
-
StartPermissions - MongoDB Atlas (7:26)
-
StartElastic IP Address - AWS Setup & MongoDB Networking (5:16)
-
StartElastic IP Address - Update SSH Connection (Putty / Terminal) (1:27)
-
StartWrapup (0:48)
-
StartCheat Sheet 15 - Domain Setup & SSL Certificates (File Download) (3:00)
-
StartPre-Requisites & Definitions (6:53)
-
StartAcquiring a Domain (3:46)
-
StartCloudflare - Domain Name Services (DNS) (3:01)
-
StartCloudflare - Setup Your Site (3:14)
-
StartCloudflare - Subdomain Setup (4:02)
-
StartCloudflare - Create SSL Certificates (4:53)
-
StartWrapup (1:36)
-
StartCheat Sheet 16 - HTTPS with NGINX & Docker Compose (File Download) (3:47)
-
StartNGINX Webserver (4:06)
-
StartDocker Compose (6:19)
-
StartStep 1 - AWS EC2 - Open Port 443 (HTTPS) (1:18)
-
StartStep 2 - FileZilla - Transfer SSL Certificates to EC2 (5:21)
-
StartStep 3 - RStudio IDE - Setup as Text Editor (1:57)
-
StartStep 4 - NGINX - Setup Configuration File (6:01)
-
StartStep 5 - Docker Compose - Setup YAML File (5:10)
-
StartStep 6 - Docker Compose - docker compose up (3:19)
-
StartStep 7 - Test App & Run in Detached Mode (4:05)
-
StartWrapup (2:32)
-
StartNavbar - Custom Shiny Input Setup (10:44)
-
StartNavbar - Add Full-Text Search Inputs (2:19)
-
StartHTML HEAD - Change HTML Page's Title Meta Data (1:53)
-
StartApp Outline & Theme (4:37)
-
StartApp Library Contents - tabPanel() (3:34)
-
StartBrand Logo (3:23)
-
StartApp Thumbnail Card, Part 1 - Bootswatch 3 (7:49)
-
StartApp Thumbnail Card, Part 2 - Images (File Download) (2:52)
-
StartPublish Your App Changes! (3:07)
-
StartApp Checkpoint 1 - Frontend Development (File Download)
-
StartFull Text Search Game Plan (1:19)
-
StartTag Filters - Update Radio Group Button Choices (3:08)
-
StartTheme - Organize Button Colors (6:34)
-
StartFull-Text Search - Search Button Logic (9:15)
-
StartFull-Text Search - Clear Button Logic (3:57)
-
StartTag Search - Filter Logic (7:42)
-
StartLogic Cleanup (3:20)
-
StartPublish Your Work (3:00)
-
StartApp Cleanup - Container Padding (3:43)
-
StartCongrats! You've just completed your Final Project :) (1:03)
-
StartApp Checkpoint 3 - Full-Text Search & Tag Filtering (File Download)
-
StartApp Bugfix