Show Sidebar
Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Build a Real-world App with ASP.NET Core 1.0+ and Angular 2+
Getting Started (1h)
Course Introduction (1:45)
Scope (5:30)
Prerequisites (1:13)
Application Requirements (2:20)
Setting Up the Development Environment (5:44)
Installing SQL Server on macOS : Linux (9:26)
Creating a Project (4:11)
Project Structure (4:53)
Application Startup (7:02)
Environments (4:55)
.NET Watch (2:47)
Debugging in VSCode (2:12)
Working with Git (1:05)
Use Cases (5:20)
Follow Me Around
Learning Paths
Building API's with ASP.Net Core (1h)
Introduction (0:58)
Impementation Options (1:59)
Building the Domain Model (4:59)
Installing Entity Framework Core (4:39)
Creating a DbContext (4:14)
Using Configuration (4:06)
Creating the Database (8:30)
Applying Constraints (5:28)
Seeding the Database (7:16)
Building an API (3:51)
Common Runtime Errors (2:44)
API Resources (3:32)
AutoMapper (6:08)
Challenge 2- Building Forms
Building Angular Forms (50m)
Introduction (0:47)
Creating an Angular Component (4:13)
Creating a Route (1:42)
Building a Bootstrap Form (3:49)
Creating a Service (3:10)
Populating Drop-down Lists (3:30)
Implementing the Cascading Behaviour (7:25)
Rendering Dynamic Checkboxes (4:42)
Refactoring- Merging Services (6:04)
Discussion- Merging Controllers (3:46)
Adding Radio Buttons (2:51)
Adding Text Boxes-final (2:12)
Challenge 3- Building APIs for CRUD Operations
Implementing CRUD Operations - API's (1h10m)
Introduction API (0:34)
Revisiting the Domain Model (1:31)
Extending the Domain Model (3:15)
Dealing with Many-to-many Relationships (6:08)
Building an API to Create an Object (2:55)
Why API Resources Should be Different from Domain Classes (6:00)
Creating API Resources (2:12)
Mapping API Resources to Domain Objects (5:14)
Adding a Record to the Database (5:26)
Implementing Validation (9:55)
Building an API to Update Objects (4:09)
Mapping Collections (6:15)
Refactoring Using LINQ (6:11)
Building an API to Delete an Object (2:40)
Building an API to Get an Object (2:02)
Challenge 4- Refactoring Towards the Clean Architecture
Refactoring Towards the Clean Architecture (1h15m)
Introduction (1:00)
Separating API Resources (6:03)
Refactoring- Separating API Resources (6:19)
Refactoring- Using Key Value Pairs (4:37)
Changing the Return Type of APIs (4:40)
Repository Pattern (2:33)
Dependency Injection (5:15)
Decoupling from Entity Framework (8:54)
The Unit of Work Pattern (6:55)
Fixing a Few Bugs (3:32)
False Argument 1- Repository over Repository (3:57)
False Argument 2- Increased Complexity (0:36)
False Arguments 3- Simple or Complex Apps (1:27)
False Argument 4- Repository coupled to EF (4:44)
False Arguments Against the Repository Pattern (2:49)
Dependency Inversion Principle (6:32)
Layers vs Tiers-final (2:57)
Challenge 5- Populating and Submitting Forms
Populating and Submitting Forms (1h25m)
Introduction (0:35)
Binding the Drop-down Lists (3:51)
Binding the Dynamic Check Boxes (2:45)
Binding the Text Boxes (1:22)
Submitting the Form (2:00)
Client-side Validation (3:53)
Displaying Toast Notifications (7:25)
Global Error Handling (5:00)
Zones in Angular (7:58)
Logging Errors (5:41)
Development vs Production Environment (3:04)
Implementing Editing (5:32)
Sending Parallel Requests (4:59)
Creating Interfaces (6:26)
Populating the Form (2:39)
Implementing the Delete (2:46)
Challenge 6- Filtering, Sorting and Pagination
Filtering, Sorting and Paging (1h20m)
Introduction (0:29)
Code Review (3:11)
Adding the Filters (4:38)
Filtering on the Client (3:36)
Filtering on the Server (4:33)
Passing the Filters to the Server (6:22)
Sorting Data on the Server (4:32)
Refactoring- Using Dictionaries (4:49)
Refactoring- Extract Method (2:19)
Refactoring- Extension Methods (7:46)
Sending the Sort Parameters to the Server (2:23)
Adding the Sort Icons (3:26)
Rendering Columns Dynamically (2:58)
Implementing Paging on the Server (5:22)
Pagination Component (2:58)
Calculating the Total (5:52)
Edge Cases (3:27)
Challenge 7
Additional Resources
Uploading Photos (1h15m)
Introduction (0:21)
The Approach (3:12)
Code Review (4:56)
Extending the Domain (2:15)
Building an API (10:44)
Testing the API (1:26)
Implementing Validation (3:04)
Using Configuration (5:33)
Building the Client-side (6:40)
Rendering the Uploaded Photos (4:47)
Tracking the Upload Progress (7:32)
Adding a Bootstrap Progress Bar (4:47)
Fixing the Memory Leaks (7:48)
Handling the Errors (3:10)
Challenge 8- Authentication and Authorization
Authentication and Authorization (1h45m)
Introduction (0:57)
Authentication Requirements (0:57)
Architecture (4:55)
Setting Up an Auth0 Account (2:20)
Securing APIs (4:37)
Inspecting a JWT (0:48)
Securing Client Apps (7:29)
Login and Logout (6:40)
Hosted Login Pages (4:30)
Setting the Audience (8:09)
Break (0:43)
Getting the User's Profile (5:29)
Adding Additional Signup Fields (4:44)
Using Rules (3:32)
Assigning Users to Roles (2:18)
Showing or Hiding Content (6:57)
Refactoring (6:12)
Protecting Routes (6:47)
Calling Secured APIs (5:40)
Restricting API Access to Certain Roles (3:34)
Implementing the Authorization Requirements (2:28)
Additional Resources
Final Improvements (25m)
Adding Carts (4:37)
Optimizing Queries (3:55)
Fixing a Bug (1:59)
Extracting a Service Layer (12:28)
Supporting Multiple Storages (6:41)
Using the Secret Manager (8:17)
Creating a Project
Download
Complete and Continue