Basically I was able to get native apps running on Android and IOS in just a couple minutes when I tried it out a few months ago. It was quite amazing.
https://www.firebase.com/ and such are super cool, but probably not necessary. I suggest that you start with something like this:
Then, as a part of your initial client connection process, the client will send you their location.
Then on the server you’ll have a giant list of people and their GPS locations (I’m optimistic that you will have a giant list of people :)).
So, my advice to you is to get a simple node.js chat service running like the one in the tutorial above. This will give you a web-based chat services. Then you can modify the client code to send the GPS location using the browser’s geolocation api (http://www.w3schools.com/html/html5_geolocation.asp) and you can modify the server to only distribute messages sent by users to other connected user that are within a reasonable distance (as calculated by the haversine formula).
Then once you get all of that working really well, you could take the whole thing into the native app experience really trivially (i.e. with no code major changes to your web client!) by using Cordova/PhoneGap.