Tags
Language
Tags
June 2025
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
    Attention❗ To save your time, in order to download anything on this site, you must be registered 👉 HERE. If you do not have a registration yet, it is better to do it right away. ✌

    ( • )( • ) ( ͡⚆ ͜ʖ ͡⚆ ) (‿ˠ‿)
    SpicyMags.xyz

    Build A Microservices App With .Net And Nextjs From Scratch

    Posted By: ELK1nG
    Build A Microservices App With .Net And Nextjs From Scratch

    Build A Microservices App With .Net And Nextjs From Scratch
    Published 7/2023
    MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
    Language: English | Size: 14.18 GB | Duration: 31h 37m

    How to build a microservices based app using .Net, NextJS, IdentityServer, RabbitMQ running on Docker and Kubernetes

    What you'll learn

    To build an application with .Net using Microservices architecture

    To build a client app for the application using NextJS

    To use RabbitMQ for Service bus communications

    To install and use IdentityServer in the Microservices app

    To be able to test the projects using Unit and Integration testing with XUnit

    To publish the Microservices app to Docker compose

    To publish the Microservices app to Kubernetes cluster both locally and on the internet

    Requirements

    Some coding experience is required to participate in this course

    Windows, Mac or Linux computer that is capable of running Docker

    Description

    Microservices is the latest 'buzzword' and hot topic in the web development industry at the moment and nowadays having microservices as part of your skillset is becoming more and more essential.  This course aims to teach you how to build a microservices based app using .Net for the backend services and Next.js for the client app.   We start from nothing and build up the app until we have a completed app that we can publish to a Kubernetes cluster on the internet.Here are some of the things that are covered in this course:Creating several backend services using .Net that provide functionality for the appService to service communication using RabbitMQ and gRPC Using IdentityServer as the identity provider. Creating a gateway using Microsoft YARPBuilding a client side app with Next.js using the new App Router functionality (since Next.js 13.4)Using SignalR for push notifications to the client appDockerizing our different servicesCI/CD workflows using GitHub actionsAdding ingress controllersPublishing the app locally using docker composeThe goals of the main part of this course is to build this app and be able to run and publish everything locally without having to sign up or pay for any cloud services.   Once you have completed the main part of the course there are 3 optional Appendixes that cover:Unit and integration testingPublishing locally to KubernetesPublishing the app to a Kubernetes cluster on the internetTools you need for this courseIn this course all the lessons are demonstrated using Visual Studio Code, a free (and fantastic) cross platform code editor.   You can of course use any code editor you like and any Operating system you like… as long as it's Windows, Linux or Mac.  Please ensure that your computer can run Docker as this is a requirement for this course (please see the pre-requisite lesson available as a preview to confirm this).  Is this course for you?This course is very practical, about 90%+ of the lessons will involve you coding along with me on this project.  If you are the type of person who gets the most out of learning by doing, then this course is definitely for you.  On this course we will build an example Auction Application with several services that we will use to provide its functionality.   For the client side of things we are using Next.js to take advantage of its client side and server side capabilities which is an excellent fit for what we are building.  All you will need to get started is a computer with your favourite operating system that is capable of running Docker, and a passion for learning how to build a microservies based application using .Net and Next.js.    

    Overview

    Section 1: Introduction

    Lecture 1 Introduction

    Lecture 2 Course pre-requisites

    Lecture 3 Setting up the developer environment

    Lecture 4 Course assets and source code

    Lecture 5 VS Code troubleshooting and tips

    Lecture 6 Microservices - the big picture

    Section 2: Section 2 - Creating the first microservice

    Lecture 7 Introduction to section 2

    Lecture 8 Creating the first micro service

    Lecture 9 Reviewing and simplifying the project

    Lecture 10 Adding the entity classes

    Lecture 11 Adding the Database context class

    Lecture 12 Adding a Postgres database server

    Lecture 13 Creating seed data

    Lecture 14 Shaping the data to return

    Lecture 15 Adding an API controller

    Lecture 16 Adding a postman collection

    Lecture 17 Adding the create auction endpoint

    Lecture 18 Adding the update auction endpoint

    Lecture 19 Adding the delete auction endpoint

    Lecture 20 Saving changes into source control

    Lecture 21 Summary

    Section 3: Section 3 - Creating a Search microservice

    Lecture 22 Introduction to Section 3

    Lecture 23 Creating the second micro services

    Lecture 24 Adding the MongoDb server

    Lecture 25 Adding the Item model

    Lecture 26 Adding seed data

    Lecture 27 Adding a search controller

    Lecture 28 Paginating the results

    Lecture 29 Adding filtering and ordering

    Lecture 30 Synchronous messaging

    Lecture 31 Adding Http communication to get the data

    Lecture 32 Making our Http communication resilient

    Lecture 33 Summary of Section 3

    Section 4: RabbitMQ

    Lecture 34 Introduction to Section 4

    Lecture 35 What is RabbitMQ

    Lecture 36 Installing RabbitMQ

    Lecture 37 Adding and configuring mass transit

    Lecture 38 Adding the contracts

    Lecture 39 Adding a consumer to consume a message from the Service bus

    Lecture 40 Publishing the Auction Created event to the bus

    Lecture 41 What could go wrong?

    Lecture 42 Adding a message outbox

    Lecture 43 Using message retries

    Lecture 44 Consuming fault queues

    Lecture 45 Challenge: Adding the update and delete consumers

    Lecture 46 Challenge solution

    Lecture 47 Summary of section 4

    Section 5: Identity Server

    Lecture 48 Introduction to Section 5

    Lecture 49 OAuth and OpenIDConnect

    Lecture 50 Creating the Identity Server project

    Lecture 51 Reviewing and configuring our new project

    Lecture 52 Seeding data and adding a migration

    Lecture 53 Reviewing the login page in identity server

    Lecture 54 Adding a register page

    Lecture 55 Adding a register page part 2

    Lecture 56 Adding a register page part 3

    Lecture 57 Adding client credentials to allow clients to request a token

    Lecture 58 Adding a custom profile service to identity server

    Lecture 59 Configuring auth on the resource server

    Lecture 60 Configuring the auth endpoints on the resource server

    Lecture 61 Summary of section 5

    Section 6: Adding a Gateway Service

    Lecture 62 Introduction to Section 6

    Lecture 63 Adding the Gateway service

    Lecture 64 Adding the Reverse Proxy configuration

    Lecture 65 Adding authentication to the Gateway config

    Lecture 66 Testing our Gateway service in Postman

    Lecture 67 Adding the remaining contracts we need

    Lecture 68 Adding the remaining consumers to the Auction Service

    Lecture 69 Adding the remaining consumers in the Search Service

    Lecture 70 Adding a new client to the Identity service configuration

    Lecture 71 Summary of Section 6

    Section 7: Dockerizing our application

    Lecture 72 Introduction to Section 7

    Lecture 73 Creating a docker account

    Lecture 74 Dockerizing the Auction Service

    Lecture 75 Updating our docker compose file for the Auction Service container

    Lecture 76 Dockerising the Search service

    Lecture 77 Dockerising the Identity Service

    Lecture 78 Debugging a .Net service in a docker container

    Lecture 79 Dockerising the Gateway Service

    Lecture 80 Testing our docker containers

    Lecture 81 Summary of Section 7

    Lecture 82 Introduction to Section 8

    Lecture 83 Creating the NextJS project

    Lecture 84 Reviewing and simplifying the NextJS Project

    Lecture 85 Creating a nav bar

    Lecture 86 Fetching data from the API

    Lecture 87 Adding an Auction Card component

    Lecture 88 Styling the auction cards

    Lecture 89 Adding a countdown timer to the auction card

    Lecture 90 Adding loading to the images

    Lecture 91 Adding types to the project

    Lecture 92 Adding pagination to our list

    Lecture 93 Using server functions in client components

    Lecture 94 Adding a set page size option

    Lecture 95 Using Zustand for state management

    Lecture 96 Refactoring our code to use the zustand state

    Lecture 97 Adding a search bar

    Lecture 98 Adding the search functionality

    Lecture 99 Adding a reset to the search function

    Lecture 100 Adding the sorting functionality

    Lecture 101 Adding the filtering functionality

    Lecture 102 Adding a component to display when zero results

    Lecture 103 Summary of section 8

    Section 8: Client side identity with NextAuth (AuthJS)

    Lecture 104 Introduction to Section 9

    Lecture 105 Before we begin

    Lecture 106 Installing Next Auth into our client app

    Lecture 107 Adding the login functionality

    Lecture 108 Getting the session details in the client

    Lecture 109 Populating the session data

    Lecture 110 Populating the User actions dropdown

    Lecture 111 Protecting routes

    Lecture 112 Testing API authentication

    Lecture 113 Getting the access token to use to authenticate to our resource server

    Lecture 114 Summary of Section 9

    Lecture 115 Introduction to Section 10

    Lecture 116 Routing in NextJS

    Lecture 117 Getting the auctions won

    Lecture 118 Creating an Auction form

    Lecture 119 Creating an Auction form part 2

    Lecture 120 Creating a reusable text input

    Lecture 121 Creating the auction form part 3

    Lecture 122 Creating a reusable date input

    Lecture 123 Creating a fetch wrapper

    Lecture 124 Adding the create auction server action

    Lecture 125 Adding react hot toast to display notifications if something goes wrong

    Lecture 126 Adding the auction details page content

    Lecture 127 Adding the edit auction page

    Lecture 128 Adding the delete auction functionality

    Lecture 129 Summary of section 10

    Section 9: Creating the bid service

    Lecture 130 Introduction to Section 11

    Lecture 131 Creating the Bid Service

    Lecture 132 Adding the models to the Bid Service

    Lecture 133 Adding an API Controller for the bids

    Lecture 134 Adding the get bids endpoint

    Lecture 135 Adding the auction created consumer

    Lecture 136 Testing the bid functionality in Postman

    Lecture 137 Adding the DTOs and Automapper

    Lecture 138 Adding a producer for the BidPlaced

    Lecture 139 Challenge solution

    Lecture 140 Adding a Background service for the auction finished event

    Lecture 141 What is gRPC?

    Lecture 142 Adding gRPC part 1

    Lecture 143 Adding gRPC part 2

    Lecture 144 Adding a gRPC client

    Lecture 145 Updating the Gateway service

    Lecture 146 Dockerising the BidService

    Lecture 147 Summary of Section 11

    Section 10: Adding a SignalR service

    Lecture 148 Introduction to Section 12

    Lecture 149 Creating the Notification service

    Lecture 150 Adding a SignalR Hub

    Lecture 151 Adding the Consumers

    Lecture 152 Adding CORS support to the Gateway

    Lecture 153 Dockerising the NotificationService

    Lecture 154 Updating the Docker compose file

    Lecture 155 Summary of section 12

    Lecture 156 Introduction to Section 13

    Lecture 157 Refactoring the auctions into a zustand store

    Lecture 158 Updating the Auction cards with the current high price

    Lecture 159 Getting the bids for an auction

    Lecture 160 Creating a bid item

    Lecture 161 Creating a bid store

    Lecture 162 Creating a bid form

    Lecture 163 Updating the error handling

    Lecture 164 Adding conditionals to the form and testing

    Lecture 165 Adding SignalR to the client app

    Lecture 166 Adding the new bid to SignalR

    Lecture 167 Adding a toast for an auction created

    Lecture 168 Adding a toast for an auction finished event

    Lecture 169 Disabling the auction finished form when the auction finishes

    Lecture 170 Preventing low bids

    Lecture 171 Summary Section 13

    Section 11: Publishing the app to production (locally)

    Lecture 172 Introduction to Section 14

    Lecture 173 Preparing the client app

    Lecture 174 Creating the Dockerfile for nextjs

    Lecture 175 Fixing the identity server issues in docker compose

    Lecture 176 Giving the Identity Server a static ip address

    Lecture 177 Adding an ingress to Docker compose

    Lecture 178 Adding SSL to the ingress

    Lecture 179 Final app cleanup and resolving SignalR issue

    Lecture 180 End of course summary

    Section 12: Appendix A - Testing

    Lecture 181 Intro to Appendix A - Testing

    Lecture 182 The simplest unit test possible

    Lecture 183 Reviewing the code in the Auction controller and what we are testing

    Lecture 184 Creating an Auction Repository and interface

    Lecture 185 Refactoring the Auctions controller to use the repository

    Lecture 186 Mocking things

    Lecture 187 Unit testing the GET methods part 1

    Lecture 188 Unit testing the GET methods part 2

    Lecture 189 Unit testing the POST request

    Lecture 190 Challenge - Practicing creating unit tests for the other controller methods

    Lecture 191 Challenge solution

    Lecture 192 Integration testing setup

    Lecture 193 Setting up a Custom web application factory for integration testing

    Lecture 194 Adding test data to the DB

    Lecture 195 Creating an integration test for the GET method part 1

    Lecture 196 Creating an integration test for a GET request part 2

    Lecture 197 Creating an integration test for the POST request

    Lecture 198 Challenge - Practicing creating integration tests for the other methods

    Lecture 199 Challenge solution

    Lecture 200 Testing the Service bus

    Lecture 201 Using Collection fixtures to share the DB across test classes

    Section 13: Appendix B - Publishing to Kubernetes (locally)

    Lecture 202 Intro to Appendix B - Kubernetes

    Lecture 203 No ‘depends on’ in Kubernetes - using Polly to retry instead

    Lecture 204 Adding a GitHub action to push our Identity Server image to Docker hub

    Lecture 205 Deploying our IdentityServer to a Digital Ocean server

    Lecture 206 Configuring the Linux server to host the identity server

    Lecture 207 Creating the first Kubernetes manifest for a deployment

    Lecture 208 Adding a persistent volume claim

    Lecture 209 Adding a load balancer to allow us to connect to the postgres deployment

    Lecture 210 Adding a cluster ip our services can use

    Lecture 211 Creating a deployment for RabbitMQ

    Lecture 212 Creating a Mongodb deployment

    Lecture 213 Creating the auction service deployment

    Lecture 214 Creating the search service deployment

    Lecture 215 Creating the bid service deployment

    Lecture 216 Creating the notification service deployment

    Lecture 217 Creating the gateway service deployment

    Lecture 218 Creating the client app deployment

    Lecture 219 Adding an nginx ingress controller for docker-compose

    Lecture 220 Adding SSL to the ingress controller

    Lecture 221 Fixing Identity Server issues

    Section 14: Appendix C - Publising to Kubernetes (Internet)

    Lecture 222 Introduction to Appendix C

    Lecture 223 Kubernetes secrets

    Lecture 224 Using a manifest to create secrets

    Lecture 225 Updating the rest of the secrets

    Lecture 226 Adding a workflow to deploy our Auction service

    Lecture 227 Creating a kubernetes cluster on Digital Ocean

    Lecture 228 Connecting to our new kubernetes cluster

    Lecture 229 Creating a workflow to deploy our manifests automatically

    Lecture 230 Dev resources and prod resources

    Lecture 231 Creating the other deployment workflows for the other services

    Lecture 232 Deploying the secrets and the ingress controller

    Lecture 233 Deploying our manifests via github actions

    Lecture 234 Checking our deployment

    Lecture 235 Getting a domain name to point at our Load balancer

    Lecture 236 Tying up the loose ends part 1

    Lecture 237 Tying up the loose ends part 2

    Lecture 238 Adding SSL to our deployment part 1

    Lecture 239 Adding SSL to our deployment part 2

    Lecture 240 Finishing up the deployment

    Those who would like to learn how to build an app with Microservice architecture using .Net