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
Make desktop applications using HTML and CSS with python

Neutron Make desktop applications using HTML and CSS with python What is Neutron Neutron will allow developers to design modern applications in python

Ian Baldelli 284 Dec 29, 2022
A Url Shortener with GUI made in Python.

Url-Shortener-with-GUI-in-python A Url Shortener with GUI made in Python. To Run this download the zip file and run the main file or Clone this repo.

SidTheMiner 1 Nov 12, 2021
GUI based app made in python using tkinter

Virtual Keyboard A GUI application made in python using tkinter This is my first ever proper GUI based application project after learning tkinter rece

AbhineetK 10 Dec 10, 2022
AppQuickLauncher is a tool that can quickly launch apps by clicking the app tray icon.

AppQuickLauncher AppQuickLauncher is a tool that can quickly launch apps by clicking the app tray icon. On Windows 7 or Windows 10, we can add a folde

yin kaisheng 2 Sep 11, 2022
ROS2 + PyQt5 Example

ROS2 + PyQt5 Example

Ar-Ray 4 Nov 15, 2022
Tkinter Designer - Create Beautiful Tkinter GUIs by Drag and Drop.

Tkinter Designer is created to speed up and beautify Python GUI Experience. It uses well know design software called Figma. Which makes creating Tkinter GUI in Python a piece of cake.

Parth Jadhav 5.2k Jan 09, 2023
Generate multifunctional GUIs from classes

magic-class In magicgui you can make simple GUIs from functions. However, we usually have to create GUIs that are composed of several buttons, and eac

25 Dec 15, 2022
Python Web Version 3.0 Using PyQty module

Python-Web-Version-3.0 Python Web Version 3.0 Using PyQty module you have to install pyinstaller module then install PyQt5 module and install PyQtwebE

JehanKandy 9 Jul 13, 2022
Json IDE made with Python tkinter!

JIDE Json IDE made with Python tkinter! Download: https://github.com/LouisTheXIV/JIDE/releases/tag/v0.1 Features In JIDE everything is customisable do

n0 7 May 14, 2022
Bank-Project - A bank ATM simulator recreated in python

Bank-Project A bank ATM simulator recreated in python. NOTE: this repo is a translation of Rasphy2009/Proyecto-Banco Requirements (.py only) šŸ Python

Rasphy 2 Jan 02, 2022
Write desktop and web apps in pure Python

Flexx Want to stay up-to-date about (changes to) Flexx? Subscribe to the NEWS issue. Introduction Flexx is a pure Python toolkit for creating graphica

flexxui 3.1k Dec 29, 2022
PyQt QGraphicsView with selection box. User can move vertical border of the box horizontally.

pyqt-horizontal-selection-square-graphics-view PyQt QGraphicsView with selection box. User can move vertical border of the box horizontally. Requireme

Jung Gyu Yoon 3 Nov 07, 2022
A small manager/GUI Frontend for QEMU written in Python

qemu-manager A small manager/GUI Frontend for QEMU written in Python Requirements You'll need to have the following tools installed to run this: QEMU

yeppiidev 15 Dec 21, 2022
This simple python program can be used to make FontChooser dialog in Tkinter Applications.

tkFontBox This simple python program can be used to make FontChooser dialog in Tkinter Applications. how to use? Copy the tkFontBox.py file into your

Pawan Kumar Prachi 1 Feb 08, 2022
Basic browser based on PyQt5

goneDev-browser "basic browser based on PyQt5" This application is primarily built on macOS with more adaptibility for MacOS than Windows. v1.0 will s

Harsh ADV) 1 Jan 19, 2022
Tkinker GUI for a college project.

GuiUtilities PequeƱa suite de utileria con Tkinter enfocada en sistemas Linux. Lista de trabajo Crear archivo Copiar archivo a otro dir Editar con un

1hiking 2 Nov 25, 2021
Create shortcuts on Windows to your Python, EXE, Batch files or any other file using a GUI made with PySimpleGUI

shor Windows Shortcut Creation Create Windows Shortcuts to your python programs and any other file easily using this application created using PySimpl

PySimpleGUI 7 Nov 16, 2021
Input an antlr grammar and file for python to test it out

py-antlr-input Input an ANTLR grammar and test file for python to render a parser tree of the file. This program will make use of the grun command tha

Oscar JuƔrez 0 Aug 10, 2021
WhirlEdit, an excellent {code} editor

HELP! If you're experienced, I want you to make an executable for your platform (windows/mac/linux) and help me.. For more info get in touch at whirlp

whmsft 10 Aug 18, 2022
An qt asset browser for applications like houdini/nuke/maya/blender

AssetBrowser A qt asset browser for applications like houdini/nuke/maya/blender Currently in development Note: Only houdini plugin available during de

Jonas Sorgenfrei 6 Aug 05, 2022