Recycling is very important as waste has a huge negative impact on the natural environment. With all the different ways to recycle and sort, it is easy for anyone to get lost.
What even is #7 plastic and can I recycle this Ziploc bag? We wanted to answer questions like these.
What it does
SmartRecycle is a web-based application that uses a users camera in order to take an image of an object in their environment. This image is then processed into descriptive text, queried against a database of recyclable items and all of the relevant recycling information is returned to the user in a seamless experience.
How we built it
We have a react.js powered front end the users accesses smartrecycleapp.com which lets the user take a photo. This photo is converted to a base 64 representation of the image and sent to our back-end powered by node.js and express.js api.smartrecycleapp.com.
Our server then sends the image to multiple Google Cloud Vision API end-points and creates a descriptive identifier of the image. This identifier is then sent to the same API RecycleBC uses to power their website. We pick the best match and return the recyclable information to the front end to be displayed under the photo.
The frontend server is hosted on AWS S3 while the backend server is on AWS Beanstalk . We used other AWS Services (Cloudfront, Route53 and Certificate Manager) to secure the website using SSL.
Challenges we ran into
- The difficulties of hosting with https in order to access the users camera
- How to access RecycleBC API when we could find no public documentation
- How to use the Google Vision API to return a descriptive identifier of the image
- How to aggregate the results of multiple Vision API endpoints
Accomplishments that we're proud of
Having a working product hosted on a real website that we can show to our friends and family! (and maybe even employers too.)
What we learned
Kohl - I used this opportunity to learn to investigate RecycleBC's website and reverse engineer the API call they were using in order to send requests to the same API.
Njenga - Through this project, I learned how to use Express.js on Node.js and call Google vision API.
Vipin - I have learned about using Cloud Vision API, node.js and effectively using REST API services to leverage maximum information. Overall this was such a great learning experience . Biggest lesson I learnt - Nothing is impossible!
Pan - I learnt about react, the design pattern of a whole mobile web app, and how to make awesome intro videos! Everyone was so helpful, dedicated, and extremely talented! This is definitely the experience I would cherish for my life!
What's next for Smart Recycle
- Better image classification
- Natural language processing to transform the image descriptor into my human-like text for querying the database