TerraForm was inspired by a need for a free, intuitive way to manage and evaluate candidates for college theater auditions. I directed a musical for a student organization last year and the current solution of simply using Google Forms/Sheets to collect audition forms and then comment on each member within the sheet led to large, cluttered, and simply unmanageable masses of data for our casting team. TerraForm organizes all of the audition forms in easy to see cards and allows multiple people to make comments that can be reviewed later and in real time. This project can also be used by other student organizations (such as hackathons) to conduct executive board interviews or any sort of application process.

What it does

TerraForm enables anyone to easily view the submissions of Google Forms in an understandable format. There is a view for the profile of each applicant and a list of all applicants. For each applicant, the reviewers can comment and also view comments from other reviewers. The list of applicants can also be searched and filtered by all fields. Lastly, reviewers can log into the app via Google SSO, and this allows them to tag their comments with their name for all the other reviewers.

How we built it

We decided to use React (with hooks!), React Router for routing, CSS Grid + Flexbox to help with styling, and the Google Sheets API and Google SSO API to help integrate the app fully in the Google ecosystem. We ended up using a quick and dirty as a poor man's MongoDB substitute. Although we tried out styled-components early on, we decided that it wasn't worth the complexity tradeoff in the end.

Challenges we ran into

The least-expected challenge we ran into was the Google API rate limit. We ended up running around 60k queries over the course of the weekend, and had to switch API keys a few times since getting permissions to increase the rate limit actually would take a few days for review. It was challenging to find that the beloved async and await would not work in top-level JS or that it can't be used directly in the function parameter for the useEffect() hook.

Accomplishments that we're proud of

We're really proud of all the work that we've put in over the weekend. Together, we've overcome a lot of technical challenges, learning about a lot of different technologies as well as about each other! This weekend has been super fun (props to the CrimsonHacks organizers!).

What we learned

We learned a lot about how to use React, especially the new Hooks API that came out recently. Most of our team was not familiar with React Hooks before the event. In addition, we had to struggle a lot with CSS, Google SSO, and passing information through React Router properly to different URL routes. This is actually the first hackathon for one of our team members!

What's next for TerraForm

The next step is to add analytics and query engines to this so that Google Forms will be even more useful.

Built With

+ 1 more
Share this project: