Type Classes

Type Classes

Share this post

Type Classes
Type Classes
The app-concepts diamond

The app-concepts diamond

An observation about a typical application's dependency graph

Chris Martin's avatar
Chris Martin
May 25, 2019
∙ Paid
1

Share this post

Type Classes
Type Classes
The app-concepts diamond
Share

I find that when I break up an application into packages by feature, the dependency graph nearly always has this "diamond" shape:

Before I realized this, I struggled a lot. My naive impulse was to have four packages: "Feature 1", "Feature 2", "Feature 3", and a "Common" package for non-feature-specific stuff. This leads to one of three huge mistakes:

  1. Depe…

Keep reading with a 7-day free trial

Subscribe to Type Classes to keep reading this post and get 7 days of free access to the full post archives.

Already a paid subscriber? Sign in
© 2025 Mission Valley Software LLC
Privacy ∙ Terms ∙ Collection notice
Start writingGet the app
Substack is the home for great culture

Share