/SustainaBite

Primary LanguageJavaScript

Screenshot 2023-11-12 at 10 05 27 AM

Table of Contents

  1. Inspiration
  2. Key stats
  3. What it does
  4. How we built it
  5. Challenges we ran into
  6. Accomplishments
  7. What we learned
  8. What's next for SustainaBite
  9. Installation

Inspiration

We have lots of family and friends who have or currently work in businesses related to food. We've seen how businesses are hesitant to donate their food surplus that they can't serve anymore, but are still perfectly edible. We believe that there is not enough incentive for them to coordinate the logistics of delivery or contacting not-for-profits outside of altruistic values. Another large barrier to donating is that businesses do not want the perception of devaluing their food.

Key stats:

  • It's estimated that up to 10-15% of the food purchased by restaurants ends up being discarded even though it is still good to eat.
  • In March 2021, a United Nations Environment Programme report revealed that humans waste almost a billion tonnes of food every year.

What it does

Sustainabite is the marketplace for food surplus! It is a web application that facilitates the discreet sale of food surplus at a discounted value from businesses (restaurants, hotels, bakeries) to non-profits. There is also a feature for donators to directly fund the non-profit's Sustainabite account!

How we built it

Front-end: React, Vite, TailwindCSS, DaisyUI Back-end: FastAPI, SQLAlchemy, SQLite

Challenges we ran into

Too large of a scope for time constraints

We had a lot of features and user flows in mind and we tried to divide the different work between front/back end. However, the time constraints made it hard to properly make the api routes while still deciding on the front-end layout. Ultimately we had to pivot to focus on completing the front-end flows as the priority. We still did set up the server and a test SQLite DB using SQLAlchemy, however we weren't able to connect it to the front end.

Roadblocks in learning new technologies

We wanted to use this opportunity to learn FastAPI, DaisyUI, and SQLAlchemy, however, we ran into a lot of configuration and compiling issues because we were new to the frameworks. In addition to the time constraints, it made it hard to progress in an efficient manner. We still did learn a lot though!

Accomplishments that we're proud of

Taking the time to do research into the problem space

After the problem statement was revealed to be about sustainable lifestyles, our team dedicated a lot of time exploring different ways that we could approach the problem. From fast-fashion consciousness, cloud resource consumption and digital footprint, to ultimately what we decided on, which was food waste. We had lively discussions about market segmentation, and feasibility from a business and implementation perspective. This gave us guidance and strong motivation to work on the project.

Clean UI Design

We are really happy with the end result of the front-end as we translated hand drawings into real code that we could interact with.

Coordinating and helping each other

Since all of us have different skillsets, we were able to help each other out in things we did not know, while also coordinating and playing to each others strengths to work as efficiently as possible.

What we learned

Determining Tech-Stack and System Design beforehand

In hindsight, we would have saved a lot of time if we spent some time learning how to configure the frameworks we were potentially planning to use. This would have allowed us to focus on developing the features instead of debugging configuration.

What's next for SustainaBite

Moving forward, we would start formal user research by reaching to the various stakeholders of our product (business, non-profit, donators) across Calgary to validate our idea, while also taking into account the feedback from the potential users to iterate.

Installation

To run the project:

  • Ensure that you have node.js, python3, npm, and pip installed
  • Clone the project into a local repository
  • cd into the client/front-end directory
  • Run npm i
  • Run npm run dev
  • Start a new terminal session
  • cd into the server directory
  • Run pip install fastapi
  • Run pip install SQLAlchemy
  • Run uvicorn main:app --reload