A small sample project of how I like to build a maintainable and scalable c# selenium framework by using several layers of abstraction. There are a lot more features that could be added, but this is a helpful starting point.
ATB (AutoTestBase) <-- WebFramework <-- Test
Test makes calls from WebFramework, WebFramework makes calls from ATB.
The AutoTestBase wraps around Seleniums API to add addition features. This project handles driver generation, custom actions, custom 'Element', logging, integrations (todo), wait-for feature (todo), and much more.
Designed to be imported into ANY project needing automation.
Contains Page Object Model (POM) for each page/view (I like to call them views, since most web apps have a lot of reused 'views' or components such as a navbar).
Contains the NUnit tests themselves. 99% of the method calls will be from the WebFramework.