I guess the issue here is we have two SPAs that share the same host and we are trying to use the context (the first path element after the host) to determine routing. This is complicated further by determinging which index.html we display for a give context.

For the express app routing I recommend:

```
// make root path go to admin
'/' => 'views/admin/main/index/html'
'/admin' => 'views/admin/main/index/html' (redundant)
'/widgets' => 'views/widgets/main/index/html'
```
So in `MainController.js` this would be:

```javascript
index: function (req, res) {
  return res.sendfile('.tmp/assets/admin/views/index.html');
},
admin: function (req, res) {
  return res.sendfile('.tmp/assets/admin/views/index.html');
},
widgets: function (req, res) {
  return res.sendfile('.tmp/assets/widgets/views/index.html');
}
```

Then in the `assets/admin/app.js`:

```javascript
// root should be the landing page (in admin app) when done
.when('/', {
  ...
})
// this should go to whichever is the default page for the admin
.when('/admin', {
  ...
})
// all other admin paths should be prefixed with /admin
.when('/admin/snippets', {
  ...
})

```

Then in the `assets/widgets/app.js`:

I think we should remove the `/product/` based paths and use semantic name paths based on the widget name. We could then put the productId as either a path param after it or as a query param.

```javascript
.when('/widgets/reviews/:productId', {
  ...  
})
.when('/widgets/qanda/:productId', {
  ...  
})
.when('/widgets/wants/:productId', {
  ...  
})
.otherwise({
  redirectTo: '/widgets/404' // determine what to do here
})
```