In preparation for going through the design document with my supervisor next week. I started researching on all the options I have for the project.
In summary, I have chosen to go with React + Redux for the front end, then Strapi.io + JSON Web Tokens for the back end, then MongoDB for the database.
It would look something like this.
The focal point of this architecture is that it would be able to scale both horizontally and vertically depending on the environment. This means that this platform would be amazing for organizations of any size.
As the confidentiality of this project is still tentative, I shall not release the design document as of this time. (which includes the requirements)
- The industry is moving towards this direction
- It is made to scale
- It is easier to code both front and back end in the same language
- It is component based, so it's easier to build modular parts for it
- It is fast (virtual dom)
For the front-end, any framework would consists of many repeated modules.
React is the perfect front-end framework for it as it utilizes the concept of components. This allows me to build "smart" components that can be reused for the different parts of the app with lesser code.
Redux is used to maintain the state within the application. As there are many points of user interaction, it would be very useful if the application knows exactly which part of the system the user is at, which makes it easy to track the lesson progress of the user.
Strapi.io is used because it simplifies REST API generation, it provides an authentication layer to the app through the use of JSON Web Tokens.
MongoDB is used simply because it's a noSQL DB, which is perfect because the data being placed into the module would most likely be unstructured. It also has a default connector to Strapi which makes the connection seamleses.