A really solid place to start at least most of what you ask for is covered here:
Unless you haven’t already found this post?
Then if not check here:
And here;
All this info should at least help start you off.