Home Pantry System
Trget Code and Eng DK30 Fall 2020 1 1
Description
A small little application to keep track of all the household food products. This is intended to help with meal planning, for both shopping and cooking, as well as reminders about how old certain things are, yes that has been in the freezer for that long, and when things expire.
Recent Updates
So, I’m more or less finished with this aspect of the project. It is deployed and working and in active use.
I did do a little update today, as demanded for usability by my sister.
That is to say I added some alternating colouring to the lines of items so that it’s easier to read.
Otherwise, I plan to keep refining the system as I use it, however, that is ongoing and possibly for another DK30.
As I promised yesterday, here are pictures. However, let me restate my warning. These will not be pretty, I’m a backend engineer, not frontend. It is functional. You have been warned.
A simple Login Screen
The Pantry Listing
An Empty Pantry
The Create Item Page
A Pantry With Items
Shortcuts To Change State (on right)
Finished Items are hidden
Finished Items can be seen
Shortcuts can also be used to copy items
So, big update, lots of progress.
A load of QoL improvements have been deployed:
- Quick item duplication
- Quick state change
- Smart copy
- List unfinished items by default
So, I’m down to 2 QoL improvements remaining.
- Highlights things close to (or past) expiration
- Sorting, searching and filtering
Will provide some picture tomorrow. These will not be pretty, I’m a backend engineer, not frontend. It is functional. You have been warned.
So after a day of painful manual data entry, yesterday, the system is mostly functional. I did discover a minor bug where you can’t edit items with an expiration date.
That bug was resolved this morning. Now I just need to improve the quality of life using the system. This is mostly minor improvements:
- List unfinished items by default
- Highlight things that are close to or past their expiration dates
- Sorting, searching and or filtering.
- Quick item duplication (multiple purchases)
- Quick state change (freeze,unfreeze,open etc)
- Smart copy (purchase of an existing item needing new details (expiration/purchase date)
But the system is in use, so improvements are being driven by actual use instead of wishful planning.
Project is now deployed and running. Though installation took longer because I had to first install Java 11 before it would run.
So, now I’m doing pantry stock counting for the entire house, and tomorrow is grocery day.
All automated tests for editing are in place.
The database has also been deployed to the live node, however, the application itself is not. This is mostly due to adventures in database management.
The short of the story is I have no idea what I set as the master password for the database deployment, even though I have a number of applications running on it. Consequently I spent most of the morning digging through everywhere I store my passwords, in the hopes that it was stored somewhere and I wouldn’t need to reset it. Having spent longer than needed not finding the password, I then did the 5 step/2 minute process of resetting the master password.
So tomorrow I deploy the current version onto the node, and then I start my initial stock counting.
Editing logic is now in place. I’m in the process of adding automated tests to ensure that all possible use cases are covered.
I may do a bigger update once I figure those out.
Plan is then to deploy the system live tomorrow and spend some time on Wednesday adding things to the pantry catalogue. Yay!
No real progress made, still just catching up.
Editing is mostly in place. Everything except the actual controller logic is done. This is the last bit of large logic, everything else is (comparatively) simpler copy/modifications of components so it should go a bit faster.
QoL improvements should be easy enough to implement once the system is live and in use. Though I’d like to put copy/duplicate buttons into place before it goes live, just because it makes everything easier to catalogue.
But it’s the weekend, and I need to run a number of raids. So no more progress until Monday.
So I’m a little behind, but I gave generous estimates in the first place.
Yesterday I did some prep work for the logic to correctly insert items. Most of this is also applicable to editing, as the same verifications need to be added.
Today I didn’t do anything as I was not feeling well.
The plan for tomorrow is to insert the expiration smart management logic, and hopefully also implement the edit logic.
Almost forgot to post an update for today.
Updated the database schema, as well as all the template pages to fully support branding and purchase/expiration dates. Some additional logic is needed to correctly insert the data, but that will come as part of tomorrow’s update where editing support is added.
Added initial support for purchased and expiration dates as well as attaching branding information. This was largely an expansion of the internal data type objects and their associated relationships, as well as laying out the initial UI elements to match these. I have yet to expand the database schema to also support these items.
Spent the weekend thinking about improving the project description and goals a little. These have been elaborated in a cleaner and more goal oriented manner. Granted, the later weeks are a little bit more fuzzy, but overall the project isn’t that complicated so that is okay. It also helps that most of the planning, at least in terms of system design has already been taken care of, as has the initial configuration and setup. Otherwise that would likely have occupied most of the first week as well.
Estimated Timeframe
Oct 19th - Nov 13th
Week 1 Goal
The initial system already exists, however some functionality is missing. The aim is to have a basic working system. In part, that already exists. Basic pantries can be created, and items can be added to it. These can also be viewed (as a list). However, this is only a starting point. The first week is to focus on adding all basic functionality to the system.
Features to be added during the week include:
- Purchased date for items
- Support for expiration dates
- Ability to edit items
- Recording basic branding info
Week 2 Goal
Will focus on improving some Quality of Life features. The basic system exists, but manual data entry is boring and error prone.
Main features to be improved are:
- Copying existing items
- Smart management of expiration dates and freezing interactions
- Better listing - “at risk” and low quantity
Week 3 Goal
Should focus on polishing the systems a little.
This will be achieved in a two-fold manner. First, the system should go into a live state, by being deployed onto the local Raspberry Pi server running in-home services. Second, the contents of the home food stores, the pantry, will be added to the system.
Week 4 Goal
Will focus on continuing to use the system and making live adjustments as it becomes more used.
Improvements to be determined. Maybe publish to GitHub.