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 . <EOS>