Below is the architecture I’d use for a multiplayer todo app with Leptos + Datastar + Axum SSE.
The important design choice: Leptos renders typed server-side HTML components. Datastar owns browser events and DOM patching. Axum owns routes, mutations, and SSE streams. Do not hydrate the same DOM subtree with Leptos WASM and then also morph it with Datastar.
Datastar’s model fits this well because it patches HTML elements from the backend using SSE and morphing, so the backend can stay the source of truth. ([Datastar][1]) The Rust SDK has Axum integration and PatchElements/PatchSignals primitives. ([Docs.rs][2]) Leptos supports SSR, and its Axum integration exists for server-side apps, but in this guide we are using Leptos mostly as a typed HTML renderer rather than a hydrated client framework. ([Leptos Book][3])