I tried to search, but could not find a good one that explains everything, the links that I found contain only some fragments of code.
Google Developers has many resources. Here are a few noteworthy ones: