nopCommerce Dependency Graph The purpose of this series is to provide developers with enough practical information so that he/she can feel comfortable navigating the nopCommerce codebase. This includes overviews of the software architecture and Visual Studio solution layout.

For clarity, the documentation will reduce abstraction by omitting interfaces where possible. For example, instead of saying:

CatalogController.Search() calls
Nop.Services.Catalog.IProductService.SearchProducts()

I will give you the name of the concrete service class used at runtime:

CatalogController.Search() calls
Nop.Services.Catalog.ProductService.SearchProducts()

This will help you find the code you want more quickly. (Similarly, discussion of database/ORM features will focus on specific SQL Server and EF features where appropriate.)

This is not to say that you shouldn’t learn about programming principles, such as the Dependency Inversion Principle in this case. I will point out important leaning points along the way!

Finally, since this is designed to be a practical document, not much coverage will be given to areas that developers are unlikely to modify, such as the installer.

This will be a “living” guide that is revised as the nopCommerce codebase grows and changes. The main contributors will be myself and some guest programmers. A rough planned outline of the documentation is below.

Happy coding!


  • Introduction
  • Overall Architecture
  • Overall Visual Studio Solution/Project
    • /Libraries/Nop.Core
    • /Libraries/Nop.Data
    • /Libraries/Nop.Services
    • /Presentation/Nop.Web.Framework
    • /Presentation/Nop.Admin
    • /Presentation/Nop.Web
    • /Plugins
    • /Tests
  • Theming
  • Checkout Flow – Routes and Controllers
  • Plugin Loading – MVC Internals
  • Plugins – Nop Internals
  • Plugins – Payment Plugins
  • Data / ORM / DAL / Custom Data
  • Search
  • Localization
  • Upgrading
  • Source Control / Community
  • The Missing Bits
  • Other Common Gotchas
  • References