Example Curriculum
Available in
days
days
after you enroll
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)
Available in
days
days
after you enroll
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)
Available in
days
days
after you enroll
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)
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)
Available in
days
days
after you enroll
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)
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)
Available in
days
days
after you enroll
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)
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)
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)
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)
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)
Available in
days
days
after you enroll
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)
Available in
days
days
after you enroll