Table of contents Getting Started Source code organization Architecture overview ✔️ Dependency injection 🐣 Data access ✔️ Domain ✔️ Deployment & Build 🥚 How to contribute Framework Platform ✔️ Bootstrapping ✔️ Caching ✔️ Configuration ✔️ Database Migrations ✔️ Events ✔️ Export ✔️ Hooks Identity ✔️ IO abstraction ✔️ Import Logging Data modelling ✔️ Model mapping ✔️ Modularity & Providers 🐥 Output Cache ✔️ Profiling ✔️ Validation ✔️ Scheduling ✔️ Search ✔️ Security Templating Content Imaging Localization Media Menus Multistore Blocks (Page Builder) SEO Topics & Pages ✔️ Widgets Commerce Cart Catalog ✔️ Payment Pricing Rules Engine Shipment Tax ✔️ Web API ✔️ Prerequisites ✔️ Help & Tools ✔️ Breaking changes in Web API 5 ✔️ Web API in detail ✔️ Authentication ✔️ Examples ✔️ Products ✔️ Orders ✔️ Customers ✔️ Import Profiles ✔️ Appendix Advanced Performance guide Service tier best practices DI best practices Type conversion View precompilation Distributed locking Async state Generic attributes Sync mapping 🥚 Data access (Deep Dive) 🥚 Search filter expressions ✔️ DbContextScope 🐥 Pooled DbContext factory ✔️ Database bulk operations ✔️ Useful extensions LinkResolver QR codes Native libraries 🐣 Cookie Consent 🐣 Troubleshooting Compose Modules ✔️ Getting started with modules 🐥 Controllers & ViewComponents 🐥 Filters 🐥 Localizing modules ✔️ Licensable modules 🐥 Deploying modules Visual Studio extension 🐥 Tutorials ✔️ Building a simple "Hello World" module 🐥 Adding tabs ✔️ Creating a Widget provider ✔️ Adding menu items 🐥 Creating a Block ✔️ Creating an Export provider 🐥 Creating a Domain entity Theming 🐥 Getting started with themes 🐥 Theme configuration 🐥 Theme styling 🐥 Theme inheritance 🐥 Asset bundling ✔️ Tag Helpers TIPS & TRICKS Tenants Appendix 🥚 Glossary Coding standards Cheat Sheet Changelog