the JS file uploader to Cloud Storage is incredible
the authentication layer with custom JWT is a must have
the cloud functions with custom endpoints are the new PaaS
the realtime database is maybe not what you are looking for: you can't apply complex filters on your queries, thus you have to denormalize your dataset to be able to query it in an efficient way. I would personnaly recommend to use the realtime database for simple use cases (chat...) & to trigger HTTP roundtrips to your real DB for your complex queries.
In a recent project, I use the realtime firebase DB to watch timestamps of updated objects; like a frontside "pub/sub". Simply put: every time the backend updates an object it updates a timestamp in Firebase, and then the connected clients who are watching it know they should trigger an HTTP roundtrip.