This idea was born in 2016 out of the suggestion that there should be a tool as simple as to find "Cheap Steaks" - for students or anyone on a shoe-string budget out for a good feed. The idea was nice, but much too limited -- why stop there? Why not be able to go beyond and allow users to give places their own human-friendly labels which can scale with constant change.
What not give places a literal hash-tag! #DogFriendlyParks, #FastCovidTests, #SavePlanetProtest - the application is endless.
What it does
The application takes all tweets that contain a geo-tag and places the point marker to the map. Selecting on a marker will show:
- how recent the tweet was made,
- the body text,
- the image (if any, by resolving the URL from Instagram) and
- a directions link to pull up on your maps app.
It will also colourize the marker from bright green (most recent) to bright red (most oldest).
How we built it
Harvests tweets in two twitter API's: Recent & Live Stream, both of which are stored to a NoSQL database (Dynamo) with a TTL of 7 days. Recent is used as part of ad-hoc searches while streamed are performed with rules of the map regions that connected users are currently viewing (idle application usage).
First, there is an EC2 instance which feeds the live stream. It also hosts endpoints to read in the bound coordinates of the users who are connected to the service. This is to feed back to the controller to be both stored in the database as well as to the users who are currently viewing that region.
Then there is a AWS serverless application which acts as the controller - maintaining the websocket connections from the client and serving the endpoints for the ad-hoc searches.
The client is a simple PWA application, which is hosted with CloudFront with an S3 distribution.
Challenges we ran into
When this idea was first sparked, it was Facebook that was originally intended to be the premiere backbone of this application. While the demonstration worked, it meant that you needed to "login" to the service, followed by harvesting every post the user has ever done to find the right data. If it had any luck on being successful, it would have been a highly costly and un-scalable. Hence, this idea was shelved for several years.
Accomplishments that we're proud of
This has been one of the most lightweight implementations I have ever done to something of this magnitude
What we learned
Two things I had not done until finishing off this project was the use of CloudFront with S3 to host websites - I had heard of this kind of implementation but was nice to put this to the test. Secondly the use of websockets through the AWS gateway, I found this compliments the use of the Severless framework really well.
What's next for Geohash
Monetization first and foremost. We would like to not only make use of the banner advert, but also to allow organizations to provide the markup for a premium tweet. The amount of impressions are captured for each post viewed within the app, and when the sponsored post comes up as a result - it is automatically shown to the user before fading away.
What we also aim to provide is community management, something in the way of "themed" days of the week, and for users to capture a location/post that highlights that theme. Could also be in line of promotional competitions to capture the best photo of that day's theme.