In a fairly complex system with a dozen or more git repositories, most of them are done in a cookie-cutter fashion.
What is or would be your best approach to deal with duplication?
In my opinion the project creation could become a template so that you can easily scaffold another project. (so not centralized but copypasted) I would avoid centralize this code because it makes the application very stiff regarding i/o capabilities, security constrains and interfacing with your metal or cluster.
Then there is the business logic, which I would centralize in the parts that belong to the same model in the same bounded context. Copy pasting here means ensuring bugs crop up from diverging codebases.
Finally there is utility codes which appear over and over but are not part of the business logic, for example some code related to logging or monitoring. I would just copy and paste that. Centralizing this kind of code does not bring any advantage.