This is a plan of development for the simulator that will make it easier to extend incrementally, whilst keeping our core concepts of a decoupled, framework-agnostic code base.
First, the problems with the current setup for the client:
- Our layout is defined in HTML (well,
pug
), so we only have a single layout at the moment, and ourelements
service is tied tightly to that layout. This is fine for the simple page that we have currently, but is not flexible and makes multiple layouts or dynamic layouts difficult. - We have all sorts of ideas for being able to record events, play them back, undo/redo, etc. for which a solely event-driven architecture is unsuited.
The classical solution to these, of course, is a monolithic state-driven framework like React or Vue, but those are unsuited to long-lived applications due to their vendor lock-in. cob
was created to solve that and is working really well on vs-computer/vs-personalities, enabling us to write code that is not tied to a single framework