So I have been hearing lately about What3Words and how the emergency services in the UK are using it to locate people. This, and other information I have read about recently has got me thinking. What3Words is a proprietary service, that the emergency services will be paying to use. Now a number of mountain rescue teams in the UK use a service developed by one of their volunteers called SARLOC which appears to have a similar set of requirements, but from what I have read appears much more useful for the mountain rescue teams that use it. Now what I have been thinking, these services both rely on the person that needs to be located to have a smartphone, with location services, and an internet connection. They both require the person to receive a link, and allow the opened web page to see their location. So with these assumptions, how hard is it to build a service that allows an operator to send a personalised link to someone, have that use the smartphone’s location services to get a current location for the user, and share that automatically with the operator?
What I’m going to try and do is build just such a service, share my progress as I go, and share the code on the code repository I built some time ago as I really do need to find a productive use for it.
What are the requirements of such a service?
- We need to allow the operator to login to show they’re more privileged than normal users
- The operator needs to be able to generate a unique link to send out to normal users
- The link sent out needs to query location services to get the location of the phone
- The link needs to update the service with that location
- The operator needs to be shown that location automatically
- The operator needs to be able to see multiple such locations at once
- The normal users need to be able to only update their own location
- The normal users need to not be able to see any other location
With those in mind, we need a reasonably simple API, with a login, and some form of state store. Despite the title of this post I don’t actually expect this to be easy. My next steps will be to choose a framework and/or language to build this in, and put together some thing to deploy what I write and host it.
My intent for this project isn’t to build a full commercial service, but to build a proof of concept, and hopefully learn something along the way.