Whether its running, basketball, football or badminton, SportsPlay app allows users to explore a myriad of sports and match them with nearby users with the same level of playing skills. OnGraph’s mobile app development team built SportsPlay as both native iOS and Android app using Swift and Kotlin programming languages respectively. Backend was created in JAVA with MySQL database.
Several unique features were developed to make the app useful and engaging. For example users can create their own sport events. Once created it will be visible to users in nearby locations and they can then choose to join the event as a player. Users can also explore nearby sports venues based on the pictures and amenities offered at the facility. Users can check venue or court availability to create and schedule an event. A chat feature was also built into the app to facilitate communication between the matched players.
Scoreboard feature was created to keep a record of match scores which could be reviewed later by players. There is also a sports news feed to keep users updated with the latest in their favorite sports. Sports coaches can also register on the app and players can find coaches based on the coach profile and skill level. Users or players were also eligible for point rewards based on their app usage and games played. SportsPlay was designed to bring players, sports facilities, independent coaches and academies to an all in one platform and connect them based on skills and interest.
SportsPlay was one of a kind application with multiple user types to be registered on the app. Building this entire app and the unique features for each of the users was a complex task. Some of the critical challenges we faced during the development process are as follows. Addressing these challenges was important for user growth.
The client wanted to build a reward points system in the app. The rewards will get collected in the user account and the user can redeem them for qualified in app purchases within a given time frame.
The app requirement included an in app chat feature where matched players could chat conveniently or share information about games, venue or timings without having to leave the app.
For players to get a one on one coaching session with coaches, It was important for players to know the available Coaches in the nearby location and their daily and weekly schedules.
To make the app highly relevant for users it was crucial to show them the events and sports games happening in the nearby locations i.e all events and games in a stipulated radius.
With our experienced team of developers, we successfully found solutions for the above mentioned challenges. The solutions were successfully implemented and tested for interdependencies on other user types. Our commitment to solve challenges quickly helped us to deliver the final tested app within the proposed time.
We had to develop this reward system from scratch. We created the logic in Java with a simple currency model i.e. coins. Based on the logic revolving around the number of matches played by a user and the number of wins and loss, the user account will be updated with earned or lost rewards i.e. coins.
We had to find a quick and cost effective way to develop a chat feature within the app so that users don’t have to leave the chat to share information. Finally we decided to use socket.io client for the purpose and developed a socket chat app both at front-end and backend. The chat app was written using socket programming.
To resolve the issue of coach availability and to minimise overlaps, we developed an availability mechanism by using Google calendar API. Coaches can set their daily or weekly availability and the players will be able to book only the available slots and can not send a request or message at unavailable times.
To track all events and games in the nearby location, it was important to record a user’s location precisely. For this we added a geolocation mechanism using the core location framework on the front end and GeoFire on the backend to list all the events within a 50 Kms radius from the user's location.