In my previous blog, I talked about some features of ScalaGeek. To achieve those feature a lot of has been done that I will cover in coming blogs. In this blog, I will talk about some in-build features of ScalaGeek that makes it flexible.
This is the complete metaData of ScalaGeek. This is in the form of JSON. Basically, it is the structure of the whole application. This MetaData decides everything. We can arrange the order of different games, challenges to each particular game, hints. This MetaData does not contain any content data likes Questions, Hints, videos. Now we will discuss each and every JSON in details.
This is a JSON which stores the only user email address. when the user enters email address to scalageek then a route gets hit. which stores emails address to the real-time database. ScalaGeek only requires an email address. A session Id for a particular email Id is created which helps to start a particular game that point where the user left. By this ScalaGeek manages the email address of the users.
This is the main part of the metadata. The gameList JSON is responsible for each and every game structure. As you can see in the image we have an array of multiple games. This is JSON of first game only.
The first field of this JSON is the challenger. This field contains the twitter handler of that user. Now you can see the array of levels that can store multiple levels of a particular game. Here we have an orderNumber. This order number represents the order of the level if you enter orderNumber:2 of a level then this level will arrange after the level that has order number of 1. Basically order number arranges the things to increment order. We this order number has unsorted then ScalaGeek will automatically sort this order.
Now we next field that is stages. Again this an array which contains the sequence of the stage. In each stage, we have actions which contain metadata of each page of a stage. Again this actions has orderNumber similar to the level orderNumber. we have a unique field that is Type. In the ScalaGeek we have four types of data.
1. AL: This Type is for the Action Line page.
2. ALI: This Type is for the Action Line Input page. where the user enters the remembered action line.
3. MCQ: This Type is for the MCQ question page.
4. VIDEO: This Type is for the video tutorial page.
By this type of design of metadata, ScalaGeek is so much flexible. we can decide about the content, which page comes on which position. By this, we can even add or remove pages from the real-time database. we no need to change code for it. Why we use the only real-time database for it will discuss in coming blogs.
This field of metadata makes ScalaGeek more flexible in terms of deployment. This whole metadata can handle front-end only there is no connectivity with back-end code. In case we want to change server instance where our back-end jars are running then our instances ip will definitely change. In that case, changing IP in front-end code then re-deploying makes bad practices. So to handle this situation we will config IP address only in the metadata. ScalaGeek will automatically connect with a given IP address.
As the name tells, this field contains the score of levels that the user score. The record is differentiated with the user ID that is generated during login. and next is score field that shows the user score.
This field is for the notification. User data comes in this field if the stage got cleared. This contains data like which stage is cleared, scores of that stage, etc. Basically, this data is used to show at the result page.
These all things make ScalaGeek more flexible and unique. This blog covers only some feature that working in the background. We will cover more about ScalaGeek in the coming blogs. If you want to know more about ScalaGeek then Download it now —> https://play.google.com/store/apps/details?id=com.knoldus.scalageek&hl=en
Thank you for sticking till the end. If you like this blog, please do show your appreciation by giving a thumbs ups. Share this blog and give me suggestion on how I can improve my future posts to suit your needs. Follow me to get updates on different technologies. For any queries, feel free to contact me at firstname.lastname@example.org.