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.
- Add, update, delete, and view menu items seamlessly.
- Store detailed information for each menu item, including:
- 📸 Image
- 💲 Price
- 🏷 Name and ID
- 📝 Description
- 📂 Category
- 🔍 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.
- 📝 Print Single Items: Generate detailed PDFs for menu items.
- 👁️ Preview & Print: View, zoom, save, and print item details directly from the app.
- 🎨 PySide6: For building the user interface.
- 🗄️ MySQL: To manage menu item data efficiently.
- 🖨️ ReportLab and PyMuPDF: For generating and previewing PDF reports.
Follow these steps to set up the project on your local machine:
- Python 3.12.3 installed on your system.
- MySQL server installed and configured.
- A virtual environment (optional but recommended).
-
Clone this repository:
git clone https://github.com/RossCabrera/Cafeteria-Menu.git cd CRUD-Menu -
Set up a virtual environment (recommended):
python3 -m venv venv
-
Activate the virtual environment:
-
On macOS/Linux:
source venv/bin/activate -
On Windows:
venv\Scripts\activate
-
-
Install dependencies:
pip install -r requirements.txt
-
Set up the Database:
- Import the schema
from db/schema.sqlinto your MySQL server. - Update the database connection details in
db/config.json.
- Import the schema
-
Run the Application:
python main.py
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 Visualization of the main menu screen and the PDF preview screen:
Contributions are welcome! If you'd like to contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch-name). - Commit your changes (
git commit -m "Brief description of changes"). - Push to the branch (
git push origin feature-branch-name). - Open a pull request.
Feel free to report issues or suggest features via the Issues tab.
This project is licensed under the MIT License. See the LICENSE file for details.

