Skip to content

Python desktop application for managing a cafeteria menu with CRUD functionality, image handling, PDF generation, and print preview. Built with PySide6 and MySQL.

License

Notifications You must be signed in to change notification settings

RossCabrera/Cafeteria-Menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

☕ Cafeteria Menu Management App

Python PySide6 MySQL

A Python desktop app for managing cafeteria menu items with CRUD operations and PDF generation.
Ideal for developers and learners exploring database integration, GUI design, and PDF handling.

alt text

✨ Features

🛠 CRUD Functionality for Cafeteria Menu

  • Add, update, delete, and view menu items seamlessly.
  • Store detailed information for each menu item, including:
    • 📸 Image
    • 💲 Price
    • 🏷 Name and ID
    • 📝 Description
    • 📂 Category

🔍 Search & Navigate Records

  • 🔍 Search: Quickly find items with a real-time search field.
  • 🔄 Navigate: Move through items effortlessly using "Next" and "Previous" buttons.
  • 🧹 Clear Fields: Reset form fields easily for new data entry.

🖨 Generate PDF Reports

  • 📝 Print Single Items: Generate detailed PDFs for menu items.
  • 👁️ Preview & Print: View, zoom, save, and print item details directly from the app.

🧰 Technologies Used

  • 🎨 PySide6: For building the user interface.
  • 🗄️ MySQL: To manage menu item data efficiently.
  • 🖨️ ReportLab and PyMuPDF: For generating and previewing PDF reports.

📋 Getting Started

Follow these steps to set up the project on your local machine:

🔧 Prerequisites

  • Python 3.12.3 installed on your system.
  • MySQL server installed and configured.
  • A virtual environment (optional but recommended).

📦 Installation

  1. Clone this repository:

    git clone https://github.com/RossCabrera/Cafeteria-Menu.git
    cd CRUD-Menu
  2. Set up a virtual environment (recommended):

    python3 -m venv venv
  3. Activate the virtual environment:

    • On macOS/Linux:

      source venv/bin/activate
    • On Windows:

      venv\Scripts\activate
  4. Install dependencies:

    pip install -r requirements.txt
  5. Set up the Database:

    • Import the schema from db/schema.sql into your MySQL server.
    • Update the database connection details in db/config.json.
  6. Run the Application:

    python main.py

🗂 Project Folder Structure

CRUD-Menu/
│
├── src/                     # Core application files
│   ├── main.py              # Main entry point
│   ├── database.py          # Database functions
│   ├── ui_main.py           # UI setup and logic
│   ├── pdf_generator.py     # PDF creation logic
│   ├── ui_preview.py        # PDF preview functionality
│
├── assets/                  # UI assets (images/icons)
│   └── images/              # Screenshots and logos
│   └── icons/               # App icons
│
├── db/                      # Database files
│   ├── schema.sql           # SQL schema for setup
│   └── config.json          # Database configuration
│
├── LICENSE                  # License for the project
├── README.md                # Project documentation
├── requirements.txt         # Python dependencies           

📷 Screenshots

Visualization of the main menu screen and the PDF preview screen:

alt text

🤝 Contributing

Contributions are welcome! If you'd like to contribute:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature-branch-name).
  3. Commit your changes (git commit -m "Brief description of changes").
  4. Push to the branch (git push origin feature-branch-name).
  5. Open a pull request.

Feel free to report issues or suggest features via the Issues tab.

📜 License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Python desktop application for managing a cafeteria menu with CRUD functionality, image handling, PDF generation, and print preview. Built with PySide6 and MySQL.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages