Htmx frontend
Given that most of us aren't js experts, but rather rust experts, it may make sense to lean into that by using as much rust as possible. What I've seen advocated is the "MASH" stack. maud, axum, sqlx (not important), htmx.
This would be a larger refactor, but it might be easiesh in combination with the trait. Frontend calls back via htmx, trait resolves what to return based on current state. Frontend has dedicated methods to call.