Your ideas sound good.
There are many ways to structure this. Perhaps I suggest making a DashboardView and a DashboardController, and in my template several outputs , one for each widget "slot":
{{outlet topWidgetView}} {{outlet leftWidgetView}} ...
Then, in the router, in the connectOutlets route connectOutlets the control panel, connect the widgets after creating the toolbar instance:
router.get('applicationController').connectOutlet('dashboard'); router.get('dashboardController').connectOutlet({ outletName: 'topWidgetView', name: 'fooWidget' }); router.get('dashboardController').connectOutlet({ outletName: 'leftWidgetView', name: 'barWidget' });
source share