I ' ve been doing MVC apps for some time and here ' s how I like to organise it . I normally start with the default setup but I create another project for my model . I also create another project as my businessdata layer . This keeps my controllers light , it decouples my database calls from my controllers and I also interface this layer so I can test my controllers without hitting the database . I ' d say most of my MVC apps unless they ' re really small are 4 projects minimum Main UI , Controllers Model EF Model , View models Datalayer Interfaces , business logic Tests Unit tests for controllers and other functionsIf I have functionality that is common to more than one project I will create an additional project . I used to have this as a Framework project that I ported from app to app but it ' s been awhile since I ' ve made updates to it so I just compiled it as it ' s own dll and reference it from anywhere that needs it . This project includes extensions , enums , string and date functions , serialization functions , etc . Basically stuff I use in almost every app I write and don ' t want to rewrite over and over again .