Skip to content

🍽️ Revolutionize Your Lunch Break with LunchHunt!

Tired of Ctrl+F for food? Let LunchHunt do the searching β€” so you can do the eating.

Description

πŸ‘‰ Check out on GitHub


πŸš€ What Is LunchHunt?

LunchHunt is a Python-powered food concierge that automatically checks local canteen menus, finds your favorite meals, and sends you Gotify push notifications when they appear.

Now available as:

  • 🐍 Command-line/Script mode β€” for traditional Python users
  • 🌐 Web UI mode β€” a new, intuitive dashboard built with Plotly Dash

Watch the video


πŸ“˜ Documentation

πŸ“– Full docs available on GitLab Pages


🧭 Choose Your Setup

You can now use LunchHunt in two ways:


🐍 Option 1 β€” Run LunchHunt via Python

1️⃣ Clone & Setup

git clone https://github.com/trholy/lunchhunt.git
cd lunchhunt
pip install .

2️⃣ Configure Your Cravings

Edit example_2.py and define your favorite foods:

# Example configuration
favorite_foods = ["Eierkuchen", "Milchreis", "Hefeklâße"]

3️⃣ Run a Gotify Server

Use Docker to spin up a local Gotify server for notifications: πŸ‘‰ Gotify Installation Guide

4️⃣ Run LunchHunt

python example_2.py

πŸ’¬ Receive instant push notifications with location details!


🧩 Docker Compose Deployment

version: '3.8'

services:
  lunchhunt:
    build: .
    container_name: lunchhunt
    ports:
      - "8050:8050"
    environment:
      - TZ=Europe/Berlin
      - PUID=1000
      - PGID=1000
    volumes:
      - ./settings:/home/lunchhunt/app/settings
    restart: unless-stopped

  gotify:
    image: gotify/server
    container_name: gotify
    ports:
      - 8080:80
    environment:
      - GOTIFY_DEFAULTUSER_PASS=admin
      - GOTIFY_DEFAULTUSER_NAME=admin
      - TZ="Europe/Berlin"
    volumes:
      - "./data:/app/data"

Then run:

docker compose up --build -d

Access the UI at πŸ‘‰ http://localhost:8050


🧭 LunchHunt Web UI Overview

πŸ’‘ Purpose

The LunchHuntApp is a web-based configuration interface (built with Plotly Dash) that helps you:

  • Configure food preferences & canteens
  • Schedule daily notification jobs
  • Manage multiple profiles
  • Integrate seamlessly with Gotify
  • Create & delete cron jobs visually

πŸ’‘ Benefits for Busy Devs

βœ… Save Time – No more Ctrl+F through menus

βœ… Reduce Stress – LunchHunt does the searching

βœ… Boost Productivity – Focus on code, not canteens


πŸ“‚ Project Structure

lunchhunt
β”œβ”€β”€ .dockerignore
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .gitlab-ci.yml
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ LICENSE
β”œβ”€β”€ README.md
β”œβ”€β”€ THIRD_PARTY_LICENSES.txt
β”œβ”€β”€ assets
β”‚   └── style.css
β”œβ”€β”€ data
β”‚   └── .gitkeep
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ docker-entrypoint.sh
β”œβ”€β”€ documentation
β”‚   β”œβ”€β”€ examples
β”‚   β”‚   β”œβ”€β”€ example_1.md
β”‚   β”‚   └── example_2.md
β”‚   β”œβ”€β”€ notify
β”‚   β”‚   └── notifier.md
β”‚   β”œβ”€β”€ scrap
β”‚   β”‚   └── scraper.md
β”‚   β”œβ”€β”€ utils
β”‚   β”‚   └── util_functions.md
β”‚   └── web
β”‚       └── webUI.md
β”œβ”€β”€ example_usage
β”‚   β”œβ”€β”€ example_1.py
β”‚   └── example_2.py
β”œβ”€β”€ img
β”‚   └── scroll_meme.png
β”œβ”€β”€ mkdocs.yml
β”œβ”€β”€ pyproject.toml
β”œβ”€β”€ run.py
β”œβ”€β”€ settings
β”‚   └── settings.json
β”œβ”€β”€ setup.py
└── src
    └── lunchhunt
        β”œβ”€β”€ __init__.py
        β”œβ”€β”€ notify
        β”‚   β”œβ”€β”€ __init__.py
        β”‚   └── notifier.py
        β”œβ”€β”€ scrap
        β”‚   β”œβ”€β”€ __init__.py
        β”‚   └── scraper.py
        β”œβ”€β”€ utils
        β”‚   β”œβ”€β”€ __init__.py
        β”‚   └── util_functions.py
        └── web
            β”œβ”€β”€ __init__.py
            └── webUI.py

🀝 Contribute & Share

πŸ’¬ Contributions are welcome! Fork it or share LunchHunt with colleagues who deserve better lunch breaks.


πŸ“œ License

This project is released under the MIT License. You are free to use, modify, and distribute it with proper attribution.