- Live Demo
- About Handy Pantry
- Project Features
- Technical Specifications
- Technical Document
- Resources
- Known Issues & Roadmap
- User Guide
- Contributors
See a live demo of the handy pantry at https://159.223.190.88.nip.io/.
Handy Pantry is a home pantry inventory management system, enabling the user to have an accurate idea of the current state of their pantry and create a personalized shopping list based off of your grocery needs.
The Handy Pantry gives you the ability to:
- Store and edit products containing information about things like brand, store, location, and product threshold amount.
- Search through a list of your products (by name, store, brand, and category).
- Add stored products to a digital pantry, or directly to a personal shopping list.
- Look through categorized dropdown tables of items in your pantry, with the ability to delete individual items.
- Choose between two shopping list views; interactive and print.
- Look through the interactive shopping list containing items added from your products list, sorted into store tabs.
- Regenerate your shopping list by threshold, adding products that aren't present in the pantry or that there aren't enough of.
- Delete individual items from your shopping list while in the interactive view.
- Click a button while in the print view to get a print-friendly shopping list.
- Languages used: Typescript, Java, HTML and SCSS
- Services used: MongoDB, Digital Ocean, Docker
- Frameworks: Angular 13 and Javalin
- Testing software: Karma, Cypress, and GitHub Actions
Instructions on setting up the development environment and working with the code are in the development guide.
From the server
directory:
./gradlew run
to start the server./gradlew test
to test the server./gradlew checkstyleMain
to run Checkstyle on the server Java code in thesrc/main
folder./gradlew checkstyleTest
to run Checkstyle on the server Java code in thesrc/test
folder./gradlew check
will run both the tests and Checkstyle in one command
From the client
directory:
ng serve
to run the clientng test
to test the client- Or
ng test --no-watch --code-coverage
to run the client tests once and also compute the code coverage.
- Or
ng e2e
andng e2e --watch
to run end-to-end tests
From the database
directory:
./mongoseed.sh
(or.\mongoseed.bat
on Windows) to seed the database
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.
- Products and Pantry are being categorized client side, slowing site down - change to a database query
- Dates are being stored as strings (on server) - convert to storing as date objects
- Add way to change individual item count in the shopping list
- Link items in the pantry and shopping list to the product listing
- Load on to the My Pantry page
- On the pantry page, click on one of the categories to open a drop down menu displaying the pantry items or products in a drop down list
- On the pantry page, select the red 'x' to delete a pantry item
- On the pantry page, selecting a pantry item will open another drop down menu displaying the best before date
- Click on the icon in top left corner next to page name to open the sidebar menu
- In the sidebar, select the products name to navigate to the products page
- On the products page, click on one of the categories to open a drop down menu displaying the pantry items or products in a drop down list
- On the products page, the filters at the top of the page enable easy searching of a specific product
- On the products page, select a product to open up the card view
- From there, the user can either edit the product or add it to the pantry
- On the product page, the user can select to delete product, ad to pantry, or add to shopping list
- On the products page, the user can add a new product to the product page
- On the shopping list page, the user can switch between the interactive view and the print view
- In the interactive view, the user can switch between stores
- In the interactive view, the user can delete items from the shopping list
- In the interactive view, the user can reset the shopping list
- In the print view, the user can select the orange print icon to print the page
Special thanks to: