Learn advanced ASP.NET Core, Entity Framework Core and React by building a custom e-learning platform from empty folder to production in this self-paced, online, Masterclass

  • Learn each of these technologies and how to build a production app that fits them together.

    How The Course Works

    Learnify is a self-paced, online Masterclass, where you will master ASP.NET CORE and React by building a practical, real-world application from scratch.

    Remote

    Take the course anywhere

    Self-paced

    Take the course anytime

    Structured

    Learn in a cohesive fashion

    Community

    Learn with other students

    Everything you need to build a real SaaS application

    Learnify goes beyond other courses by covering every detail required to build a real, production-ready, application with ASP.NET Core and React.

    By the end of this course, you will be able to:

    1. Know how and why to use the Repository and Specification pattern.
    2. Understand design patterns in .NET Core.
    3. Use ASP.NET Identity for login and registration.
    4. Utilize React Router for routing.
    5. Centralize state in React using Redux toolkit.
    6. Integrate Automapper to shape data in ASP.NET Core.
    7. Use Axios to make API calls in React.
    8. Build a custom, visually appealing UI (without an external library).
    9. Set up Sass in React.
    10. Add Course Rating, Page, Sort, Search and Filter features.
    11. Use Redis as in-memory database to store cart items.
    12. Accept payments via Stripe using the new EU standards for 3D secure.
    13. Deploy ASP.Net projects to Heroku.

    Our students work at

    👋 Hey there, I’m Chirag Kalra, the author of this course.

    I’m a senior engineer at EPAM Anywhere and love being a lifelong learner. I speak Spanish, Portuguese, Japanese, English, Hindi and a little German and Dutch. I specialize in making corporate tools that reduce a team's time & effort!

    I have come across countless tutorials that focus on how to create an e-commerce or blogging application, but I could not find any that teach how to build a complete e-learning app and all of the elements that really go into it. Like how to create an incredible UI for customers, fetch and store course data and user credentials, conduct payment transactions, and then allow customers to utilize their digital purchase, and more.

    I created Learnify for developers who want to become fullstack developers. In this Masterclass, learn how to create a fullstack app from scratch and how to break down and manage frontend and backend work like an industry veteran.

    What You'll Build

    In this course, we’ll go step-by-step creating a complete, production grade e-learning platform for selling online courses.

    Try the completed app demo

    Create a Homepage

    We’ll cover and implement the design properties, plus set up an API to fetch them from the database to display on our app homepage. We’ll create a navigation bar, implement search and login features, add filtering, sorting and pagination too.

    Add Course Description Page

    We’ll create a course description page which will have some more information about the course such as learnings, requirements, description, number of students, level, language etc.

    Build a Shopping Cart

    With Redux Toolkit, we’ll learn how to store course details, and user's details including the courses in their cart. When a user clicks on the cart icon, they'll be redirected to the basket page.

    Create a Login

    We will use Identity framework which will take care of all the requirements for user registration and login, such as verifying the email or storing user credentials in the database. We will then work on our frontend to take user's credentials.

    Accept Payments with Stripe

    With Stripe integration - we just need to provide payment card details and click on 'Make Payment'. Once the payment is successful, users will be able to see purchased courses in their account.

    Utilize YouTube's embedded Player

    We will start by seeding some sample course data which will be displayed to the users. Later on, we will design our backend to accept course sections and lectures from our client. For video player, we are going to use YouTube's embedded player.

    Adding Additional Features

    Allow a user to become an instructor and create a course of their own. We will create one page for basic course details and another one for creating sections and lectures. We will give an option to publish and display the title for all customers to purchase.

    Course Content

    16 modules151 lessons20h 43m total

    Introduction

    4 lessons 16m total

    Introduction

    Introduction to the course

    INTRODUCTION

    5:36 minutes

    Technologies Used in this Course

    In this lesson, we'll go through all the technologies we're using in this course

    LESSON

    3:35 minutes

    Setting up the Environment

    In this lesson, we'll download all the technologies we're using in this course

    LESSON

    4:12 minutes

    Setting up VS Code

    In this lesson, we'll set up the extensions we need for our course

    LESSON

    3:24 minutes

    Preparing Our Server

    12 lessons1h 11m total

    Creating WebAPI Project using DOTNET CLI

    In this lesson, we'll create our DOT NET web Api project using the DOTNET CLI.

    LESSON

    8:03 minutes

    Reviewing the Project Files

    In this lesson, we'll go through the entire project that comes with Web API project and Class library Project

    LESSON

    9:59 minutes

    Reviewing the API Controllers

    In this lesson, we'll go through and review the API Controllers

    LESSON

    4:51 minutes

    Exploring Postman

    In this lesson, we'll explore Postman tool and make a HTTP request

    LESSON

    1:09 minutes

    Adding Course Model to our Project

    In this lesson, we'll add a course model to our project

    LESSON

    3:46 minutes

    What is Entity Framework?

    In this lesson, I'll be introducing you to the Entity Framework

    LESSON

    4:01 minutes

    Adding Entity Framework

    In this lesson, we'll be adding Entity Framework to our project

    LESSON

    8:14 minutes

    Adding our First Migration

    In this lesson, we'll be making our first migration

    LESSON

    5:58 minutes

    Creating a Database

    In this lesson, we'll creating our database based on the migration

    LESSON

    7:07 minutes

    Seeding Data in our Database

    In this lesson, we'll add initial data to our database

    LESSON

    8:00 minutes

    Adding our First Controller

    In this lesson, we'll add our first controller which will get us data from our database

    LESSON

    7:42 minutes

    Module 1 Summary

    In this lesson, we'll summarize what we did in module 1.

    LESSON

    2:08 minutes

    Setting up our client

    15 lessons1h 47m total

    Setting up the React Project

    In this lesson, we're going to create our client-side application using React

    LESSON

    4:49 minutes

    Reviewing our React Project

    In this lesson, we're going to look at our React project and understand the role of each file

    LESSON

    9:18 minutes

    React Concepts

    In this lesson, we're going to understand the important react concepts

    LESSON

    5:23 minutes

    Why TypeScript?

    In this lesson, we're going to look at the typescript concepts

    LESSON

    6:28 minutes

    Fetching Data

    In this lesson, we're going to look at how to use API request in React

    LESSON

    12:21 minutes

    Installing SASS to our Project

    In this lesson, we're going to install sass in our project

    LESSON

    6:49 minutes

    Installing React Router

    In this lesson, we're going to install React Router

    LESSON

    3:23 minutes

    Adding Routes and Refactoring

    In this lesson, we're going to add routes to our application

    LESSON

    5:11 minutes

    Installing Ant Design

    In this lesson, we're going to introduce and install ant design

    LESSON

    3:55 minutes

    Adding Base Styles

    In this lesson, we're going to create our base file

    LESSON

    4:23 minutes

    Creating Navbar

    In this lesson, we're going to create a navbar using antd

    LESSON

    13:10 minutes

    Adding Side-drawer to our Navbar

    In this lesson, we're going to add side drawer to our navbar

    LESSON

    6:45 minutes

    Setting up Axios

    In this lesson, we're going to set up axios in our project

    LESSON

    6:04 minutes

    Giving Types to Axios

    In this lesson, we're assign types to Axios response

    LESSON

    4:18 minutes

    Making Course Component

    In this lesson, we're going to make our course component

    LESSON

    15:02 minutes

    Using Repository pattern

    10 lessons1h 17m total

    Introducing Repository Pattern

    In this lesson, we're going to introduce Repository pattern

    LESSON

    2:55 minutes

    Adding Repository and Interface

    In this lesson, we're going to add Repository and Interface to our Project

    LESSON

    6:38 minutes

    Writing Repository Methods

    In this lesson, we're going to write the methods in our Repository

    LESSON

    5:33 minutes

    Adding More Properties to our Course Model

    In this lesson, we're going to add more properties to our course model

    LESSON

    10:53 minutes

    Adding Configuration to our Migration

    In this lesson, we're going to add configuration to our migration

    LESSON

    9:57 minutes

    Seeding New Data

    In this lesson, we're going to seed data for Category, Learnings and Requirements table

    LESSON

    9:55 minutes

    Adding Code to Get Data from Category Table

    In this lesson, we're going to add code to get data from Categories table

    LESSON

    8:42 minutes

    Adding Eager Loading

    In this lesson, we're going to add code for eager loading

    LESSON

    5:12 minutes

    Shaping the Data

    In this lesson, we're going to shape our returning data with the help of DTO.

    LESSON

    3:23 minutes

    Setting AutoMapper to our Project

    In this lesson, we're going to add AutoMapper to our project

    LESSON

    14:45 minutes

    Generic Repository pattern

    7 lessons 44m total

    Implementing Generic Repository

    In this lesson, we're going to implement generic repository to our application

    LESSON

    5:13 minutes

    Implementing Generic Repository Methods

    In this lesson, we're going to implement generic repository methods

    LESSON

    6:28 minutes

    Introducing Specification Pattern

    In this lesson, we're going to implement Specification Pattern

    LESSON

    6:08 minutes

    Creating Specification Evaluator

    In this lesson, we're going to write our Specification evaluator

    LESSON

    6:23 minutes

    Implementing Specification Methods

    In this lesson, we're going to implement the Specification methods

    LESSON

    5:31 minutes

    Using Specification Methods in Controllers

    In this lesson, we're going to implement our Specification methods inside Controllers

    LESSON

    10:26 minutes

    Specification Pattern Walkthrough

    In this lesson, we're going to walk through the entire process of Specification pattern

    LESSON

    3:55 minutes

    Error Handling

    5 lessons 35m total

    Creating Errors Controller

    In this lesson, we're going to create Errors Controller

    LESSON

    7:32 minutes

    Handling Errors

    In this lesson, we're going to manage our Error Responses

    LESSON

    6:00 minutes

    Creating a Not found Endpoint

    In this lesson, we're going to create a not found endpoint

    LESSON

    3:40 minutes

    Creating Exception Middleware

    In this lesson, we're going to create exception middleware to handle internal server error

    LESSON

    11:19 minutes

    Working on Validation Error Response

    In this lesson, we're going to format our validation error response

    LESSON

    6:54 minutes

    Sorting, Filtering, Pagination

    6 lessons 41m total

    Adding Sorting Feature to the API

    In this lesson, we're going to add sorting feature to our API

    LESSON

    8:32 minutes

    Adding Filter Feature to the API

    In this lesson, we're going to add filter feature to our API

    LESSON

    3:08 minutes

    Adding Pagination to the API

    In this lesson, we're going to add pagination to our API

    LESSON

    12:04 minutes

    Finishing pagination to the API

    In this lesson, we're going to finish pagination

    LESSON

    8:41 minutes

    Adding Search Functionality

    In this lesson, we're going to add search functionality

    LESSON

    3:42 minutes

    Fixing Some Warnings

    In this lesson, we're going to fix some warnings

    LESSON

    4:50 minutes

    Creating Pages in the frontend

    6 lessons1h 2m total

    Refactoring the Frontend

    In this lesson, we're going to refactor our frontend

    LESSON

    5:58 minutes

    Adding Categories Bar

    In this lesson, we're going to add Categories bar

    LESSON

    8:41 minutes

    Adding Show Courses Component

    In this lesson, we're going to create a new component to show courses

    LESSON

    6:06 minutes

    Creating Categories Page

    In this lesson, we're going to create categories page

    LESSON

    11:24 minutes

    Creating Description Page

    In this lesson, we're going to create a description page

    LESSON

    6:00 minutes

    Designing Description Page

    In this lesson, we're going to design the description page

    LESSON

    24:14 minutes

    Adding Basket Feature

    12 lessons1h 44m total

    Creating Basket Entity

    In this lesson, we're going to create basket entity

    LESSON

    7:27 minutes

    Making Migration to the Database

    In this lesson, we're going to make migration to our database

    LESSON

    2:41 minutes

    Creating Basket Controller

    In this lesson, we're going to create basket controller

    LESSON

    13:52 minutes

    Creating Remove Item Method

    In this lesson, we're going to create removeItem method

    LESSON

    10:59 minutes

    Setting up Axios for the Basket

    In this lesson, we're going to set up axios for our basket

    LESSON

    10:58 minutes

    Creating Basket Page

    In this lesson, we're going to add Basket page

    LESSON

    5:52 minutes

    Designing Basket Page

    In this lesson, we're going to design Basket page

    LESSON

    12:44 minutes

    Using React Context

    In this lesson, we're going to implement React context to centralize state

    LESSON

    12:16 minutes

    Fetching the Basket on App Start

    In this lesson, we're going to fetch the basket on app start

    LESSON

    3:33 minutes

    Refactoring and Adding Basket Items Count

    In this lesson, we're going to refactor the basket page and display the basket items count in the header

    LESSON

    10:45 minutes

    Adding Basket Summary

    In this lesson, we're going to add basket summary

    LESSON

    7:33 minutes

    Adding "Add to Cart" Button in the Description Page

    In this lesson, we're going to include "Add to cart" button in the description page

    LESSON

    5:18 minutes

    State management with Redux

    15 lessons1h 59m total

    Installing Redux

    In this lesson, we're going to install redux

    LESSON

    7:25 minutes

    Creating Action in Redux

    In this lesson, we're going create actions

    LESSON

    7:26 minutes

    Introducing Redux Toolkit

    In this lesson, we're going to introduce Redux toolkit

    LESSON

    11:31 minutes

    Creating Basket Slice

    In this lesson, we're going to create a basket slice

    LESSON

    4:52 minutes

    Refactoring App to Use Redux Toolkit

    In this lesson, we're going to make our application use redux toolkit

    LESSON

    6:57 minutes

    Using Asynchronous Calls in Redux

    In this lesson, we'd be using asynchronous calls in redux

    LESSON

    6:41 minutes

    Using Asynchrnous Calls in Redux Part 2

    In this lesson, we're going to make our application use redux toolkit

    LESSON

    7:09 minutes

    Using Entity Adapters

    In this lesson, we're going to use Redux toolkit Entity Adapters

    LESSON

    8:38 minutes

    Redux Devtools

    In this lesson, we're going to install and use Redux Devtools

    LESSON

    3:16 minutes

    Using Selectors in Entity Adapters

    In this lesson, we're going to use selectors provided by Entity Adapters

    LESSON

    4:52 minutes

    Fetching Single Product

    In this lesson, we're going to fetch single product

    LESSON

    5:37 minutes

    Creating Category Slice

    In this lesson, we're going to create a category slice

    LESSON

    9:00 minutes

    Adding Search Filters

    In this lesson, we're going to add search filters

    LESSON

    8:14 minutes

    Adding Course Params to Redux

    In this lesson, we're going to add Course params to Redux

    LESSON

    16:52 minutes

    Adding Frontend Pagination

    In this lesson, we're going to add pagination to the frontend

    LESSON

    10:56 minutes

    Identity

    18 lessons2h 28m total

    Setting up identity

    In this lesson, we're going to set up ASP identity

    LESSON

    6:13 minutes

    Configuring Identity and Migration

    In this lesson, we're going to configure and migrate

    LESSON

    9:57 minutes

    Creating Users Controller

    In this lesson, we're going to create Users controller

    LESSON

    8:54 minutes

    Testing Users Controller

    In this lesson, we're going to test Users controller

    LESSON

    4:34 minutes

    Json Web Tokens

    In this lesson, we're going to learn about Json Web Tokens

    LESSON

    3:29 minutes

    Creating Token Service

    In this lesson, we're going to create token service

    LESSON

    10:50 minutes

    Using Token Service

    In this lesson, we're going to use the token service we created in the last lecture

    LESSON

    6:50 minutes

    Validating the Token

    In this lesson, we're going to validate the token inside our server

    LESSON

    7:08 minutes

    Setting up Frontend for Identity

    In this lesson, we're going to set up frontend for user's identity

    LESSON

    2:52 minutes

    Building Login and Register Component

    In this lesson, we're going to build the login and register component

    LESSON

    20:45 minutes

    Finalizing Login page

    In this lesson, we're going to finalize the login page

    LESSON

    7:58 minutes

    Adding User Slice

    In this lesson, we're going to add user slice

    LESSON

    17:20 minutes

    Creating Login Dropdown

    In this lesson, we're going to create the login dropdown

    LESSON

    11:29 minutes

    Persisting User Login

    In this lesson, we're going to persist the login information

    LESSON

    3:20 minutes

    Adding FetchBasketSlice

    In this lesson, we're going to finalize the login page

    LESSON

    5:33 minutes

    Changing Basket Logic

    In this lesson, we're going to change the basket logic

    LESSON

    10:50 minutes

    Changing Basket Logic Frontend

    In this lesson, we're going to change the basket logic in frontend

    LESSON

    4:58 minutes

    Creating Private Route Component

    In this lesson, we're going to create private route component

    LESSON

    5:33 minutes

    Payments

    12 lessons1h 43m total

    Setting up Stripe

    In this lesson, we're going to set up Stripe

    LESSON

    6:25 minutes

    Creating Stripe Payment Service

    In this lesson, we're going to set up Stripe payment service

    LESSON

    8:31 minutes

    Creating Payments Controller

    In this lesson, we're going to set up Stripe payment service

    LESSON

    11:10 minutes

    Adding Stripe to Frontend

    In this lesson, we're going to set up Stripe to our frontend

    LESSON

    3:57 minutes

    Building Checkout Component

    In this lesson, we're going to build the checkout component

    LESSON

    12:53 minutes

    Getting Payment Intent from the Server

    In this lesson, we're going to make an API call to get payment intent from the server

    LESSON

    7:20 minutes

    Making Payment Function

    In this lesson, we're going to make a function which will make the payment

    LESSON

    8:08 minutes

    Making Clear Basket Endpoint

    In this lesson, we're going to make clear basket endpoint

    LESSON

    4:08 minutes

    Purchase Courses Endpoint

    In this lesson, we're going to create the purchase courses endpoint

    LESSON

    16:28 minutes

    Storing User Secrets

    In this lesson, we're going to see how to securely store user secrets

    LESSON

    3:51 minutes

    Current User Endpoint

    In this lesson, we're going to create an endpoint for current user

    LESSON

    14:26 minutes

    Showing Loader

    In this lesson, we're going to show a loader when app is fetching data

    LESSON

    5:48 minutes

    Displaying Video Lectures

    6 lessons1h 16m total

    Displaying User Courses

    In this lesson, we're going to display user courses

    LESSON

    8:23 minutes

    Lectures Backend

    In this lesson, we're going to create lectures backend

    LESSON

    7:05 minutes

    Lectures Controller

    In this lesson, we're going to create lectures controller

    LESSON

    16:46 minutes

    Creating Lecture Slice

    In this lesson, we're going to create our lecture slice

    LESSON

    13:59 minutes

    Creating Lecture Page

    In this lesson, we're going to create the lecture page

    LESSON

    21:53 minutes

    Centralizing Frontend Errors

    In this lesson, we're going to centralize frontend errors

    LESSON

    8:21 minutes

    Creating Courses

    6 lessons1h 51m total

    Adding Instructor Role

    In this lesson, we're going to give an option to become an instructor

    LESSON

    7:45 minutes

    Creating Add Role Endpoint

    In this lesson, we're going to create an addRole endpoint

    LESSON

    7:50 minutes

    Creating Instructor Page

    In this lesson, we're going to create the instructor page

    LESSON

    20:03 minutes

    Create Course Page

    In this lesson, we're going to work on creating the course page

    LESSON

    30:10 minutes

    Create Sections Backend

    In this lesson, we're going to work on sections backend

    LESSON

    9:16 minutes

    Create Sections Frontend

    In this lesson, we're going to work on sections frontend

    LESSON

    35:58 minutes

    Updating project to dotnet 6

    2 lessons 14m total

    Updating Project to .net 6

    In this lesson, we're going to update the project to .net6

    LESSON

    4:30 minutes

    Adding New Dotnet 6 Features to Our Application

    In this lesson, we're going to add .net6 features to our application

    LESSON

    9:49 minutes

    Deploying to Heroku

    6 lessons 42m total

    Module Introduction

    In this lesson, we're going to introduce module 15

    LESSON

    1:09 minutes

    Creating Frontend Build

    In this lesson, we're going to create build for frontend

    LESSON

    4:46 minutes

    Serving Client from Our Backend

    In this lesson, we're going to see how to serve client app from our backend

    LESSON

    4:46 minutes

    Switching to Production Database

    In this lesson, we're going to switch from sqlite to a production database

    LESSON

    9:48 minutes

    Final Touches

    In this lesson, we're going to give final touches to our application

    LESSON

    7:52 minutes

    Deplying to Heroku

    In this lesson, we're going to set up Heroku for deployment

    LESSON

    13:40 minutes

    Bonus Module - Getting started with Typescript

    9 lessons1h 8m total

    TypeScript Project Setup

    In this lesson, we're going to set up our TypeScript project

    LESSON

    5:24 minutes

    Using TypeScript

    In this lesson, we're going to add typescript file to our project

    LESSON

    5:16 minutes

    Installing Lite Server

    In this lesson, we're going to add lite server to our project

    LESSON

    2:31 minutes

    Using Types

    In this lesson, we're going to learn how to use types in TypeScript

    LESSON

    5:50 minutes

    Object, Array, Tuple, and Enum

    In this lesson, we're going to learn how to use object types in TypeScript

    LESSON

    13:53 minutes

    Union, Literals and Custom Types

    In this lesson, we're going to add lite server to our project

    LESSON

    6:44 minutes

    Typing Functions with TypeScript

    In this lesson, we're going use TypeScript with the functions

    LESSON

    8:02 minutes

    Unknown and Never Type

    In this lesson, we're going to study the unknown and never type in TypeScript

    LESSON

    5:04 minutes

    Configuration in TypeScript

    In this lesson, we're going to learn how to configure your TypeScript project

    LESSON

    15:13 minutes

    What People Are Saying...

    Learnify vs. Other Courses

    Learnify can help you save time, money, and frustration vs. going with other courses.

    Other Courses

    Complexity

    Build a production-ready appAnother todo list

    Depth

    Covers all of the details including structure, organization, tooling, and deployment.Leaves you wanting more, wondering how to build a "real" application.

    Interoperability

    Build one unified application in-depth.A bunch of different tutorials that don't fit together.

    Community

    Support from classmates and teachers in our Discord community.On your own

    Code Examples

    Complete, downloadable, organized code files for each lessonSpotty, questionable code examples.

    Time Commitment

    20 hours of video with clear, step by step instructions.Without a linear path you can waste months and get nowhere.

    Accountability

    Satisfaction guaranteed - refund at any time.Stingy refund policies, if any.

    Pricing

    Flexible plans designed for everyone

    Pro

    Error: Can't find product newline-guide-to-fullstack-asp.net-core-and-react. Please contact [email protected]

    Includes

    • Immediate access to the 180+ course lessons
    • Access to our Community
    • Full Completed Code for the Course
    • newline satisfaction guarantee

    Enterprise

    Error: Can't find product newline-guide-to-fullstack-asp.net-core-and-react-pro-seats. Please contact [email protected]

    Everything in the Pro plan and...

    • Bulk discounts for teams of 10+ students
    • Administrative seat configuration

    Questions you might have

    Here are answers to some common questions

    We assume you know have beginner level development experience with JavaScript and C# and a very basic understanding of React. With that said, we spend as much time as we can to ensure that we introduce and explain all the technologies we intend to use before we use them. The course does not teach you how to program from scratch. We delve into intermediate/advanced code.

    You will be given access to the full course material right away in your newline account library. You can login to download the code from the Masterclass Welcome Page and begin watching the videos immediately.

    When joining the course, you'll be invited to our community Discord where you can chat with fellow students.

    If you're unhappy with the course for any reason, just reach out to us and we'll give you a full refund. There's no risk.