D2. Design document

Final Architecture Diagram

Code Repository

Our Github Repository: https://github.com/TaoHuang0/Kinetik

  • 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
    • Used in the lambda function.
  • 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

Detailed Data Definitions

We did not use a database. Files were stored locally on the user’s browser. Every time that a user uploads a new historical data excel sheet, the previous file is overridden. Users only need to be able to see their most recent file; there is no need to have the ability to access a database with previously uploaded files when they are only viewing one file at a time in the UI.

Design Rationale: Design Decisions

Client wanted the team to host the application on AWS. AWS is also compatible with React, which the client also wanted us to use. The team had the most experience with React and it provides both speed and flexibility.

We used AWS Lambda for convenience and serverless computing, which allowed us to focus more on the functionality of the simulation rather than thinking about accessing databases and API calls. This also saved us time to clean up the UI design. 

We chose not to use a database because of financial restrictions and time constraints to get the application working with the lambda function.