Inspiration
Crowdsource your data and minimize cost while satisfying nutritional requirements. Imagine if you want to go gluten free, but are prevented from doing so by cost. This program can give you the freedom to choose your diet without being limited by cost. I have very precise requirements for my own personal nutrition, and I want to be able to meet those goals optimally. I already do this manually with spreadsheets.
What it does
Take customer dietary requirements, and combine it with databases of price data and of nutritional data, and return the minimal price diet that meets their requirements.
How I built it
Go for the backend web server. I built it to be deployed on AWS, but ran into config issues. JQuery, Bootstrap, and JavaScript for the front end. I'm using GNU's LP Kit for my LP solver, and I'm using a GPL repository to get Go wrappers for the solver.
Challenges I ran into
I ran into some UX challenges with confusing reporting between nutritional information settings and nutritional information reporting. I ran into major configuration issues with AWS. I ran into a number of bugs trying to get my program into interface with GLPK. I really loved working in Go, but being somewhat unfamiliar with the language definitely slowed me down a lot.
Accomplishments that I'm proud of
I think it's a huge scope project and I'm really excited to get this project to a state where I can use it in my daily life. I think that it would be a fairly simple case to extend this to be able to handle arbitrary attributes.
What I learned
As always, don't worry about configuration, and focus on development of features.
What's next for thrifty
I’d like to unify this with the full set of my price data, plot trends in price data, crowdsource or pull data directly from stores, and integrate with the USDA nutrition database.
UX
As part of my UX-oriented design, I had a friend who had never seen the application before perform a few tasks without telling her how to do it. I asked her to change the amount of calories that she wanted to eat in a day, and she was able to use the control to do that. She opened the options panel by accident, so I asked her to close it. I had wired up several different buttons to open and close the panel, and I wanted to see which one she would use. After closing it, she played around with trying to find all of the buttons that manipulated the options panel, and seemed confused by having different ways to toggle it. I had no intention of keeping so many different ways of triggering the options panel, so I will keep the one that she guess would manipulate the panel first. She mentioned that she wanted easter eggs in the application. I asked her about the colors and she didn’t like that the filters drop down didn’t have a color. That indicated to me that there was too much focus on the filters drop down, so I decreased its size. I used Google’s material design guidelines as guidelines for my color pallette. For the design of my options panel itself, I decided to prioritize feasibility.
Log in or sign up for Devpost to join the conversation.