Pretty much yes - although not quite with regard to the top nav. Instead this is a ko array where we inject the application path so the URL works in dev/test etc.
So it starts off pretty simply - 1 shared layout, X controllers each with 1 view. All standard MVC. Inside _Layout.cshtml we have this javascript:
<script>
window.appRoot = "@Request.ApplicationPath"; // global application path
</script>
This just saves us a whole heap of trouble with regard to ajax requests, links etc., so we don't have to care whether we're using port numbers, virtual directories etc.. We can just prepend that to anything and it just works.
In the controller we handle any authentication, and then we render the view (Index.cshtml). e.g.:
<script src="~/Scripts/require.js" data-main="@Url.Content("~/App/mail/main")"></script>
From then on, we just have the standard durandal folder structure. Inside "shared" we have a bunch of helper functions, including the top nav shortcuts. This is just an observable array and we pass in an id to set the active application. I can email you some code, if you need a better example.
We use localStorage (fallback to cookies) in the event we need to store any data between apps. To be honest we haven't needed to so far, as any user preferences sit in our database (e.g. selected language).
Our only real issue is trying to minify/optimise each application - plus the the shared folder - for deployment (e.g. library+shared, mail+shared). I just haven't figure that out yet.
Hope that helps.
rob