About The Project
Famous Fortnite streamer Squatingdog has been providing challenge maps to his followers for a long time. With his new app, the same maps are interactive and have a lot more features. Built from the ground up for Fortnite Battle Royale players, this app is updated weekly. Users are able to find everything they need to complete the challenges. With a 4.5 rating on Google Play and a 4.9 rating on the App store and thousands of reviews, we are particularly happy with the positive feedback we've had from users on this app.
One of the challenges that we prepared for was scaling the app smoothly as the user base joined and grew. With the launch of the app we knew that we needed robust systems in place to handle a large influx of users. For that reason we used Heroku because it has autoscaling.
In order to optimize the performance of the app, we switched from rendering all the markers within the frame of a user's view to rendering only those markers that are where a user is zoomed in on the map. Which markers get displayed is determined by how close that marker is to the center of a user's zoom point. It is the type of solution that is simple and easy for computers to implement and helped a great deal with the performance of the app.
Another feature that we are proud of is tracking the user's navigation history. When the app was originally released, it became clear that this was something the audience wanted! Based on how a user drills down and clicks on an item on the menu or a marker on the map, the back button takes you up the hierarchy of the item's category not back in history. This allowed users to navigate the menus more cleanly as well as keep track of the challenges more clearly. For example, if you go back and it happens to be a marker, it will automatically take you to the marker's location.
As with many of the mobile apps we work on, we built this in ionic. Ionic was capable of
handling all the features we needed to build, while also keeping the budget lean. With Ionic we can use a single codebase to deliver the app both to Androids and iPhones.
We used Node to handle the thousands of concurrent users. Node is able to handle requests asynchronously, not waiting for each request to complete before moving onto the next. Instead it processes all requests as they come in. Our database is MongoDB with Redis for cache to help with the number of requests made.