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 🐣 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 Appendix 🥚 Glossary Coding standards Cheat Sheet Changelog