With that kind of description, you could use Vaadin’s [web components]
(https://vaadin.com/components) and the client-side [Vaadin Router]
(https://vaadin.com/router). You would have to supplement that with 3rd party solutions for templating and state management in the client-side part as well as everything happening on the server.
Vaadin Labs has [an experiment]
(https://vaadin.com/labs/vaadin-connect) related to putting together that full stack, but this kind of approach is still in a very early phase.