A bit of tinkering here and there, we thought it was good enough to have the evening efforts wrapped in a product and share it with our friends.
So in the end, all code was poured into a NuxtJS frontend, backed by Ruby, namely Roda, Sequel, Rodauth and a Postgres Database.
we put a little more work in, giving us features like:
of course our friends wanted to know, who got around the most 🚀
In order to plan where you haven’t been, user were enabled to set points on a map. User were then able to export the .gpx file, allowing them to create a routing file (by mostly using komoot) - which would then be automagically synced to their gps bike computer (Wahoo/Garmin). This really is a thing, everybody owns one 😎
At times there were tiles, which would be rather demanding. The Frankfurt Airport for example. So users wanted to make sure, their gps is picking signal and they would later have the tile being counted as visited.
Postgres runs on bare metal, being limited to localhost.
All other web related apps were dockered (easy scaling) and their traffic was proxied through traefik, enabling SSL encryption by letsencrypt.
Additional services and background jobs were setup using Rake and would be restarted by docker policy restart unless-stopped once they finished/terminated.
Logging via docker 😅 was enough to debug what was coming.
A staging environment on netcups cheapest VPS was good enough for debugging what didn’t reveal itself in development.
Calculating tile scores and leaderboard scores is done in a NodeJS fastify api backend, which isn’t exposed to the web, just the ruby backend.