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.8.tar.gz (9.6 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.8-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jdm_electron_flask-1.0.8.tar.gz
  • Upload date:
  • Size: 9.6 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.8.tar.gz
Algorithm Hash digest
SHA256 7b7b3882e57d1434b1877d6387da59bda3a213db66a10343c5e3956638b18c0d
MD5 8501f14e43954cadb09a480e09095b12
BLAKE2b-256 84979d4faeecc4721c9191aa66cd22a882c7691e5f99d4a366c67b67068209f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jdm_electron_flask-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 e2d93e20f05e8d230dbb1f217c9defa3443a0289213e821790c36b14e2d1d781
MD5 904bc40cbf11677a5d3e99db6cb449d1
BLAKE2b-256 115b0b37228acc491679bc7d0ebc1c92463424d525d51d5655c5bd93aed957a0

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