Standard Package Layout
Ben Johnson

This is very reminiscent of Uncle Bobs Clean Architecture approach ( and I’ve been using the exact structure you describe as a result.

For me, one of the key benefits is that I can look at a repo and see in the root directory all the key domain objects and tests that show how to use that domain; that is, I can quickly see WHAT it is this package does. then there are other dependancies branching off from that that.

In the structure Uncle Bob describes you should never refer to these dependancies directly (much like you are doing with the http dependancy example) and that you should only call into dependancies, not out.

Great stuff!