Have a look at Elixir/Phoenix with LiveView. While it’s the state of the art, I’m not sure it would suit you better than sprinkling some JS over an otherwise server-rendered page.
Actually, for all the requirements listed LiveView is perfect. Interactivity can all be defined server-side without adding any JS; Forms can be validated server side before submission; I assume implementing dynamic forms will be easier to do once on the server side instead of having to do it twice or send a schema over to the FrontEnd. OP should really look into LiveView.