Office Sports is an app where users can keep track of scores against colleagues in foosball or table tennis. Using the app, players can register match results (by scannig the opponents QR code) and view the scoreboard as well as recent matches. Users are also able to invite other players to a match directly inside the app. Scores are calculated according to the Elo rating system, which is done using a Firebase cloud function.
A version of this app written in Flutter can be found here.
The app is written in Swift 5 and all UI is built programmatically. Screens will gradually be refactored to SwiftUI. Firebase (Firestore) is used as the backend and users sign in using their Google accounts. An MVVM (model-view-viewmodel) architecture is used for structring the code.
SPM (Swift Package Manager) is used for dependency management. Currently, the only dependency is the Firebase iOS SDK.
The Web API is run as functions in Firebase. To deploy these, run npm run deploy
inside the Firebase/functions
directory. You will be prompted to log in to an account that has write access to the functions.