This is a modular Point of Sale (POS) system implemented in Python. It is designed to be used at a self-checkout machine in a grocery store, with additional administrative controls for managing products, approving age-restricted items, and applying discounts.
- Product Management: Add, update, and view products.
- Cart Management: Add products to the cart, view the cart, and remove products from the cart.
- Checkout: Complete transactions and save the state of products.
- User Authentication: Register and login users, with administrative controls for managing products and transactions.
- Age-Restricted Items: Require approval for purchasing age-restricted items.
- Discounts: Apply and remove discounts on products.
- Transaction History: View a summary of all transactions.
- Logging: Record events, errors, and runtime information for debugging and monitoring.
- AI-Based Recommendations: Provide product recommendations based on user purchase history.
- Python 3.x
-
Clone the repository:
git clone https://github.com/scottprints/py-pos-system.git cd py-pos-system -
Install required packages:
pip install -r requirements.txt
-
Run the original GUI application:
python gui_original.py
-
Run the touchscreen-optimized GUI application:
python gui_touchscreen.py
-
Follow the on-screen prompts to interact with the POS system.
The POS system provides a range of functionalities including:
- User Registration and Login: Register new users and login existing users.
- Product Management: View, add, and update products (admin only).
- Cart Management: Add products to the cart, view the cart, and remove products from the cart.
- Checkout: Complete transactions and save the state of products.
- Transaction History: View a summary of all transactions (admin only).
- Discount Management: Apply and remove discounts on products (admin only).
- Product Recommendations: Get product recommendations based on a selected product.
app.py: Main application file containing the CLI and core functions.gui_original.py: Original GUI application file usingtkinter.gui_touchscreen.py: Touchscreen-optimized GUI application file usingtkinter.models.py: Contains the necessary classes (Product,Cart,User).db.py: Handles saving and loading product data to/fromproducts.json.recommendation.py: Contains the recommendation logic usingscikit-learn.virtual_keyboard.py: Virtual keyboard implementation for touchscreen input.products.json: JSON file storing product data.requirements.txt: File listing the required Python packages.
This project is licensed under the MIT License.
