Overview¶
In Django, Python code is the source of truth for the database: models declare the schema, and everything else follows. RxDjango extends that principle to real-time single-page applications: channels declare the live state a client sees, and a typed TypeScript SDK follows.
A channel is a Python class — a ContextChannel — declared in a
channels.py file inside a Django app. It holds the state of one client
connection: plain reactive values, computed fields, or model instances
serialized with the DRF serializers you already write. From these
declarations RxDjango generates a matching TypeScript class for the
frontend.
At runtime, each connected client gets a live instance of the channel. Assigning to a field on the server pushes the new value to the frontend automatically, and the frontend calls the channel’s actions like ordinary async methods — no hand-written consumers, no channel groups, no message routing on either side.
See the Quickstart for setup, and try the Examples to interact with each feature live.