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
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
All you need to learn Tkinter!

Tkinter This repository contains the codes and resources which I used to learn the standard GUI library of Python, Tkinter! Best Tkinter Resources Vid

Samyak Jain 3 May 02, 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
Quebra cabeça - Utilizando biblioteca do python: PyQt5

Puzzle 3x3 PyQt5 - Windows Quebra cabeça - Utilizando biblioteca do python: PyQt5 Para testar este quebra cabeça na sua maquina, primeiramente faça o

Matheus Marsal 1 Dec 21, 2021
UI for converting various point cloud file formats

Point cloud format converter This coverter based on open3d. If you're using old ROS1 i suggest to use conda python3 evn to install requirements. Todo

Haegu Lee 1 Oct 29, 2021
System Tray Icon for PySimpleGUI (the tkinter version). Adds a system tray icon by using pystray and PIL

psgtray Add a System Tray Icon to your tkinter port of PySimpleGUI. Installation via pip Installation is via pip: python -m pip install psgtray or if

PySimpleGUI 38 Dec 30, 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 Jan 08, 2023
A really minimalistic operating system made using python's GUI module Tkinter.

BoxOS V1.0.0 About A really minimalistic operating system made using python's GUI module Tkinter. What seperates it from the other operating systems m

Fahim 2 Dec 08, 2022
Introduce QML-like declarative structure to Python world. Developer writes only pure Python code for QML.

Introduce QML-like declarative structure to Python world. Developer writes only pure Python code for QML.

likianta 4 Mar 27, 2022
A Python based Connect 4 game made with DearPyGUI

Ultimate-Connect-4 A Python based Connect 4 game made with DearPyGUI NOTICE: If you connect to the game server hosted by Jah-On and attempt to send ma

4 Jun 01, 2022
A calculator made using Python and Tkinter

Abacus Abacus is a calculator used to compute expressions with the operators of Addition, Subtraction, Multiplication and Division. It is named after

0 Jun 24, 2022
EZ Presence - A GUI-Python app which makes it easy to set a custom Discord Rich Presence. (BETA)

EZ Presence EZ Presence is a GUI-Python app which makes it easy to set any custom Discord Rich Presence. Using the App How to Run Since the app is in

notsniped 2 Mar 01, 2022
Mini is a web browser application based on the Python PyQt web engine, made in 290 lines of code.

Mini Mini is a web browser application based on the Python PyQt web engine, made in 290 lines of code. The code is written and published as is, so the

Dmitry Karpenko 6 Nov 07, 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
Tukaan is the new framework that aims to replace Tkinter

Tukaan is the new, pythonic and colorful (like a keel-billed toucan) framework that aims to replace Tkinter. It has everything (on my computer, not at GitHub) that you need to develop cross-platform

Tukaan 101 Jan 08, 2023
Weather-API-GUI-Tkinter - A weather tool made using tkinter which works by fetching query city weather using an API

Weather-API-GUI-Tkinter ☁️ ❄️ version- 1️⃣ . 0️⃣ . 0️⃣ This repo contains a weat

SasiVatsal 4 Jul 08, 2022
Dress up your code with a beautiful graphical user interface !

Dresscode Dress up your code with a beautiful graphical user interface ! This project is part of the Pyrustic Ecosystem. Look powered by the cyberpunk

20 Aug 24, 2022
This is a GUI application to plot functions in the form Y = F(X)

Plotter This is a GUI application to plot functions in the form Y = F(X) Technologies Python Qt designer Python unittest matplotlib Running Navigate

ahmedasad236 3 Dec 26, 2021
Function-Plotter - GUI Application to plot math Functions

Function Plotter GUI Application to plot a user given function How to run instal

1 May 05, 2022
Pyabr lightweight OS with Python and Qt

Pyabr cloud computing software In the name of God, the Compassionate, the Merciful Pyabr © 2021 Mani Jamali. Free Software GNU General Public License

PyFarsi Software Foundation 88 Dec 26, 2022