With each day that goes by, humans generate a disturbingly large amount of waste that inevitably gets thrown into landfills. Even worse, a lot of the waste gets burnt releasing tons of toxic chemicals into the atmosphere.
- According to the EPA, the total generation of municipal solid waste (MSW) in 2018 was 292.4 million tons or 4.9 pounds per person per day. In the same year, we only recycled or composted a disappointing 32.1% of that amount, leaving the remaining 200 million tons to be sent to landfills.
- When looking forward, the World Bank predicts that the yearly global waste will rise to 3.4 billion tons by only the year 2050, as new regions of the Earth begin to develop.
Obviously, this is an issue that needs to be slowed down, if not stopped entirely. Unfortunately, there is no real way any average person can make a notable difference... False! Everyday purchases, most frequently food, are things that often lead to large amounts of waste, and are all things we can improve on.
- Whether it is buying less of something, or buying more sustainable alternatives, there is always something that you can do to help.
Again, the ways you can help out are not only through the food industry:
- Around 4900 Metric tons—60% of all plastics ever produced—were discarded and are accumulating in landfills or in the natural environment.
Because of this, my team decided to make Away, a mobile app that will help you become a more green citizen.
What it does
Away puts users in greater control and awareness of their waste. In just seconds, users can scan the barcodes of any packaged item, with a network of web scrapers, APIs, and databases retrieving/storing valuable information on each item. We'll provide you with the:
- The amount of waste it’ll eventually generate
- The types of packaging materials.
In case users want to simplify or edit any parameters for some kind of unique product, they can quickly change them and submit an individual scan, only a small extra step that will give our users more control.
With each scan, our web scrapers interface with the application, not only building awareness but giving options. Using a series of API requests to our custom flask APIs, the app retrieves scraped results on various recommendations on how they can improve their waste production given certain items. Upon scanning, users will be presented with videos, articles, and shopping options, tailor-recommending healthier, more eco-friendly options based on the scanned contents, and the user’s own history. By centralizing the process into one app, Away puts the power to change in each user’s hands.
On their home page, users can view all of their past entries, while seeing which goods are close to expiration to prevent things like food waste. Beyond recommendation on alternatives, information, and other possibilities, we want users to be able to seek long-term change. That’s why we developed the goal system to help you produce less daily waste and help you take your first steps in helping the environment.
- To create a goal, go to the home menu, press the plus button on the goals block, and enter the amount you want to reduce to and the date you want to reach before.
- Once you submit it, you can track your goals on the list in the goals block.
- You can also track your goals through the current goal block. This shows one of your goals that will end the earliest so that you can focus on one goal at a time.
Lastly, one of Away's coolest features, the AR visualization. With flutter-unity AR, we visualize your past trash, in your room. The more you waste, the more your digital landfill grows, something that might give users an extra boost on encouragement. It can be quite unnerving seeing how quickly this amount grows.
How I built it
We built the project using a combination of software and frameworks.
- We used flutter for our main app, including the barcode, scanning, data visualization, and most of the UI / user-oriented functionality.
- Behind the scenes, we created a network of web scrapers to extract data from the web, and find recommendations on alternatives to scanned items, including videos, articles, and shopping options which would then be sent to the app and show up on the screen (saved in firebase for later use).
- Using flask, python, and beautiful soup, we hosted the scrapers on an API, which then contacts the app via an API interface we built into the app.
Firebase was our go-to for data storage. We stored all scan, user, and scraped data in firebase for easy real-time use later on, and plugged it directly into statistics and charts which we put on our app dashboards.
- This allowed us to create functions for total waste, and other important information.
Lastly, we used flutter-unity (basically unity, plugging into flutter), to build an AR environment, where the user can walk through the virtual environment and see trash strewn around based on the amount of waste they've scanned in the app.
Challenges I ran into
We ran into tons of challenges in this project because there were so many new things to learn.
- Getting the Unity AR setup took Leo nearly 10 hours of errors and debugging since the library we were using wasn't very stable. Finally getting through all of the errors and having a successful setup was highly satisfying though.
- Another issue is that we got rate-limited a couple of times by the barcode information API provider, so we needed to conserve the number of requests and tests that we could do. Our recommendation web-scrapers were super unreliable at first since getting common algorithms and keyword patterns to get relevant results was surprisingly tough, but as we continued to work we built a solid web scraping engine.
Finding and manipulating the data to its maximum potential was also a challenge, as we had some options available, and we wanted to do the most possible with the data we were scraping and getting from users.
Accomplishments that I'm proud of
One of our members (Leo), had a fantastic performance for his first hackathon, as he was able to contribute to nearly every aspect of the project. All of us are thankful for the opportunity to test ourselves and obtain new experience.
We were very proud of being able to build our first AR project and to get a barcode scanning up and running. We're proud of being able to finish a fully functional version of the app, with a great-looking UI.
What I learned
Since some teammates came from various backgrounds, we learned various new skills, including AR, web scraping, firebase, flutter app development, and more.
As teammates, we learned a lot more about each other, and have seriously enjoyed working together. With every hackathon, you get the chance to interact with other programmers and learn valuable lessons about cooperation in a time-crunched project.
What's next for Away
We are hoping to expand the features and UI so that we can potentially build it into a startup that we can deploy on the app stores.
- We have tons of ideas to make the AR better, so we're hoping that we can continue to improve upon our idea.
- We're hoping to build more sophisticated scrapers that can factor in things like transportation waste, waste tracking to figure out where our waste goes, and several new features for the goal functionality.