Skip to main content

TauPy Framework

Project description

TauPy

TauPy

Build desktop apps with Python + Rust, and drop in React/Vite when you want. Fast reloads, native window controls, and a tiny API surface.

Demo

🎯 Focus Timer Demo - a small demo application showcasing TauPy window APIs, compact mode switching, and a React-based UI.

👉 https://github.com/S1avv/taupy-focus

Why TauPy

  • Hybrid by design - Python backend + Rust launcher; use Python widgets or a full React front-end.
  • Hot dev loop - edit → window refreshes near-instantly, no page reload dance.
  • Native window API - minimize/maximize/resize/drag, all routed through Python to the launcher.
  • Shipping ready - taupy build bundles your front-end, rebuilds the launcher, and Nuitka-packages the backend.

Code example (Python UI)

from taupy import App, VStack, Text, Button, State
from taupy.events import Click

app = App("Hello TauPy", 800, 500)
msg = State("Hello, TauPy!")

@app.dispatcher.on_click("btn_hello")
async def hello(_: Click):
    msg.set("Button clicked!")

@app.route("/")
def home():
    return VStack(Text(msg), Button("Click me", id="btn_hello"))

if __name__ == "__main__":
    import asyncio
    asyncio.run(app.run(VStack(id="root")))

Install

pip install taupy-framework

Quick start (React front-end)

taupy new [app_name]
cd [app_name]
npm install
taupy dev

Build

taupy build

Pipeline:

  1. Build React/Vite (if present) → target/dist
  2. cargo build --release for the launcher → target/launcher
  3. Nuitka bundle backend → target/app.exe

Performance snapshot (indicative)

Scenario TauPy (Python + Rust) PyQt / PySide Tkinter Electron
Cold start (release build) ~300–600 ms ~900 ms – 1.8 s ~500–900 ms ~1.5 – 3 s
Hot reload (code → UI) ~40–120 ms (WS diff) Full widget refresh Full redraw ~200–500 ms
UI update (state → render) ~10–40 ms QWidget update Full widget update Virtual DOM diff
Bundle size ~6–15 MB + dist 40–80 MB ~2–5 MB 120+ MB
UI stack HTML/CSS (WebView) Native Qt Native Tk Chromium

Measurement conditions

Measurements taken on Windows 11, Ryzen 7 5800X, NVMe SSD.
Release builds, minimal "hello world" applications.
Numbers are indicative and vary by project size and configuration.

TauPy CLI

  • taupy dev - run backend + external front-end (Vite) with hot reload.
  • taupy build - build front-end, launcher, and Nuitka bundle into target/.
  • taupy new <name> - scaffold a new TauPy project.

Dev vs Prod (auto)

  • Dev (--dev): external HTTP (Vite 5173), hot reload.
  • Prod: serves bundled dist/ on 8000. Override with TAUPY_EXTERNAL_HTTP / TAUPY_HTTP_PORT.

📘 Documentation

Full documentation is available here:

👉 https://s1avv.github.io/taupy/

Roadmap

  • Cross-platform launcher (Linux/macOS)
  • Native dialogs & notifications
  • Packaging presets (single-file)
  • Built-in icon set & theme presets
  • DevTools/inspector mode
  • Playground in browser

Requirements

  • Windows 64-bit, Python 3.11+
  • Rust toolchain (launcher rebuild)
  • Node.js (for React/Vite, optional)

📜 License
TauPy is released under the MIT License. Free for commercial and personal use.

💬 Contributing
Contributions are welcome!

⭐ Support the Project
If TauPy inspires you - please star the repository. Every ⭐ makes development faster ❤️

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

taupy_framework-0.0.6.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

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

taupy_framework-0.0.6-py3-none-any.whl (2.6 MB view details)

Uploaded Python 3

File details

Details for the file taupy_framework-0.0.6.tar.gz.

File metadata

  • Download URL: taupy_framework-0.0.6.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.4 Windows/11

File hashes

Hashes for taupy_framework-0.0.6.tar.gz
Algorithm Hash digest
SHA256 951794e1ec85fd2de2882e3ef1c8dad017c0b5e2a26f930ff1449635bec0706d
MD5 09e932d4b3508e9ea5d9ae80f6fca84b
BLAKE2b-256 794461feb7c8e7725ec0e7decf7867331823ea36de4f03f89ed0bf96ffd94697

See more details on using hashes here.

File details

Details for the file taupy_framework-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: taupy_framework-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.4 Windows/11

File hashes

Hashes for taupy_framework-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 25d0831d0d0c1ba8d18bc9ee45a14d89526b60d22535cd2bca5ed272d46db67a
MD5 a3aa042c7870e411e29f5f115792a658
BLAKE2b-256 0f9a3aef5691ea140905878b07c068e1e8c6dc0e251c5d6cec796dbe9115f5a6

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