Skip to main content

Server side rendered, reactive web applications in python.

Project description

rxxxt (R-3-X-T)

A library to build server side rendered, reactive web applications in python.

1 dependency (pydantic).

Features:

  • stateless (HTTP) and stateful (websocket) sessions
  • server to client updates
  • integrated state management
  • background workers
  • routing and navigation
  • partial page updates
  • more...

Have a look at the Getting Started guide or check out the full documentation.

Installation

pip install rxxxt

If you want to run the application, you will have to install an ASGI web server like uvicorn (with [standard] to allow for websockets) as well:

pip install rxxxt "uvicorn[standard]"

Usage

import uvicorn
from rxxxt import Component, El, Element, App, local_state

class Counter(Component):
  count = local_state(int)

  def on_click(self):
    self.count += 1

  def render(self) -> Element:
    return El.div(onclick=self.on_click, content=[f"Count: {self.count}"])

app = App(Counter)
uvicorn.run(app)

result.webm

Usage with FastAPI

import uvicorn
from fastapi import FastAPI, Response
from rxxxt import local_state, Component, El, Element, App, PageBuilder, VEl

class Counter(Component):
  count = local_state(int)

  def on_click(self):
    self.count += 1

  def render(self) -> Element:
    return El.div(onclick=self.on_click, content=[f"Count: {self.count}"])

server = FastAPI()

@server.get("/main.css")
def get_css():
  return Response("body { margin: 0; font-family: sans-serif; }", media_type="text/css")

page_builder = PageBuilder()
page_builder.add_header(VEl.link(rel="stylesheet", href="/main.css"))

app = App(Counter, page_factory=page_builder)
server.mount("/", app)
uvicorn.run(server)

Notes

  • after restarting python, your browser session will stop working (until you refresh), because your old state has been invalidated. Make sure to set JWT_SECRET to avoid this.

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

rxxxt-0.4.3.tar.gz (32.6 kB view details)

Uploaded Source

File details

Details for the file rxxxt-0.4.3.tar.gz.

File metadata

  • Download URL: rxxxt-0.4.3.tar.gz
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rxxxt-0.4.3.tar.gz
Algorithm Hash digest
SHA256 6176c718b07c82a631b228ea14520ffaa8069c0e32a5cf67667e700c6e50d684
MD5 b1434cc9debb60506a2d096a6208e8e6
BLAKE2b-256 99d510c7cd410c0b9d8492f0102def64ebdab10ee4f8fa71eebeed9f260c07de

See more details on using hashes here.

Provenance

The following attestation bundles were made for rxxxt-0.4.3.tar.gz:

Publisher: release.yml on leopf/rxxxt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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