So, this is all well and good, but how do we approach the problem? Considering these two scenarios are very different, this means that the application needs to be as open and flexible as possible. This requires abstraction.
The method of finding the location is the first tricky bit. The system is not limited to a single location retrieval technology (eg. GPS), so a system that is not reliant on individual technologies is important. Also when the location is retrieved, how do we know what data the user is going to add or has already been added? There could be videos, images, text, audio or combinations. This again means that the data to be expected should also not be type specific.
Finally there are various ways this service could be accessed; through a web browser on a computer, through a mobile device (such as a smartphone) or even a dedicated application. This means that the communication interface needs to be flexible, and have a functional API.
In order to do this, we develop a modular system which is “unaware” of the the technologies being used, and if a different technology is needed, it is very easy to write a plugin which will allow it to work.