A web app is known to be progressive if it has the following components: