A desktop application developed in Python with PyQt5 to predict demand and help monitor and schedule brewing processes for Barnaby's Brewhouse.

Overview

brewhouse-management

Code style: black

A desktop application developed in Python with PyQt5 to predict demand and help monitor and schedule brewing processes for Barnaby's Brewhouse.

Visuals

Sales Predictions Inventory Management

Installation

These instructions will help you to get the software for Barnaby's Brewhouse running on your computer.

Operating System

Compatible with:

  • Windows
  • MacOS
  • Linux

Python Version

Python 3.7.0 or later is required for this software to run. It can be downloaded from Python's website here.

Running the Application

To run the application, you should follow the following steps:

  1. Clone this GitHub repository.
  2. Ensure that you're in the root directory: brewhouse-management
  3. Install the required Python libraries: pip install -r requirements.txt
  4. Run the application with the command: python -m src.app

Usage

Main Window and Sales Predictions

After running the application, you'll be presented with the total sales, sales ratios, and average monthly growth percentages from the existing sales data. You can predict sales by entering a month, and the software will display an estimate of the volume of each beer which will be ordered that month based on the average monthly growth in sales for each beer. It will also give advice on which beer should be produced next, based on which beer has the largest volume deficit. This advice can be useful when managing the production process in the Process Monitoring section of the software.

At the top, you can navigate to other sections of the software; there are buttons to navigate to inventory management and process monitoring.

Inventory Management

The Inventory Management button will open a dialog which displays the current inventory of each beer in Barnaby's Brewhouse in terms of both volume and number of 500 ml bottles. You can also add or remove volume of a given beer by selecting the beer recipe and volume, then clicking on a button to Add to Inventory or Remove from Inventory. The application intentionally allows negative volumes so that debts of volumes can be accounted for. The inventory manager automatically saves whenever the user makes changes.

Customer orders can be added in from the Inventory Management section as well. The user can add an order ID, beer, and volume to record the customer order. Once they've dispatched the order, they can record the dispatch by entering the order ID, which will remove the volume of the appropriate beer from the inventory of the brewhouse.

Process Monitoring

The Process Monitoring button will open a dialog which displays the availability of tanks for fermentation and conditioning, and ongoing brewing processes. You can start different brewing processes as long as any prerequisite processes have been completed for the appropriate beer and volume at the time.

Starting a hot brew does not have any prerequisites. Fermentation has the prerequisite of a completed hot brew. Conditioning has the prerequisite of completed fermentation. Bottling has the prerequisite of completed conditioning.

Once a valid process has been entered and started, it will be shown in the list of ongoing processes. From here, you can see the type of process, beer recipe it is being performed on, the tank it uses (if applicable), volume, and completion time. The ongoing process list is always up to date, and it will react to a process as it is started or aborted. This can be useful for checking whether you will be able to start the next process, as you can see whether the prerequisite process has been completed.

Processes can be aborted by entering the exact details of the process you would like to abort. Aborting a process cannot be undone, so all details of that process must be entered, as this will reduce cases of accidental process abortions.

When the bottling has been completed, it means that the full beer brewing process has been completed. You can send completed bottles to the inventory by clicking on the Send Bottles to Inventory button in the Ongoing Processes section. This will remove the completed bottling process, and add the volume of beer to the inventory, which can be seen in the Inventory Management section of the software.

The application automatically saves all changes made in the Process Monitoring section.

Upload Sales Data

The Upload Sales Data button will open a small dialog which provides a form for the user to input the details of their new sale. Once they click the Upload New Sale button, the form will be checked. If all the fields have been filled in, the new sale will be added to the CSV file.

Tools Used

Qt Creator was used to design the user interfaces for this project in a what you see is what you get (WYSIWYG) editor.

PyQt5's pyuic5 was used to generate the base Python code from the user interface designs, effectively converting the .ui files to .py files. I edited the generated code to conform to PEP 8 guidelines, and added documentation to make the code easier to understand. These generated code files are marked with the _setup.py suffixes, such as brewhouse_setup.py, and they were imported into the other Python files such as app.py so that functionality could be developed for the user interface objects.

Owner
Isaac Cheng
Software Engineer Intern at IBM | BSc Computer Science at University of Exeter
Isaac Cheng
Basic calculator using Tkinter GUI

Basic calculator using Tkinter GUI

Rogerio Penchel 17 Jan 09, 2022
psgresizer - a PySimpleGUI application that will resize your images and BASE64 encode them.

psgresizer A PySimpleGUI Application Resize your images quickly and easily with this GUI application. Resizes and encodes to Base64 so that the result

PySimpleGUI 10 Dec 25, 2022
A Python Tkinter based Inventory managment System

Inventory Management System Using Python Tkinter Introduction Inventory managemrnt system is an open source platform for manage business. It has a com

Amit Kumar Datta 2 Oct 14, 2021
Redis GUI using Qt & Python

QRedis A Python, Qt based Redis client user interface. Help wanted Open to people who want to colaborate. Would like to know which features you would

Tiago Coutinho 58 Dec 09, 2022
UberGui is a lightweight multi-threaded, webRender UI module for TouchDesigner

UberGui V4 UberGui is a lightweight multi-threaded, webRender UI module for TouchDesigner projects. The aim is to solve the trifecta of challenges bui

LUCAS M MORGAN 48 Nov 20, 2022
Verify file hashes of downloaded files easily in a GUI

HASH-verify Verify file hashes of downloaded files easily in a GUI What it does... This gui based Python3 app calculates 3 types of file hashes and ca

Christian Richter-Pedersen 10 Dec 13, 2022
Use any of the 1k+ free FontAwesome icons in your tkinter application.

TkFontAwesome A library that enables you to use FontAwesome icons in your tkinter application. You may use any of the 1k+ free FontAwesome 5.0 icons.

Israel Dryer 33 Dec 20, 2022
My Git GUI version made in Python and Tkinter.

Description My Git GUI version made in Python and Tkinter. How to use Basically, create a folder in your computer, open the software, select the path

Matheus Golzio 4 Oct 10, 2021
Custom Widgets For PyQt5

pyqtCuWi Custom Widgets Icon Button Documentation Rank Widget Documentation PopUp OuterRadius PopUp Documentation OuterRadius Documentation Producer:

.CODE 0 Apr 04, 2022
Small Python scripts to take screenshot from a KaiOS/FFOS device and to mirror the screen of your phone.

This version of kaiscr is written by tkinter and can run in windows(use kailive-tk.py). "kailive-tk-speed.py" is speed optimization version. The sourc

openGiraffes Group 2 Mar 02, 2022
TextTUI is a set of extensions to the Textual and Textual-Inputs libraries

TextTUI is a set of extensions to the Textual and Textual-Inputs libraries. Currently a Work in Progress that is based on the 0.1.14 branch of

3 Feb 10, 2022
Py address book gui - An address book with graphical user interface developed with Python Tkinter

py_address_book_gui An address book with graphical user interface developed with

Milton 4 Feb 01, 2022
A simple project used Tkinter module to make a seperate window

Project Title This is a program to run a databse where you can store the general information of poeple. This is a very simple project and i have used

Divyansh Bhardwaj 0 Jun 25, 2022
PyQt5 Sample GUI Program - Python PyQt5 Sample GUI application

Python PyQt5 Sample GUI application Program work like this Designed GUI using De

Dimuth De Zoysa 5 Mar 27, 2022
GUI for Volatility forensics tool written in PyQT5

Volatility GUI This is a GUI for Volatility forensics tool written in PyQT5 Prerequisites: 1- Installed version of Volatility. 2- Install PyQT5. sudo

Hamza Megahed 52 Jun 18, 2022
TkArt - A repository created to explore geometry and art creation using TkInter

tkArt A repository created to explore geometry and art creation using TkInter, a

Jayant Sogikar 18 Oct 01, 2022
Gmail account using brute force attack

Programmed in Python | PySimpleGUI Gmail Hack Python script with PySimpleGUI for hack gmail account using brute force attack If you like it give it

Adrijan 127 Dec 30, 2022
Key Cast - Cast your key presses and mouse clicks on the screen, while casting your favorite application on the screen. Better than the rest.

Key Cast Screen cast your keyboard and mouse clicks in style Project Homepage » View Demo · Report Bug · Request Feature Table of Contents Introductio

Mehul Singh Teya 13 Dec 23, 2022
Tkinter calculetor - Tkinter calculetor with python

Tkinter_calculetor required to run py file pip install tkinter

Yasir Arafat 0 Feb 07, 2022
Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies

(This library is available under a free and permissive license however, if you Enjoy Dear PyGui please consider becoming a Sponsor) Dear PyGui is a si

Jonathan Hoffstadt 9.4k Jan 07, 2023