This Web Interface for Hashcat developed in Python. This project aims to keep the GUI and Hashcat independent. In a nutshell, here's how it works:
User uploads hashes, selects wordlist/rules/mask etc, and clicks "start".
Web server spawns a new screen.
Generates the hashcat command based on the settings.
Runs the command in the screen.
Monitors the screen's output, parses it, and displays in the GUI.
This allows tools to be future-proof as it ties to the input/output of Hashcat. Also, if the GUI is not working for whatever reason, hashcat will keep running.