Platform Selection

Frontend

Backend

  • New Architecture (2023 Nov)

Platform Selection:

Languages:

  • Python (using PyCharm IDE)
    • Client Preference
    • Selected by previous Team
    • The client had some previous code written in Python
    • Provides great functionality in terms of efficiently and concisely calculating the required data for the simulation, allows OOP, additionally has a great set of mathematical and graphing libraries that are useful for this project.
    • Python is very powerful for modeling and doing computation, so it is much easier for us to replicate the NLP model in Python
    • Python has really powerful library for Machine Learning, Deep Learning, and simulation
  • JavaScript (using VSCode)
    • Powerful front-end scripting technology that all group members have experience with, and used in ReactJS
    • Team has more experience on JavaScript
    • Recommended by Client JavaScript
    • The previous team had some previous code written in JavaScript

Alternatives:

  • TypeScript (using VSCode)
    • More stabe than Javascript
    • TypeScript is an OOP language
    • Team has experience on TypeScript
    • Also recommended by client

Libraries:

  • NumPy
    • Allows quick and efficient generation of a random number from a normal distribution, essential to our project
    • The previous team had some previous code using this
  • Plotly
    • Plotly for Python and Plotly for Javascript both provide the ability to create a multitude of charts and provide sliders, which can be used to help users visualize the simulation results over time
    • The previous team had some previous code using this
  • Recharts
    • With 19k stars on Github, 1.1M npm downloads
    • One of the most popular charting library for React
    • Recharts follows React’s component principle by enabling users to build charts with its reusable React components.
    • Very easy to use with React
    • Team has more experience on this
    • The previous team had some previous code using this

Alternatives:

  • React-chartjs-2
    • Recommended by a teammember of previous team
    • Its charts it offers are responsive by default.
    • Less popular than Recharts
    • Team has no experience on this

API for scraping:

  • ZenRows
    • Easy to use
    • Cheaper
    • Specifically designed for the task
    • client recommanded

Hosting:

  • AWS Amplify
    • Client Preference
    • Compatible with React and the client wants to use this technology and utilize AWS as much as possible
    • The client’s previous work is based on this

Front End: 

  • ReactJS
    • Client wants to use this technology to build the user interface, provides speed and flexibility, and some group members have experience with it
    • Team has more experience on React
    • The client’s previous work is based on this

Alternatives:

  • Angular
    • Team has no experience on Angular
    • Angular is better than React if the application is enterprise-grade and need to incorporate complex functionalities

Back End:

  • AWS
    • Client Preference
    • Used for hosting the back-end calculations and data storage 
    • The client’s previous work is based on this

Database:

  • AWS Amazon S3
    • Client Preference
    • Used to store a user’s historical go-to-market data used to calculate required inputs to feed into the simulation
    • The client’s previous work is based on this

Input Text File:

  • Excel (CSV)
    • Client Preference
    • Team has experience on handling CSV file