Skip to content

UMM-CSci-3601-S22/iteration-3-worshipful-company-of-saddlers

Repository files navigation

CSCI 3601 Iteration Template

Server Build Status Client Build Status End to End Build Status

BCH compliance Total alerts

For shoppers who want an organized pantry and shopping experience, Handy Pantry is a home pantry inventory system that tracks consumption and storage. Unlike pen and paper, our product uses your grocery usage information to automatically generate an up-to-date shopping list.

Key Features

This project puts together an Angular frontend, Javalin java back-end, and a MongoDB database. We use 4 different collections to track all of the different objects that we work with. A 'Product' collection, which contains the individual types of different products we track. There's a 'Pantry' collection which tracks all the different instances of a type of product. This reflects the amount that you currently have in your 'Pantry'. There's a 'PantryProduct' collection which is just an aggregated type of 'Pantry' items with a quantity for better UI and usability. Finally, there's a 'ShoppingList' collection which we use to track the generated shopping list that a user would take to the store. The reason that there needs to be a collection for this is because it gives the user the ability to manually edit the list. For all of the different collections, we have ways for users to edit the collections using the front-end UI.

The shopping list is generated using a Java algorithm which queries the 'Products' collection to find the threshold of different products, and then checks the 'Pantry' for the amounts of those products. If there is a lower quantity of products in the 'Pantry' than is the threshold for that given product, a quantity to reach that threshold is added to the 'ShoppingList'.

This backend 'ShoppingList' generation algorithm could most definitely be improved. Right now it aggregates all of the collections into java arrays and iterates over those arrays. Using interesting and complex mongo queries to problem solve this would be much faster, and would make the project a whole lot more scaleable.

Another feature which is worth mentioning is the ability to search for and filter different collections on the frontend. This exists on multiple different pages in multiple different ways, often just for searching for something, but on pages like the ShoppingList page, to be able to add products directly to the list.

Instructions on setting up the development environment and working with the code are in the development guide.

Instructions on how to create a DigitalOcean Droplet and setup your project are in the deployment guide.

Additional resources on tooling and techniques are in the resources list.

Additional resources on known issues are in the TO-DO-LIST.

Contributors

This contributors to this project can be seen here.

About

iteration-3-worshipful-company-of-saddlers created by GitHub Classroom

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published