Platform Selection

Midterm Architecture Diagram:

Platform Selection:

Languages:

  • Python (using PyCharm IDE)
    • Client Preference
    • 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, and the client had some previous code written in Python
    • Python is very powerful for modeling and doing computation, so it is much easier for us to replicate the Excel model in Python
  • 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

Alternatives:

  • TypeScript (using VSCode)
    • More strict grammar than JavaScript, so higher stability
    • TypeScript is an OOP language
    • Less popular than JavaScript
    • Team has less 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
  • 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
  • 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

Alternatives:

  • React-chartjs-2
    • With 5.7k stars on Github
    • React-chartjs-2 is a React wrapper for the popular JavaScript Chart.js library.
    • It supports animation and most of the charts it offers are responsive by default.
    • Less popular than Recharts
    • Team has less experience on this

Hosting:

  • AWS Amplify
    • Client Preference
    • Compatible with React and the client wants to use this technology and utilize AWS as much as possible

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

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
    • If we choose TypeScript, we need to use Angular instead

Back End:

  • AWS
    • Client Preference
    • Used for hosting the back-end calculations and data storage 

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

Input Text File:

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