...
Heroku is the cloud platform we will use to host API for application deployment, because it is easier to deploy small-size API for one project, Heroku also meets low computational demands and much more customer-oriented. So that’s why we use Heroku.
(Deveoplemt Development Software Architechture Architecture diagram)
Above shows how our application work in development, the deployment strategy have not been doen by use therefore we will add deployment architechture architecture later.
2. Discuss your current thinking about how parameters can be passed to your module and how results are collected. Show an example of a possible interaction. (e.g.- sample HTTP calls with URL and parameters) (Tingzhuang Zhou )
Initially we sign to put eveything everything query parameter in the request body, in order to make the URL string more readable for users, but soon we realized realize that GET request doensn’t countain doesn’t contain request body, therefore we have two options: to put query in query string, or to use POST request for the usage of request body, but to keep request format in standeredstandard, we have finally choose the query string as our selection.
...
ReactJS: an open-source frontend JavaScript library
We chose ReactJS for the frontend because it supports the use of components, which allows us to reuse existing code instead of having to rewrite similar features, which in turn allows for faster development
React is also better in terms of performance comapred compared to other frameworks like Angular, as it only updates components in the DOM whose state has changed, instead of updating every component again, making our app lightweight and flexible
React also has plenty of documentation and online resources, so the members of our team who were unfamiliar with it would be able to pick it up quickly
...
MongoDB: a cross-platform, NoSQL database
Initial database options are: MongoDB, PostgreSQL, SQLite
We chose MongoDB as our database as our app isn’t very big, so we didn't need to use SQL
MongoDB is more scable as it will inital initial a new data fields whenevery whenever we create the documents in database, hence suitable for agile iteration when adding new feature later.
Additionally, MongoDB integrates well with NodeJS, and stores data in JSON format, which matches the format our API will output in
...
PuppeteerJS: an open-source NodeJS library
We use PuppeteerJS for scraping the website as the library allows the backend to run a headless (a code-only) version of Chrome to load the websites on.
A headless version of Chrome doesn’t use as much resources and as such can be easily run in any server, such as the hosting servers that we are using.
PuppeteerJS also have high-level API control of the Headless Chrome browser via the DevTools Protocol. This allows for the code to read the structure code of the website directly and to access the required parts of the website.
Morgan: HTTP request logger middleware for nodeNode.js
Winston: Another logger for both develop and production environment.
CORS: NPM package for solving Cross Origin Resouce Resource Sharing problems
UI design - Material UI
...