You could start here, some of the things you asked about are present:
Fading in / out could be done with widget animation.