Has basic types and interfaces for your application. Including the application config and Registry with all the interfaces.
Optionally could also include some common logic for several applications.
Handlers. Uses interfaces from the Domain layer to implement the logic needed for the handler.
Optional. Prepares input and output to fit the Usecase handlers’ signature. It is here to reuse the same handlers for HTTP and GRPC interaction, for instance.
Populates Domain’s Registry with all the interface implementations on the app start.
To make the app testable and easy to maintain (replacing one implementation with another one will be less painful as only needs updating of the Infrastructure level).