In my last post I covered best practices around Sitecore and Helix and noted that Foundation projects should not have renderings in them. This nagged at me because I knew Sitecore Foundation had a Foundational Common Components project which defined basic HTML component templates and Renderings. I did this to allow other Feature projects to references it for the common templates and some of the helper functions that I also put in that project.
The more I thought about it though, the more I felt this wasn't correct, and after reflecting on my last post, I bit the bullet and refactored the Foundation.CommonComponents into two projects: One I kept as Foundation.Components and one I added as Feature.HTMLComponents. The feature contains all the renderings and related Rendering templates. The foundation project kept the helper functions as well as the core content templates. Since there are no issues with a feature depending on a foundation project, I think this better suits the architecture.
You can get the latest from Github to see this change.