Practically nobody can give you architecture tips since every project is unique, but what you need to understand is the UE4’s replication architecture. First of all you would like to research about the client server model and learn how it works (I had to manually make my own client-server architecture app to fully understand the basics). From there you would like to learn how to replicate a simple variables, and then how to do RPC - Remote Procedure Calls.
That will give you the basis to start a simple multiplayer project.
For example, had you wanted to replicate the Health of the player, you would have to mark it as Replicated property (whether it’s C++ or Blueprints).
Making a RPC function is a bit more advanced, but pretty easy if you understand it.
Make a custom event, mark it Run On Server, and then do all the functionality you want to be replicated as in singleplayer game. Just note that Run On Server means that a client will ask the server to do something for him.
You would have to define 3 functions in your class, that is the function name, the _Implementation, and _Validate. Then put inside of the _Implementation part, all the gameplay code.
You don’t have to worry about making your own custom server, UE4 already has it’s own listen/dedicated server system (OnlineSubsystem=NULL) and has Steamworks integration as well. You have to choose it for yourself.