MVC3 Site Builder Application Design
===

It would be great if someone could help me on this problem as I am new to web development and ASP.NET MVC. My goal is to design an MVC application which could help users to create their own mini websites. Each user will get their own mini websites and an admin panel to change the pages and template of  their sites. I think there are scripts out there to achieve something similar, but we need to create our own for our specific requirements
Towards that goal I created a main mvc 3 application and I created an area as Site under it. We want the user to have their own sub domain urls like www.site1.mainsite.com where site1 is the name of the mini site of the user. For that I added 2 routes one for the main site and another for the area like 


    routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                new[] { "MainSite.UI.Controllers" }
            );

In Area Registration 

    context.MapRoute(
                "Sites_default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                new {controller = new SiteConstraint()},
                new[] { "MainSite.UI.Areas.Site.Controllers" });

Both of them have the same url type, but area route have a constraint where I added like 

    var url = httpContext.Request.Headers["HOST"];
            var storeName = url.Split('.')[1];
            var match = storeName != "mainsite";
            return match;

so far its working, But i dont think its a good design. Now apart from this I need to add 2 more areas one is siteadmin and another is blog. 
What should be best way to achieve this? 

 - sub domain urls should be directed to area "site" 
 - subdomain url/Admin should be routed to area "siteadmin" 
 - domain/blog should be routed to blog area.
 - domain other urls should be handled by main controllers

Thanks in advance 