Midterm Architecture Diagram:
![](https://tarheels.live/comp523s23teaml/wp-content/uploads/sites/4061/2023/05/image-1024x502.png)
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