Thanks for commenting on this, I need all the feedback I can get.
I have been doing some more research and I am starting to think that the multi-tab(MDI) approach is more trouble than its worth. It breaks the all routing paradigms etc, the concept of forward/back is no longer an option, and deep linking is no longer feasible. I think the main dividing line falls between deep linking with forward/back on the one side and multi tabs on the other side. I am now thinking more along the lines of the standard "open link in new window" if the users want tab switching and use a workflow that requires switching back and forth between states. Bascily keep the main documents in separate browser tabs. After all that's what browsers are for right... Going for the single document approach with angularjs seems more in line with what is normally done.
Having landed on a main "navigation" concept here are some of my issues
1. The standard routing is not sufficient but the ui-router has some good points although it is still a bit immature with regards to how to control the re-rendering of parent views when a child state changes. I also would like a more pluggable model for routing information. Basicly I would ideally like to have the routing/state information for each business module inside the "configuration" for that module. This relates to point 2 below.
2. In the ideal world I would do a runtime "initialization" of all the business modules. Obviously the plugin modules need to adhere to whatever the main application view provides, but it would mean that one could easily install new modules after the system was installed. A bit like a cms system where you install new plugins easily. I suppose I could "generate" the intialization javascript code one the server but that is not ideal. The reason for lazy loading is that I do not technically need that, but if other modules use external libraries it might be easier to resolve these extern dependencies runtime but I might be wrong here.
Luke Kende:
I did look into extjs but it kindof scares me the way they clutter the dom and it feels so large and unwieldy. I do not like large monolithic frameworks as they tend to suck you in and do everything their way. Angularjs combined with uibootstrap seems the way to go. I love the way the two-way binding works and someone has finally done something right with regards to a nice clientside mvc extending the html syntax which I think just feels right.
David Gee:
When you mention top-level modules you are talking business "modules" right (not angularjs apps)?
> "dashboards/workspaces would be created by having a state for the dashboard with multiple views handling the widgets."
Would you then have a separate controller per view right or at least a separate instance? (I am still very new to angularjs so that might be a silly question). As for the dashboards do you have any suggestions for a widget "library" that makes the dashboards even more appealing like this
http://www.myorange.ca/theme/jarvisadmin/widgets.htmlMy previous experience with writing rich javascript applications is a large trend application using pure jquery, jquery-ui, flot charts and slickgrid. No fancy databinding but all hand crafted. Its all well and good for specialized application but when writing larger crud type apps then using manual databinding becomes very tedious and way too time consuming.
.