Cloud Site for GFR

Group CS 52

About the Team

Hello, my name is Hao. I am a senior at Oregon state university, majoring in computer science. My major option is AI and machine learning, so I am good at data structure and algorithms. What's more, I am very familiar with front-end and back-end, database, cloud and mobile development.

Hello! My name is Zhihui Liu, I am currently studying in Oregon State University. I am interested in web and app development, UI design. The programming languages I use are C/C++, python, JavaScript, HTML and React.js.

Hi, I am Yihao Wu. I am a senior in computer science at Oregon State University. I am interested in UX/UI design and front-end development.

My name is Nicholas Kosa, and I'm really excited to be a part of this project! I'm a 4th year CS student at OSU with a business minor. I love all things automotive so this project is right my alley and hopefully we can help GFR make the best car possible.

The Challenge

Data retrieval is a time consuming process

GFR's car data is stored on server on the OSU campus, and retrieving data can be a lengthy process. Users are required to VPN into the server, where they need to use scripts or even raw SQL commands to access the data. We're challenged with making this a much easier, more accessible process.

Use the Cloud!

'The Cloud' is a bit of a buzzword these days, but it was exactly what we need to accomplish our goal! We chose to use AWS as a platform for GFR engineers where they can login and access telemetry data anywhere with an internet connection.

In Depth with AWS

Our project is built on Amazon Web Services, a very powerful and versatile cloud platform. AWS provides hosting, database services, authentication, and any other computing power we may need. The beauty of AWS is that everything is modular and designed to interact, so if GFR finds they need a different kind of database or computing function, it can easily be created and implemented.


Lets break down all of the technologies we used:

AWS Amplify

AWS Amplify is a serverless full-stack framework, and it is the foundation of this project. With Amplify, charges are only incurred based on usage, which is perfect for GFR's use case. Cars are only run during certain seasons and on an inconsistent schedule, so we are only charged during active times. Within Amplify, we have chosen to use React as the front end framework, DynamoDB for the database, and Amazon's API Gateway to facilitate communication between all of these services.


React.js

Our frontend is built on React.js, one of the most popular JS frameworks. React's state system is the perfect match for our needs, allowing for our database to be easily displayed. In the future, it is easily extensible to take advantage of any cloud computing functionality GFR may need.

Amazon API Gateway

The glue holding all the individual pieces together is the Amazon API Gateway. All the communication between the frontend and backend is done through the API gateway, which was created using GraphQL to make integration with the frontend as easy as possible. We also combined the API Gateway with Cognito to ensure only those with access can use the site.

Amazon Cognito

GFR requested an authentication system, so I chose to go with Amazon Cognito. Access to the site can be controlled by administrators and user groups. There is currently email verification, as well as the option to add 2FA and phone number verification.

DynamoDB

Moving the database to the cloud was not a decision we made lightly, but the speed and accesssibility benefits far outweight the costs. We created a DynamoDB instance which stores all of the backend data and interfaces with the front end site. Costs are only incurred when the database is used, keeping costs at a minimum.

GraphQL

GraphQL is a data query language built for APIs. It integrates with our DynamoDB and API Gateway instances very easily. GraphQL is the link between our frontend and backend, and is an integral part of the project.