Recently I started studying multi-module architecture, and decided to write a sample project. There are though a few things that have me confused.
Let's say I choose to break down my project into a database module, an api module, a core module, for shared logic, and feature modules
Now, here's what confuses me. Supposedly, the modules should be decoupled, and able to be used as libraries. So I could theoretically just copy and paste them to other projects. That means that the api module should be independent of the feature modules. At the same time, higher level modules should be independent of lower level modules, so features should include interfaces, that the lower level modules should implement. But this goes against recommendation number 1, since they now cannot work independently
I could always have a mediator module, something either like a domain, or a repository module, but that again goes against both the above.
P.s. I am not trying to solve a problem with multimodule architecture at the moment. What I am recommending is, indeed, overengineering. I am doing it for the sake of understanding and practicing the principals