Have you ever faced the problem of trying to fit in too many takeout containers into your fridge? Or tried to stock your kitchen closet with an obscene amount of ramen cups? We started by looking at common problems so niche that there wasn’t a solution readily available online yet. We wanted to solve something that affects the ordinary people and is simple and easy to use.
What it does
The goal of the project was to fit objects onto a shelf based on their sizes. We got up to an implementation where objects are stacked first based on size, and a shelf is populated with stacks of objects of decreasing size.
How we built it
Using React.js, take user inputs and use a GET request to set up the information for parsing. With Django, get the necessary information from the request and sent it into python for the script to make its computations. We wrote Python classes for Pantry, which consists of Shelves that contain Stacks, which hold Foodstuffs. We wrote an APIReader to parse JSON files to initialize the Foodstuffs. To streamline the performance of our code, we wrote unit tests to help us debug and trace our program along the way.
Challenges we ran into
The foundation (i.e. classes) took the longest because we ensured that everything was going according to plan before moving on the the next step. Some time was lost here but it was important that we had the fundamentals down.
Accomplishments that we're proud of
The React site looks great! We got a working PantrySorter up with the classes all interacting with other. Some of us have only learned Python briefly or for just a semester.
What we learned
We learned a lot about different tools from each other, such as git, React, Django, and Python. We also reaped the benefits of planning thoroughly and early using a mockup and UML so that it was easier to structure classes and find roadblocks.
What's next for Pantry Optimizer
Our original idea was to implement PantryOptimizer in 3D with length, width, and height to consider as dimensions. Given more time, we would also think about rotating the objects to fit them in even more efficiently, and we are in the process of adding a dynamic shelf method in PantrySorter to let the user insert items after the initial filling of the Pantry. This application can also be stretched to include fridges, closets, bookshelves, you name it! It comes down to reducing the items to simple shapes to work with. We can also move away from using local host and set up PantryOptimizer on a public domain.