Giter Club home page Giter Club logo

conscious-grocery-shopping's Introduction

Concious Grocery Shopping

This project will develop a computer application for improving the grocery shopping experience. The application will allow users to input foods and recipes into a shopping list. Upon completion of the list, the app will show the nutrition provided by the shopping list. It will offer notifications of food expiration dates, present nutritional information in a pie chart, and keep history of previous groceries; allowing reuse for the next shopping trip.

Features:

    Requirements:
        Store user inputted data.
        Utilize a database for food nutritional content and expiration dates.
        Allow users to add, rename, and edit customized foods and grocery lists.
        Notify the user when food items are about to expire.
        UI must be simple to use and display the grocery data aesthetically.
        Notify the user if current groceries do not meet set nutritional goals.

Dos:

GUI:
    tkinter (themes?) https://www.youtube.com/watch?v=mop6g-c5HEY
    PyQt5/6 
    Electron / webapp (web design made into a downloadable app) https://github.com/python-eel/Eel
User Inputs:
    str: food
    int/float: quantity of food
    int: how low long should this shopping trip last
    float: TDEE how many calories should eat per day/week (diet goals)
Food Class: 
    below values should ideally be found in a database API 
    https://fdc.nal.usda.gov/api-guide.html
    https://www.eatbydate.com/
    str: food name 
    str: expiration date (cooked / raw) 
    ints: calories, fat, carbs, protein
Reminders/UI/Storage:
    Upcoming Expiration date (should/can we do this on a Desktop application?)
    Display macros for day/week maybe as a nice piechart
    Local Storage for retaining grocery data
Disribution:
    (idea for converting app to setup wizard) https://www.youtube.com/watch?v=p3tSLatmGvU

IDEALLY HAVE FUNCTIONING APP BY WEEK 8

Week 1 Meeting Goals:

FRONT END:
Set up basic GUI
    * Enough to see what's going on for now
    * Food input, Food quantity, submit button to save food & qauntaity in backend.

BACK END:
Set up Python file & API
    * Make a class for foodType 
    * Connect to database: https://fdc.nal.usda.gov/api-guide.html

Week 2 Meeting:

COMPLETED:
    Base API data parsing into wanted vairables / desired output
    Base GUI created and connected parsed API to show as output on the GUI
MEETING:
    Decided on look for GUI (added template look image to gitHub)
    Decided (mostly) on needed variables to pull from API:
        Data Cateogry, food description, Serving size (100g)
    Expiration dates start by manual input by user, later add template food recommendations (AI?)
NEXT WEEK:
    FRONT END:
        Set up the 3 tabs (bottom of template img)
        buttons for search, food category, search, food item pop up.
        General work on UI to reach decided functionality
        -- Figure out how to send user click to return item id to back end
    BACK END:
        Seperate functions to callAPI for different purposes: 
            filter foodNutrition to relevant data only
            fliter by dataType to SR Legacy only
            search by foodcategory chosen by user
            new API call to return only specific item (by ID probably) when user clicks item

Week 3 Meeting:

BACK END:
    Satisfactory Functionality
    Add option FoodCategory (default 'all') for user to choose
    Figure out way to sort the food items
    *FOR NOW WE'LL BE FOCUSING ON FRONT END*
FRONT END:
    Outputting each food on it's own line in format name : [macros]
        (adjust the output in back_end FoodItem __str__) * Eyal
    Don't let users edit in textbox - Look into other ways to display food items * Christina

10/22/23

BACK END:
    Possibly add calendar event functions to back_end if it makes sense to do so. 
FRONT END:
    Look into/research Tkcalendar library for expiraton date event reminders
        --Create option for users to add an expiration date manually for a food item

    General work on GUI improvements

10/28/23

COMPLETED:
    Date Entry widget created to add dates to food items
    GUI improvements on Search/Shopping Cart window
NEXT TASKS: 
        Issues to solve: 
            * When adding a date to a food item in current inventory,
                it will append date to end of string instead of replacing or updating the date.
            ex: Apple  35 Calories 10/28/23 10/29/23 10/28/23... and so on.
                *** Use backend to return 'name' 'calories' and 'date' as different objects to format
        Create function to save current inventory of foods to a text file
                *** Text file or sql? 
            -- Create function so the app reads content of file upon starting.
        Create reminders for the expiration dates
            --Have code check if expiration date(s) are current date or not
            --Alert user if a food expires on current day or in the coming days
            *** Maybe use background color for upcoming expiration i.e. yellow 1wk red 3days
        GUI improvements and styling
            *** Possibly look into https://ttkbootstrap.readthedocs.io/en/latest/ 
                https://www.youtube.com/watch?v=0tM-l_ZsxjU https://www.youtube.com/watch?v=wuO-KMwXhP4
        Make Python file into a .exe file

10/13/23

COMPLETED:
    Expiration dates
    setters and getters for food variable
    Use Json for inventory storage
NEXT TASKS:
    Eyal:
    Add quantity variable for Food Item -- DONE
        --If food id already in list when added, increase quantity instead
        --If food removed, remove from quantity if quantity > 1
    Get inventory saved into Json and retrived out of it -- DONE
        --Run upon start and whenever inventory_foods = [] list changes
        --Make sure inventory_foods list is always aligned with Json file
    Reminders for expiration dates. change colors for when expired/expiring in Inventory Listbox.
        --Make Listbox Food Date yellow if expiration date is within 3 days
        --Make Listbox Food Date red if expired

    Maybe add piechart of macros
    
    Christina:
    Figure out Bootstrap / aesthetic in general
        --Themes
    Package program in .exe
        --(idea for converting app to setup wizard) https://www.youtube.com/watch?v=p3tSLatmGvU
    Maybe change GUI to adjust in box

conscious-grocery-shopping's People

Contributors

eyalhaimovich avatar cjue2573 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.