A method to externally store data, the method comprising: if a discovery and context awareness module of a networking middleware determines that one or more response(s) to transmitted discovery messages to one or more devices has been obtained from the one or more device(s), generating a storage scheme for files, by the networking middleware, by executing an instruction with a processor, using the devices based on the responses and based on a categorization of the files and resource capabilities of the devices, wherein the devices comprise at least an edge-based device and a cloud-based device, and wherein the categorization, by a prefetching circuitry, includes a first group of files to be stored locally at a local storage of an end user computing device, the first group of files comprising data and/or files being most likely to be used, a second group of files to be stored externally in an edge storage at the edge-based device, the second group of files comprising data and/or files being likely to be used, but less likely than the first group of files, and a third group of files to be stored externally in a cloud storage at the cloud-based device, the third group of files comprising data and/or files being least likely to be used; in response to an acknowledgement of a resource availability check of the devices from at least one of the edge-based device or the cloud-based device, generating, by executing an instruction with the processor, a map corresponding to locations of the files; storing the first group of files in the local storage; and causing transmission of the second group of files to the edge-based device and the third group of files to the cloud-based device. if a discovery and context awareness module of a networking middleware determines that one or more response(s) to transmitted discovery messages to one or more devices has been obtained from the one or more device(s), generating a storage scheme for files, by the networking middleware, by executing an instruction with a processor, using the devices based on the responses and based on a categorization of the files and resource capabilities of the devices, wherein the devices comprise at least an edge-based device and a cloud-based device, and wherein the categorization, by a prefetching circuitry, includes a first group of files to be stored locally at a local storage of an end user computing device, the first group of files comprising data and/or files being most likely to be used, a second group of files to be stored externally in an edge storage at the edge-based device, the second group of files comprising data and/or files being likely to be used, but less likely than the first group of files, and a third group of files to be stored externally in a cloud storage at the cloud-based device, the third group of files comprising data and/or files being least likely to be used; in response to an acknowledgement of a resource availability check of the devices from at least one of the edge-based device or the cloud-based device, generating, by executing an instruction with the processor, a map corresponding to locations of the files; storing the first group of files in the local storage; and causing transmission of the second group of files to the edge-based device and the third group of files to the cloud-based device.