- What is .NET?
- Where can I ask for help?
- Solving the most common problems found to solve
- CRUD System
- Handling Background Jobs
- Creating an API
- RESTful - Web API
- Schedule Background Jobs
- Hangfire
- Building a Front-End to consume your API - *your choice
- MVC
- HTML & JQuery
- React (Coming Soon!) or
- Angular (Coming Soon!)
- .NET Fundamentals - Read more...
- .NET Overview - Read more...
For this Incubator we will be using .NET Core 3.1 - Scan through the basic concepts.
1. The Startup class
2. Dependency injection (services)
3. Middleware
4. Servers
5. Configuration
6. Options
7. Environments (dev, stage, prod)
8. Logging
9. Routing
10. Handle errors
11. Make HTTP requests
12. Static files
- Principles, Frameworks and Architectures
In this Incubator, we will build a solution based on the Single Responsibility Principle. To help us achieve this we will be making use of the CQRS pattern alongside a Clean Code Architecture. If you have never heard about these terms, don't worry we will be discussing them in detail.
- Setup your environment - How to video
- Visual Studio 2019 Community Installed
- .NET Core 3.1 Installed
- SQL Server Developer Installed
- SQL Server Management Studio SSMS Installed
- SQL Incubator - SQL basics for Beginners
In this section, we will start building projects to allow Pezza to manage their stock and a front-end website where customers can order their favourite pizza online.
Restaurant staff should be able to manage the stock through a web application as well as manage their different restaurants. Customers should be able to order a pizza online, this order should be visible to the selected restaurant. The customer should also be notified that their pizza is on its way. We will start solving these business requirements by doing the following:
-
Create a CRUD System in .Net MVC Project to manage stock and restaurants. Allow restaurants to place a request stock from head-office.
-
Expose your Stock Management through an API using .Net Web API that will be used by the front-end application.
-
Allow for customer notifications to be sent out.
-
Create a Customer Facing Website in your choice of Front-End Library.
We will be starting off with how to make a basic project and refactoring it into a solution following the single responsibility principle and how to set up a basic clean code architecture. This setup format will be used throughout the incubator.
Overview
We will be extending the foundation from Phase 1 to all Entities CRUD operations, we will also be moving to use CQRS Pattern and Mediatr NuGet Package.
Overview
Now that we have deployed phase 2, we can make a few enhancements. Also, it will be easier for the customer and admin to search and filter through the data, so we will add that in as well.
Overview
Improve how data is displayed and validated
- Fluent Validation
- Filtering
- Searching
- Pagination
When we work as part of a team, we usually need to adhere to coding standards. Let's have a look at how we can enforce some of the most basic standards and adding error handling.
Overview
-
Coding Standards
For improved performance we relaised that certain data doesn't change often and can be cached. We can also add a few small changes to improve performance.
Overview
Increasing Performance
- Caching
- Compression
We would like to notify the customer as soon as his order has been completed and ready for collection.
Increasing Performance
- Domain Events
- Simple Email Notification
- Schedule Background Jobs
- Hangfire
Overview
We will be building a basic Pizza website for Customers and a basic Admin Back-End. To help us do this we will use the Pezza Branding Guide & Design System.
Pezza Website
- Plain HTML
- AngularJS - Coming Soon
- ReactJS - Coming Soon
Pezza Admin Back-End
- MVC - Click here to get started
- AngularJS - Coming Soon
- ReactJS - Coming Soon
Now that we have increased the performance lets and an increase of customers we need to secure our website.
Overview
Add Security
- API Oauth / JWT Token
- MVC Antiforgy Tokens
We want customers to have the ability to track their orders.
- SignalR