The Keeton Cloud

The Keeton Cloud is a system that collects and analyzes my day-to-day data and displays it as easily-consumable insights; think of it as Google Analytics but for life. By gathering the data generated from going about my day, from hours slept to songs I’ve played, the Keeton Cloud shows me trends and (will) be able to show predictions based on my current behaviors. This provides me with an all-in-one place to see my day, week, month, or year at a glance and find correlations between aspects of my life I wouldn't have otherwise thought of.

The Keeton Cloud Homepage
Backend

The serverless backend analyzes the raw data to create usable insights that the user can understand at a glance.

  • Google Cloud Functions
  • Google Cloud Firestore: No-SQL Database
  • Firebase Authentication
  • Node.js and Express
  • RESTful API
Frontend

The web console allows for creating customizable dashboards with stats and data visualization tools for interfacing with the data. My decision to learn and create this site with React has paid off tenfold. React has been a performance powerhouse and straight-up fun to work with. With a reusable component-based design and a plethora of quality 3rd party libraries, UI development has moved much faster than I expected allowing for more time to focus on the business logic. 

MorningDash

Why?

The Keeton Cloud builds off the last project (pictured at left) where I combined APIs from some of the services that I use, to bring together a single dashboard of information. This would display the day’s weather, calendar, and reminders to me every morning along with my current listening habits. This has been great with a few exceptions. First, I would love to access this information from anywhere, and not just when I wake up in the morning. This was a good start, but in order to add more data, I would need a much bigger display. Instead, by separating out the different categories of information, the user can create customized views.

That's where the Keeton Cloud comes in. It aggregates all types of data from a variety of sources and seamlessly integrates the data into a single stream. To do this, I decided to use a RESTful API because it allows for this regardless of the data source. I love the stateless, black-box approach towards communication between two systems and have wanted to make an API for so long, but didn’t know what to have the API serve. Now, not only can I use it to serve the data, but also use it as a console to control my past (and future) projects, such as controlling my lights with RemoteLight and toggling my air conditioner on and off with SmartAir.

The site is built using a microservice architecture so that each section of the console can be developed and scaled separately (as seen later on). This is perfect for creating future projects, as each one can be developed using whatever platform, language, or architectural style best serves its purpose, independent of the console. Uncoupled from the other services, each new project can be developed rapidly, simplifying debugging, and maintaining the reliability of the system as a whole.

The Keeton Cloud Authorizing
Keeton Cloud Tracers

While the majority of the site is still under development, there are some beta features worth sharing early. Using my watch to track my sleep, I created an automation script with Siri Shortcuts that collects the sleep data and sends it via the API automatically triggered when my alarm goes off in the morning. Here I am able to see how much sleep I’ve gotten and compare it to the rest of my week (and of course it supports dark mode). In the future, as my sample size grows, I’d like to start finding trends in the data such as average sleep duration over weekends vs weekdays (and so on and so forth).

The finance subsystem is one of the feature sets implemented as a separate service, as described earlier. This enables the service, and its associated data to scale separately and easily allow for some of the features to be public-facing. So far this includes the budgeting tool which allows users to create customized, balanced budgets simply and easily. Although the Keeton Cloud and API will remain private, I will post updates here, and add some public features on the finance site as well.

Cloud Finance Budgeting