This project inter-modular dependency uses a Diamond Architecture.
In such architecture, feature modules do not depend directly on each other. They all depend on a common module which contains the public APIs each of this module exposes to its clients. On top of the diamond, you see the integrator module, this is the app module. It basically acts like a coordiantor between all the modules.
This project uses google compose only nav3 navigation library. In this architecture each module is responsible for its internal navigation. Some modules contain an internal NavDisplay as an example of nested NavDisplays.
The integrator module on the top of the diamond, this one is in charge of the General App/Module Navigation. This top module is also in charge of tasks like App Startup, Notifications Routing, DeepLink Routing and such a global application stuff.
The DI framework of choice is Metro, go check the Metro Repo, highly recommended.
In the diamond architecture, each module exposes the public abstract API in common. Metro will bind the actual implementations from the feature modules or the app module.