In what baseclass should I place a manager class

We put things like this on the GameMode. you can call GetGameMode()->CastToYourGameMode()->GetManager() (and even cache it locally if you’d like). If it needs to persist between levels, then the GameInstance is a better place. (Create a custom one-- you can use GetGameInstance() anywhere in blueprints just like GetgameMode())

In C++ these are in UGameplayStatics::GetGameMode and GetGameInstance