{% extends "base.html" %} {% block title %}pyqmh — About{% endblock %} {% block content %}
Architecture

Python Queued
Message Handler

A modular, message-driven application framework for Python.

Protocol

A central message bus that routes commands between modules by address — no direct calls between modules.

Modules

Self-contained units of behaviour, each owning its state and running in its own execution loop.

Queue-Based

Messages are delivered asynchronously through a queue, keeping modules fully decoupled from each other.

Web-Ready

Each module can expose its own Flask application, served in an iframe from this central navigation shell.

How it works

The main application creates a Protocol instance, registers one or more Modules, then enters a message loop. Cross-module coordination happens exclusively through protocol.send_action() — never by direct method calls.

app.py Protocol Message Queue Module A Module B …

Module types

Standard modules extend the base Module class directly and contain all concrete runtime behaviour in one class — ideal for logging, UI integrations, and one-off coordination logic.

Factory modules define an abstract base class and expose multiple interchangeable implementations (e.g. simulated vs. real hardware). The factory pattern keeps the abstraction boundary clean and avoids condition-heavy code throughout the app.

{% if modules %}

Active modules

The following modules were discovered at startup and are available from the navigation bar:

{% endif %}
{% endblock %}