As Chance the Rapper once said,

“It go like count that stack,”

But today, massive technological applications are built in the cloud with huge numbers of resources. Their data flow won’t fit on a sheet of paper or a whiteboard. How can we ever hope to count, or visualize such a stack?

What it does:

CloudCover converts terraform files into a 3D experience. Users upload Terraform files, which are parsed and used to generate coordinates to display in VR. Users can view the stack on their mobile devices through VR and edit in desktop mode, all using intuitive, video-game-like controls.

But how?

Threejs and WebVR supported the frontend, while Google Cloud Platforms and NodeJS powered the backend.

Challenges I ran into

Generating the coordinates was difficult because we could not find an API to generate an orderly initial layout of all the resources. We used terraform’s built-in graph function to generate 2D coordinates, but had difficulties parsing for WebVR.

Getting a sane way of cross-platform rendering for mobile and desktop devices was tedious and headache inducing; luckily we had lots of edible coffee beans at our disposal.

Accomplishments that we’re proud of

  • Ability to view the same browser on mobile and desktop devices alike, taking advantage of their respective functionalities
  • Drag-n-drop feature to move objects in 3D space
  • Building mechanics that I actually had fun playing around with
  • Parsed complex Terraform files to generate graphs for a 3D visualization

What we learned

  • Coffee bean taste good
  • Static websites can be served directly from buckets
  • How to use GCP resources for the first time
  • Compute Engines are not readily scalable as App Engines are
  • Terraform, Tesseract, Tensorflow, Text file, and Typescript all sound the same when you haven’t slept in 24 hours
  • CloudCover is such an unremarkable name that anyone who hears it instantly develops amnesia, even qualified judges

What's next for CloudCover

  • It’s rough around the edges, but four things we’d love are:
  • Better input, maybe with dedicated headset and controller
  • Ability to share a mocked-up architecture, maybe in a markup language
  • Multiplayer
  • Autosave changes while in editing mode, maybe in a markup language

Built With

Share this project: