This project is a web version of the app Logo quiz by Bubble. For the most part I am the solo developer on this project. I talked with my employer regularly about the development of the project and also about implementation details. I created almost everything on the back-end and everything in the front-end aside from the assets used in the app. I started working this project on the end of 2017 with a bit of a hiatus in-between.
The app runs on React.JS along with Redux for state management. For the UI I used Material-UI which is inspired by the official google Material design. The app navigation was created by me using a listener on the Redux state.
For the database we decided to use Firestore which was still in beta. Most of the database logic is inside Cloud functions which handle all the sensitive data. During the development there was only one big limitation on Firestore, the position of a document relative to a sorted collection. This was needed on the leaderboards to show the position of the currently logged-in user. Unfortunately we had to give up on this functionality because the only solution was to download the whole data set and sort it on the client side.
The only real back-end used in this project is a PHP script that serves the correct internationalization file to the user depending on the domain. This solution doesn’t need to have any client side logic for choosing the correct language, and also the client doesn’t have to download all the language files only to use one of them.
Authentication is of course handled with Firebase, but I have my own implementation of merging Anonymous user to a social media account. The official implementation allows the merge of multiple account which in this case is undesirable. My implementation uses local storage to save the old user ID and also a cloud function that merges the user.