There are two approaches for building pipeline configuration.
First approach – via Plugin Project
This is your standard and preferred approach, where within your plugin you would be wiring up your pipeline block configurations. It keeps common logic together.
Second Approach - via Engine Project
This is your fall back for when you need complete control.
These two examples are available in both our https://github.com/Sitecore/Sitecore.Demo.Retail implementation and also in our SDK.
NOTE: You can not mix and match the two approaches. If you are leveraging either of the our available storefronts be aware where either approach is being used e.g.
Here is another example I’m working with a client on: