Oasis - The ultimate IoT hub

An IoT hub which allows you to publish and subscribe to MQTT events. Honorable mention in the Amazon hackathon.

Inspiration

A super simple way to connect to my personal IoT devices, all powered by AWS IoT.

What it does

It allows you to connect to your IoT devices without having to personally manage things like certificates and policies. It is the central hub where you can see real-time data incoming MQTT data, publish MQTT data, and even use machine learning / triggers to stay up-to-date on the state of your devices. All the actions on Oasis (such as creating a new 'thing') is connected to AWS IoT using the aws-sdk. All heavy lifting of certificate management, policy attachment, and rule creation is handled by Oasis' Lambda powered backend.

How I built it

Technologies used:

  • AWS IoT - As mentioned, all the Oasis actions produce actions within AWS IoT.
  • Lambda - Succeeded in making the backend completely serverless!
  • API Gateway - Handles the GraphQL API which sits infront of DynamoDB.
  • DynamoDB - Where all the data is stored.
  • Cognito - For user identity management and access control.
  • S3 - Where uploaded images and generated certificates exist. Also where the frontend website is hosted.
  • Cloudfront - Where the public website is accessed from.
  • AWS machine learning - Used to create binary classifiers based on the incoming data.
  • SNS - Used for communicating among the many Lambda functions. Also used for text notifications.
  • React - Used to power the frontend
  • GraphQL - The layer which the frontend communicates with.

Challenges I ran into

Debugging complex serverless architecture is still in its infancy. There are a total of 17 Lambda functions which need to work in harmony. I also realized that Lambda can't do realtime sockets (which makes sense since the functions are ephemeral). So creating a realtime data based architecture was a real challenge. I also got quite familiar with many aspects of the aws-sdk.

Accomplishments that I'm proud of

This thing has the potential to be a fully grown startup! This was my first real hackathon project, and I've put in a lot of effort trying to create something that would not only be useful for me, but also many other IoT hobbyist .

What I learned

I undoubtedly learned about a year's worth of front-end / serverless / AWS within the past 2 months.

What's next for Oasis

I think I would like to take this project to some beta users, and we'll see where it goes from there! :rocket::rocket:

Tech

AWS, GraphQL, IoT, React, Blueprint, Lambda, DynamoDB, Cognito, S3, Cloudfront, AWS Machine Learning, SNS, Twilio.

Links

<!-- Built using Vue, Tailwind, and Astro. Hosted on Vercel. -->