- What is .NET?
- Why should I learn about it?
- Official documentation
- Prerequisites
- Develop with AI
- Building the Pezza Digital Solutions
- Phase 1-4: Foundation & Best Practices
- Phase 5-6: Performance & Events
- Phase 7-9: Microservices, Security & UI
- Phase 10-11: Database Migrations & Cloud-Native Orchestration
- Phase 12: LiteBus CQRS Migration
- Phase 13: AI Integration with MCP Server
- Phase 14: External API Integration
- Phase 15: Container Registry Publishing
- Complete architecture overview
- Docs website overview
- Recommended libraries
.NET is a powerful, versatile developer platform that enables the creation of a wide range of applications. It is a free, cross-platform, open-source framework that can be used to build web, mobile, desktop, gaming, and IoT applications. One of the best ways to get started with .NET is through the .NET Incubator, which is designed to provide hands-on experience and real-world application development skills to aspiring developers. This training course covers the essential concepts of .NET programming, including C# language syntax, debugging techniques, and the use of .NET Core libraries. With the .NET Incubator training course, you can become proficient in creating high-quality, scalable applications using the .NET platform.
- What is .NET? - Read more...
.NET is a cross-platform framework, which means that developers can build applications for Windows, Linux, and macOS using the same codebase. This allows developers to target a wider range of platforms and reach a larger audience with their applications.
.NET has a large and active community of developers, which means that there are plenty of resources, tools, and libraries available for developers to use. This also means that developers can get help and support from the community when they run into problems or have questions.
.NET is designed to be fast and efficient, which makes it ideal for building high-performance applications. It also provides scalability features such as load balancing, which can help applications handle large amounts of traffic.
.NET is a relatively easy framework to learn and use, especially for developers who are already familiar with object-oriented programming languages such as Java or C++. The syntax is straightforward, and there are plenty of tutorials and resources available to help developers get started.
.NET can be used to build a wide range of applications, including web applications, desktop applications, mobile applications, games, and IoT applications. This makes it a versatile framework that can be used for almost any type of project.
Overall, developers love .NET because it is a powerful, flexible, and easy-to-use framework that allows them to build high-quality applications for a wide range of platforms and use cases.
Links to the official documentation:
- Fundamentals overview
- Learn C#
- .NET documentation - Learn to use .NET to create applications on any platform using C#, F#, and Visual Basic. Browse API reference, sample code, tutorials, and more..
- Microsoft learn for .NET - Learn how to build apps across multiple platforms with programming languages like C#, F#, and Visual Basic. Supported on Windows, Linux, and macOS, get started developing your next project with .NET today.
- .NET foundation - The .NET Foundation is an independent, non-profit organization established to support an innovative, commercially friendly, open-source ecosystem around the .NET platform.
- .NET Youtube
New to AI-assisted development? Learn how to work effectively with GitHub Copilot, ChatGPT, and other AI tools while maintaining clean architecture and coding standards.
- 📚 Develop with AI — Full Guide - Comprehensive guide covering architecture, design patterns, naming conventions, async patterns, and DRY principles
- ⚡ Quick Reference - One-page cheat sheet with essential patterns, naming rules, and anti-patterns
- 💡 Prompting Examples - 10+ real-world scenarios with copy-paste-ready AI prompts for common tasks
Key Topics:
- Clean architecture and CQRS patterns
- Primary constructors and property naming (no underscores)
- Result pattern for consistent error handling
- DRY principles and extension methods
- Custom Dispatcher pattern for command/query separation
- Async/await best practices
- Code review checklist
Start with the Quick Reference, then dive into the Full Guide for complete context and patterns.
We integrate AI-assisted development following an "Awesome GitHub Copilot" approach so learners can use prompts, agents, and skills safely and effectively.
- Awesome Agents: specialized assistants and MCP integrations that can run local tasks and help inspect code. See
./AGENTS.mdfor examples and how to run a local MCP server. - Awesome Prompts: curated, task-specific prompts for refactors, tests, and documentation. See
./AI_PROMPTING_EXAMPLES.mdfor ready-to-use prompts. - Awesome Instructions: coding standards, patterns, and guardrails for AI output. Read
./DEVELOP_WITH_AI.mdfor rules and examples. - Awesome Skills: self-contained folders with instructions and resources (e.g., codegen, test scaffolding) that augment Copilot capabilities.
- Awesome Collections: curated sets of prompts and instructions for common workflows (CI, DB migrations, CQRS refactors).
Quick usage
- Read
Develop with AI — Full GuideandAI_QUICK_REFERENCE.md. - Run local tools (linters/tests) before accepting AI changes.
- Use the example prompts from
AI_PROMPTING_EXAMPLES.mdand adapt them for your phase.
Links & examples:
- Awesome GitHub Copilot reference
- See
./AGENTS.md,./AI_PROMPTING_EXAMPLES.md, and./DEVELOP_WITH_AI.mdfor practical workflows.
Learn essential design patterns and architectural principles used throughout this incubator:
- 🎯 Design Patterns Hub - Comprehensive guide to SOLID principles, Result pattern, CQRS, Dispatcher/Mediator, Repository pattern, and more
- 📖 Pattern Cheat Sheets - Quick reference guides
- 🏗️ Project Templates - Ready-to-use starter templates
Core Patterns Covered:
- SOLID Principles
- Result Pattern for error handling
- CQRS (Command Query Responsibility Segregation)
- Dispatcher/Mediator for decoupling
- Repository Pattern for data access
- Dependency Injection
- Feature-based architecture
- Clean Code principles
- Testing patterns
- .NET Prerequisites - Read more...
- Setup Read more...
In this section, we will start building projects to allow Pezza to manage their pizzas and allow customers to order their favourite pizza online.
Restaurant staff should be able to manage their different pizzas through a web application. Customers should be able to order a pizza online, this order should be visible to their 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:
- Expose your Pizza Management through an API using .NET Web API that will be consumed by the front-end application. It will consist of a customer and a pizza entity.
- Create a simple ordering system in .NET MVC to allow customers to order pizzas.
- Allow for customer notifications to be sent out via email.
flowchart TD;
A[Customer] -->|Order Pizza| B(Pezza Website - Web + Admin);
B --> C[Pezza Web API];
C -->|Email Notification| D[Notification Console];
C -->|DB| E[Pezza DB - SQL];
Learn the fundamentals of .NET project structure and clean architecture. Refactor a basic project into a layered solution following single responsibility principles.
Topics:
- Data Transfer Objects (DTOs)
- Clean architecture / layered architecture
- Project structure and organization
Extend the foundation to all entities with full CRUD operations. Introduction to CQRS pattern and MediatR.
Topics:
- CQRS Pattern
- MediatR NuGet Package
- Complete CRUD operations
Enhance data handling with validation, filtering, searching, and pagination. Deep dive into Entity Framework Core.
Topics:
- Getting Started with Entity Framework Core
- Fluent Validation
- Filtering and Searching
- Pagination
- EF Core: Migrations, Change Tracker, Loading Strategies
- TPH, TPC, TPT inheritance patterns
Implement team coding standards and comprehensive error handling strategies.
Topics:
- Error Handling
- Coding standards enforcement
- Exception handling patterns
Optimize application performance with caching and compression strategies.
Topics:
- Performance and Memory Management
- Response caching
- Compression middleware
Implement domain events, email notifications, and background job processing.
Topics:
- Domain Events pattern
- Email notification system
- Background job scheduling with Hangfire
Build API clients and understand microservices architecture patterns.
Topics:
- NSwag Overview
- API client generation
- Service-to-service communication
Secure your application with authentication, authorization, and security best practices.
Topics:
- JWT Authentication
- OAuth2 integration
- Antiforgery tokens
- HTTPS & HSTS
- Secrets management
Build front-end clients with MVC, Razor, or Blazor for admin dashboard and customer website.
Topics:
- Admin Dashboard (Portal)
- Customer Website
- Server-side rendering
Implement automated database migrations using DbUp for version-controlled schema management.
Topics:
- DbUp migration framework
- Version tracking
- Idempotent migrations
- CI/CD integration
Combine .NET Aspire orchestration with DbUp migrations for production-ready microservices.
Topics:
- .NET Aspire 8.0 service orchestration
- Service discovery and health checks
- OpenTelemetry observability
- Docker containerization
Implement a custom CQRS dispatcher from scratch for complete control over command/query separation and pipeline behaviors.
Topics:
- Custom Dispatcher implementation (based on stianleroux/Dispatch)
- ICommand and IQuery interfaces
- Pipeline behaviors for cross-cutting concerns
- Scrutor for automatic handler registration
- Exception handling and actions
- Notification pattern for domain events
- Clean separation of commands and queries
Build a Model Context Protocol (MCP) server enabling AI assistants to interact with your application through natural language.
Topics:
- Model Context Protocol (MCP)
- STDIO-based communication
- JSON-RPC message handling
- AI tool integration (Claude, ChatGPT)
- 18 domain-specific tools for pizza management
Learn to integrate with external APIs using the Pezza Mock Delivery Service, implementing webhooks, retry logic, and resilient patterns.
Topics:
- HttpClient patterns with typed clients
- Webhook receivers
- Retry policies with Polly
- Event-driven integration
- Multi-service docker-compose
Containerize and publish the Pezza API to GitHub Container Registry using GitHub Actions CI/CD.
Topics:
- Docker multi-stage builds
- GitHub Actions workflows
- GitHub Container Registry (GHCR)
- Image versioning strategies
- Frontend consumption patterns
For a comprehensive overview of all phases and architecture evolution:
- 📖 Architecture Complete - Full phase overview, technology stack evolution, and running instructions
- 🌐 Open the docs website - Explore phases, learning objectives, outcomes, and build labels in one place
- NuGet libraries and tools used across all phases