Example Curriculum
    
    Section 1: Introduction
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    
    
    Section 2: Bootstrapping Angular
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Understanding Frameworks (4:41)
 - The Angular CLI (4:17)
 - Upgrading Angular (2:15)
 - Creating a New Application (3:33)
 - Starting the Server (5:07)
 - Reviewing the Configuration Files (8:10)
 - Main Entry File (1:27)
 - AOT Compilation (5:04)
 - Bootstrapping Angular (5:27)
 - Understanding Components (2:03)
 - Creating Components (5:47)
 - External Templates and Styles (6:09)
 - Everything Else (1:54)
 
    
    Section 3: TypeScript (OPTIONAL)
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    
    
    Section 4: Component Fundamentals
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Signals (10:11)
 - Property Binding (4:13)
 - Event Binding (7:03)
 - Type Assertions (5:38)
 - Creating a Component (4:45)
 - Custom Properties (8:04)
 - Required Inputs (2:30)
 - Emitting Events (8:46)
 - Content Projection (3:20)
 - Discovering Lifecycle Hooks (7:07)
 - Exploring More Lifecycle Hooks (10:43)
 - Scoped CSS (4:25)
 
    
    Section 5: Transforming Content
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    
    
    Section 6: Master Project - Component Design
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Introduction to the Master Project! (4:35)
 - What is Tailwind? (5:37)
 - Installing Tailwind (7:30)
 - Configuring Tailwind (2:33)
 - Practicing with Tailwind (6:31)
 - Loading Static Assets (6:16)
 - What’s Next? (3:34)
 - Navigation and Modal Components (6:36)
 - Designing a Modal (2:25)
 - Creating a Shared Component (2:31)
 - Creating a Reusable Modal (2:54)
 - Multi-slot Content Projection (3:15)
 - Understanding Services (3:37)
 - Creating a Service (1:26)
 - Understanding Dependency Injection (9:03)
 - Injecting Services (3:21)
 - Signal Queries (7:53)
 - Opening the Modal (6:40)
 - Closing the Modal (3:53)
 - Memory Leaks (6:32)
 - Fixing the memory leak (4:56)
 - Creating a Tabs Component (6:03)
 - The contentChildren Query Signal (4:50)
 - Looping through the Tabs (3:40)
 - Setting an Active Tab (5:40)
 - Toggling Tabs (5:17)
 - Preventing the Default Behavior (2:02)
 
    
    Section 7: Master Project - Reactive Forms
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Preparing the Forms (6:00)
 - Registering a New Form (4:55)
 - Adding Form Controls (3:19)
 - Binding a Form (3:09)
 - Form Validation (7:23)
 - Understanding Errors (4:36)
 - Handling Errors (5:21)
 - Form Controller Status (5:43)
 - Designing an Input Component (3:46)
 - Binding Form Controls (2:20)
 - Updating the Template (4:57)
 - Validating Emails (7:11)
 - Validating Numbers (6:01)
 - Validating Passwords with Patterns (6:18)
 - Input Masking (5:49)
 - Applying Input Masking (5:59)
 - Disabling Buttons (2:50)
 - Handling Form Submission (2:51)
 - Designing an Alert Component (11:29)
 
    
    Section 8: Master Project - Template Forms
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    
    
    Section 9: Introduction to RxJS
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Introduction to RxJS (5:55)
 - Observables (5:47)
 - Observers (4:22)
 - Pushing Asynchronous Values (3:40)
 - Unsubscribing from Observables (3:35)
 - Declarative Programming with Operators (5:48)
 - Timing Operators (5:27)
 - DOM Event Operators (2:16)
 - The of and from Operators (5:57)
 - Understanding Pipeable Operators (4:07)
 - The Map Operator (4:09)
 - Marble Diagram (2:45)
 - Filter Operator (7:27)
 - Reduce Operator (4:06)
 - Take Operator (4:18)
 - Tap Operator (3:28)
 - Understanding Flattening Operators (7:39)
 - mergeMap Operator (6:16)
 - switchMap Operator (5:05)
 - concatMap Operator (2:29)
 - exhaustMap Operator (2:34)
 - Flattening Operators Recap (2:22)
 
    
    Section 10: Master Project - Authentication
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Setting Up Firebase (7:11)
 - Reviewing the Rules (6:18)
 - Installing AngularFire (3:59)
 - Importing AngularFire (6:44)
 - User Registration (8:04)
 - Handling the Response (8:43)
 - Buckets, Collections and Documents (3:20)
 - Firestore Provider (1:50)
 - Storing User Data (6:17)
 - Refactoring to a Service (6:34)
 - Interfaces vs. Classes (6:20)
 - Connecting the User with their Data (10:26)
 - Database Rules (2:41)
 - Understanding Authentication (4:16)
 - Authentication after Registration (3:22)
 - The User Observable (3:45)
 - The Async Pipe (4:59)
 - Setting Up the Login (10:41)
 - Destroying the Modal (4:22)
 - The Delay Operator (3:54)
 - Signing Out (4:37)
 - Sidebar JSON Web Tokens (9:32)
 
    
    Section 11: Master Project - Custom Validators
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    
    
    Section 12: Master Project - Routing
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Understanding Routing (5:29)
 - Configuring the Router (3:06)
 - Registering Routes (7:15)
 - Exercise Registering a Route (3:40)
 - Adding Navigation Links (3:45)
 - Active Links (7:07)
 - Creating the Manage Route (2:46)
 - Forcing Redirection (4:43)
 - A Quick Refactor (4:10)
 - Adding Route Data (5:49)
 - Filtering Router Events (4:37)
 - Retrieving Data Outside of the Outlet (6:50)
 - Exercise Registering a Route with Data (4:59)
 - Route Parameters (7:15)
 - Subscribing to Route Parameters (4:56)
 - Query Parameters (10:11)
 - Learning More About Query Parameters (8:35)
 - Selecting an Option (1:48)
 - Wildcard Routes (3:31)
 - Updating Routes (3:49)
 - Route Guards (5:47)
 
    
    Section 13: Master Project - Uploading Files
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Understanding File Uploads (3:27)
 - Blocking Events with Directives (8:35)
 - Handling Drag and Drop Events (7:51)
 - Handling Files (8:12)
 - Multi-Step Form (3:58)
 - The Upload Form (9:27)
 - Uploading Files with Firebase (9:18)
 - Firebase Rules and Validation (7:37)
 - Adding an Alert Component (5:30)
 - Upload Progress Observable (3:54)
 - Handling Errors and Successful Uploads (7:32)
 - Storing the File Data (6:05)
 - Adding the File Data to the Database (7:19)
 - Firebase References and Snapshots (2:24)
 - Disabling Forms (2:48)
 - Canceling Uploads (5:38)
 - Redirection after Upload (5:30)
 - Storing a Timestamp (4:26)
 - Querying the Database (7:31)
 - Storing the List of Clips (6:39)
 - Displaying the List of Clips (2:33)
 - Preparing the Form (6:38)
 - Passing on the Clip Data (3:28)
 - Binding the Edit Form (5:52)
 - Updating Clips (11:30)
 - Updating the List of Clips (8:52)
 - Deleting a Clip from the Storage and Database (11:32)
 - Sorting Clips with Computed Signals (5:07)
 
    
    Section 14: WebAssembly & Rust
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - What is WebAssembly? (8:53)
 - Getting Started with Rust (6:20)
 - Exploring the Starter Project (6:46)
 - Variables (5:16)
 - Data Types (6:47)
 - Debugging with Macros (6:54)
 - Control Flow (4:40)
 - Match Expressions (7:50)
 - Arrays (2:50)
 - Vectors (5:20)
 - Structures (4:08)
 - Ownership (6:48)
 - Results (8:20)
 - Preparing the Project (3:39)
 - Installing Webpack (3:40)
 - Configuring Webpack (10:20)
 - Reading Files (8:10)
 - Note: Installing wasm-pack
 - Compiling Rust with Webpack (4:46)
 - Importing Web Assembly (5:47)
 - Logging Files (9:21)
 - Base64 Decoding (3:48)
 - Loading an Image from Memory (2:59)
 - Grayscaling an Image (2:53)
 - Buffering an Image (5:18)
 - Encoding an Image (5:10)
 - App Deployment (4:06)
 
    
    Section 15: Master Project - Processing Videos with FFmpeg
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Understanding FFmpeg (2:47)
 - Installing FFmpeg (5:06)
 - Custom Asset Paths (5:18)
 - Adding support for SharedArrayBuffer (6:47)
 - Loading FFmpeg with a Service (4:07)
 - Initializing FFMPeg (6:05)
 - Saving Files in Memory (6:28)
 - Generating a Screenshot (11:04)
 - Generating Multiple Screenshots (5:13)
 - Creating Screenshot URLs (5:48)
 - Rendering Screenshots (3:09)
 - Adding Feedback (3:31)
 - Selecting a Screenshot (4:19)
 - Updating the Firebase Storage Rules (2:03)
 - Uploading a Blob (7:10)
 - Recalculating the Upload Progress (5:03)
 - The forkJoin Operator (5:15)
 - Deleting Screenshots (4:27)
 
    
    Section 16: Master Project - Playing Videos
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Introduction (1:44)
 - Creating a List Component (2:00)
 - Handling Scroll Events (8:26)
 - Querying for Clips (12:43)
 - Rendering Clips on the Home page (5:20)
 - Understanding Cross Origin Issues (3:44)
 - Fixing Cross Origin Issues (8:10)
 - Fixing the Timestamp (5:08)
 - Rendering Clips on the Clip Page (3:46)
 - Installing Videojs (1:37)
 - Selecting the Video Player (3:21)
 - Initializing the Video Player (1:42)
 - Clip Styles (2:10)
 - Resolving Data with a Guard (8:34)
 - Dynamically Rendering the Video (6:41)
 - Fixing the Manage Page (1:03)
 - Copying Links to the Clipboard (5:26)
 
    
    Section 17: Master Project - Deployment
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    
    
    Section 18: Master Project - Testing
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll
      
    - Introduction to Testing (11:26)
 - Understanding Karma and Jasmine (3:11)
 - Preparing Our App for Testing (3:11)
 - Writing a Sanity Test (6:04)
 - Angular’s Test Bed Utility (5:33)
 - Testing a Component’s Instance (6:28)
 - Querying the Component’s Template (6:40)
 - Inverting Matchers (3:16)
 - Testing Nested Components (5:10)
 - Testing Content Projection (6:33)
 - Custom Matcher Error Messages (2:32)
 - Mocking Services (6:30)
 - Overriding a Dependency (2:22)
 - Providing the Router in Tests (1:54)
 - Exercise Testing the Logout Link (2:59)
 - Simulating DOM Events (4:02)
 - Installing Cypress (6:45)
 - Exploring Cypress (6:04)
 - Writing an E2E Sanity Test (6:08)
 - Testing the Video Player (8:53)
 
    
    Where To Go From Here?
    
      
  
  
        Available in
        
        days
      
      
        
        days
        after you enroll