MapTracker

September 01, 2019

This page will change as the project matures

Introduction

I play a lot of Source Engine games. All these games have both dedicated servers, and a large degree of community support for custom maps. There are many communities I love to play on, and some maps I enjoy playing much more than others.

It’s difficult to know when the maps I like are on though. I have to constantly be at my PC with the Steam server browser or the game itself open monitoring the servers I like to see what map is playing.

Not anymore! I built Ikamu.io to automatically notify me on either/both my PC and my SmartPhone whenever a server I like plays a map I like. You simply provide it a list of server ip/ports and a list of map names, and you will receive a push notification on any devices you have signed in and registered for notifications on.

Feed

Features

Ikamu.io offers both a free and a paid tier. A free user can experience the core notification functionality, with limitations on the number of servers and maps they can watch. Paid users receive additional features, and vastly increased watch limits.

Current feature list:

  • Add game servers you like, and view their current status in the webapp
  • Add map names you want to watch for. Free users can only watch for exact map names, e.g. dedust. Paid users can use wildcard matching, e.g. dedust* will match both dedust and dedust2!
  • View a servers recent map history, and when each map began. This will help you know if you just missed a favourite map, or if it hasn’t been on for a while; and inform you if the server has been playing a map for a while, so it might be about to change!
  • Web push notifications from the application. Supported by all desktop OS’s and Android (iOS does not support browser push notifications)
  • Live feed of watched servers
  • Popular data about users on the platform

Ikamu Server Browser

Ikamu Watched Maps

Technology

  • All code hosted on Github (private repositories for now).
  • The frontend is built with TypeScript using Vue, VueX and Nuxt.js, with Vuetify for styles. Hosted using Netlify; continuous deployment included.
  • The backend is built Go. There are 3 backend applications: _ The webapp RESTful API, using Gin _ A server polling process that continually grabs information from watched servers * A notification process that sends push notifications
  • The backend also uses a Redis instance, all ran using Docker, hosted using GCP.
  • Lastly a MySQL instance is hosted as a Google SQL Instance.
  • CloudBuild is used for all backend services to automatically create container images for GCR (Google Container Registry) on push to master branch
  • Mailgun is used for handling support requests from the application, with ReCaptcha verification
  • OneSignal is used for the Push notification service.
  • Database migrations are ran automatically on deploy, managed using golang-migrate
  • User authentication is handled using Auth0.
  • Caddy runs on the production server to proxy requests to the API container
  • We (myself and my excellent Test Engineer friend) use Trello to publiclly track the status of Ikamu.io’s development. You can find the board here: https://trello.com/b/irmcOJ2L/maptracker

Ikamu.io is LIVE and usabled here: https://ikamu.io