1. A method comprising: receiving, at a computing device, a first request from a first user device for first data, wherein the first request identifies a first data source; sending, from the computing device, a first data access request to the first data source, wherein the first data access request is based on a first reader object associated with the first data source; receiving, at the computing device, the first data from the first data source, wherein the first data has a first format; transforming the first data in the first format to normalized data in a normalized format based on the first reader object; selecting, at the computing device, a first presentation object from a database comprising a plurality of presentation objects based on a first device type of the first user device; and transforming the normalized data in the normalized format to output data in an output format based on the first presentation object.