We were inspired by the climate issues surrounded by human-generated carbon emissions.
What it does
ecospire pulls from Google Location data and Google Calendar API to synthesize an individual's carbon usage over a period of one week, one month or one year. The information that we obtain is processed through multiple APIs to calculate the dollar value of an individual's carbon usage. ecospire also provides the payment structure needed to make a donation to offset their CO2 production. By providing people with personalized facts on how they can neutralize their own carbon footprint, we inspire people people to make small changes to their lives with a BIG impact.
How we built it
- Backend & BIG Data: We obtained location data from Google Takeout which ended up being a 22-million-line file. We processed the raw JSON with node.js to make it acceptable for Google Cloud Storage. There, we migrated the raw data into Google Big Query to make it into a database-standard table. We then used another node script to upload the raw table to Firestore. On the Firestore end we wrote multiple functions to mass-query data to lighten the load on the frontend.
- Frontend: We used React for the entire framework and react-router for navigation between pages. For styling we used raw css and semantic UI to mimic the designs created in Sketch. The Chart.js was used to visualize the carbon emissions from both flights and car rides. The user is able to import their Google Calendar and Google Location information by logging in with Google on the homepage. After calling Firebase component functions, the frontend then interprets the data to present the carbon emissions data to the user in an interesting and engaging format. This format will guide the user to a donation page where they can pick a charity and donate using the Stripe API. ecospire also has an overview page that shows the overall effects of their CO2 footprint using a plant avatar.
- Design: We sketched a basic userflow based on our team brainstorming, then created wireframes and grayscales in Sketch. With input from the frontend, we developed hi-fi mockups and exported the assets as SVGs. For the background images and some smaller components, we used Adobe Illustrator to create engaging, colorful vectors with a color palette that is both soothing and engaging. The motif of nature is found throughout the web app in the form of flora images and natural waves.
Challenges we ran into
- At 22 million lines, the raw location data stretched our computing memory to the limits (literally!).
- Though team members had worked with Firebase in the past, none of us had worked with it at this scale. We made over 170 thousand reads/writes to our databased because of the sheer amount of data in this project.
- Part of our goal is making all this data accessible and meaningful to our users, so we discussed through many design decisions on how to present our data.
- Reconciling the shared number of packages we wanted to work with was difficult to configure.
Accomplishments that we're proud of
- We managed to finish this project end-to-end and produce something that we are all proud of that stayed true to our vision.
- There are so many moving parts in this project that we are proud of how we were able to divide tasks and concurrently work on every aspect of the project efficiently.
What we learned
- We learned that Google Cloud is extremely robust when it comes to accessing available personal information.
- The Stripe API is easy to integrate.
- The Google Calendar API was also easy to use and implement in this setting.
- Big Data is REAL big.
What's next for ecospire
We think there is enormous potential for ecospire in the future; we would like to create a mobile app so that people can check on their carbon footprint daily. Some of our location data is more inaccessible than other data, so we are interested in building out an end-to-end pipeline to process each user's individual location data whenever updated. Currently, our web app only calculates location data using Google Calendar and Flights, but we would like to take into account our users' lifestyle as well, such as eating habits and electricity usage. Since ecospire's goal is to inspire users with minimal effort, we would like to integrate IOT into our application to provide users with more data about their carbon usage without active effort on their part. Since we've built out this pipeline, ecospire has the potential to be scaled for enterprises, where companies can use ecospire to motivate both users and employees. Ultimately, our team aims to empower our users to make choices that will benefit the environment and improve the planet for future generations. No contribution is too small when it comes to our global home in which we all reside.