====== Tech Stack Overview ====== Here is the design doc that describes the reasoning between picking the technology stack for dashboard_v2. We will be discussing tradeoffs between Javascript and Python. === Motivation === We are moving our tech stack from Python to Javascript based on team experience and a larger open source community. The current team members either have more experience or will be gaining considerable experience in Javascript over the next semester (i.e ICS 314). For this reason Javascript is more useful in integrating new members into the project and give new members an interesting project to work on. === High Level Block Diagram === {{ :weatherbox:techstack:dashboard_v2_block_diagram.png?600 |}} === Overview of Technology Stack === The following technologies will be used for development of the dashboard. It is a good idea for new members to look over the documentation/complete tutorials on these frameworks if unfamiliar. Tech Stack: PERN * Database: [[https://www.postgresql.org/docs/|PostgreSQL]] * API/Router: [[http://expressjs.com/en/api.html|Express.js]] * Front End: [[https://reactjs.org/docs/hello-world.html|React]] & [[https://redux.js.org/|Redux]] * Back End: [[https://nodejs.org/en/docs/|Node.js]] ==== Front End ==== We decided to use this technology stack because it uses the very popular framework React/Redux. The React community has become increasingly large either rivaling or outright beating many popular frameworks such as Angular and Vue. This not only increases our chances of finding help through open-source forums, but also provides our current and future members with valuable project experience. ==== API/Backend ==== Express and Node is a typical stack that is used to communicate between the database. We will use Express to create the routes for our API and use Node to create Async calls and serve our data. ==== Database ==== For this project we decided to go with PostgreSQL. This is because the current database hosted on the SCEL control tower is a PostgreSQL database. There is currently no desire and need to change the database technology to a newer one. We will therefore continue with the existing database.