Feature in a box

We should be able to program with "Feature in a box" or "Vertical slice" so that I can create modules that add functionality to existing entities.

Model

All properties, and methods related to a single feature should be defined with a partial class in one folder.

Logic

All logic for a feature should be in classes within a single folder.

Tests

All tests related to a feature, should be in classes within a single folder.

Shared logic that supports multiple features

When Interfaces, entities, and logic that are used in multiple features, then create a single feature for the combined logic. Do not create helper classes.

Direct dependencies to other projects

Modules should rarely have a reference to another module. Instead they all reference a common model through which they interact with other modules.

//TODO: This document needs more work.