Skip to main content

The Python backbone for jdm-electron-flask desktop apps

Project description

jdm-electron-flask (Python)

The Python backbone for jdm-electron-flask desktop apps.

This package ships inside every project scaffolded by the jdm-cli electron-flask plugin. It provides the app factory, dynamic API registration, SocketIO setup, and environment-aware logging — so you build features, not boilerplate.


Installation

You don't install this manually. It's included in the scaffolded requirements.txt:

jdm-electron-flask==1.0.0

If you need it standalone:

pip install jdm-electron-flask

What it provides

create_app

The Flask app factory. Handles config loading, SocketIO init, blueprint auto-discovery, and the React SPA catch-all route.

# run.py
from jdm_electron_flask import create_app, get_socketio

app = create_app()
socketio = get_socketio()

if __name__ == "__main__":
    socketio.run(app, host="0.0.0.0", port=5000, debug=True)

JDMBlueprint

Extended Blueprint with built-in response helpers.

from jdm_electron_flask import JDMBlueprint

health_bp = JDMBlueprint("health", __name__)

@health_bp.route("/health")
def health():
    return health_bp.success({"status": "ok"})

JDMEvents

Base class for organizing socket event handlers.

from jdm_electron_flask import JDMEvents

class ConnectEvents(JDMEvents):
    def register(self):
        @self.socketio.on("connect")
        def on_connect():
            self.on_connect()

        @self.socketio.on("ping_server")
        def on_ping(data):
            self.emit("pong_client", {"echo": data})

ConnectEvents().register()

Printer

Environment-aware logger. Prints in development, writes to logs/<date>.log in production/deployed.

from jdm_electron_flask import Printer

Printer.success("Blueprint registered")
Printer.warn("Something is off")
Printer.error("Something broke")
Printer.info("Just FYI")

Response helpers

from jdm_electron_flask import success, error, paginate

return success({"user": "JDM"})
return error("Not found", status=404)
return paginate(items, total=100, page=1, per_page=10)

Validators

from jdm_electron_flask import validate_fields

valid, msg, data = validate_fields(["name", "email"])
if not valid:
    return error(msg)

Dynamic API registration

Routes are controlled by config/api.json:

{
    "health": {
        "link": "/api",
        "masterEnabled": true
    },
    "users": {
        "link": "/api/users",
        "masterEnabled": true,
        "disabledOnProduction": false,
        "disabledOnDeployed": false
    }
}

Adding a new route:

  1. Add entry to config/api.json
  2. Create app/api/users.py with a users_bp blueprint

That's it. No touching __init__.py ever again.


Environment modes

FLASK_ENV Behavior
development Debug on, console logging, all routes enabled
production Debug off, file logging, respects disabledOnProduction
deployed Debug off, file logging, respects disabledOnDeployed

Companion

This package is the Python half of the jdm-electron-flask ecosystem:

Package Role
jdm-electron-flask (npm) CLI plugin — scaffold, build, compile
jdm-electron-flask (PyPI) Backend library — app factory, blueprints, sockets

License

MIT © JDM-Github

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jdm_electron_flask-1.0.5.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jdm_electron_flask-1.0.5-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file jdm_electron_flask-1.0.5.tar.gz.

File metadata

  • Download URL: jdm_electron_flask-1.0.5.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for jdm_electron_flask-1.0.5.tar.gz
Algorithm Hash digest
SHA256 ef207553665fe8cb752588db65fc9b6de0d36755c44a78ac731c71d76c9e0b15
MD5 2494925ce236ca1c157760ace214bfe7
BLAKE2b-256 1007039a5c1eb2b03e7b61f4b806befed51fc1d9c543af2cddcf0228eacb6ef9

See more details on using hashes here.

File details

Details for the file jdm_electron_flask-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for jdm_electron_flask-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4a3be8e14fd1017398ef265917c3c06090966e2ce71b220831cf5a404e4e1407
MD5 4ee7476902ec7c269bbbfb654ab7529e
BLAKE2b-256 6897be3b92a07423a4e933eae83bbbd1a2d371a58362f5384e2596fd93458b5c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page