Development of a mobile website with apps and social features

Recently, we did a lot of interesting work when we built a reference implementation for a modern, mobile internet solution. We chose to implement a Dutch auction mainly because the scenario is easy to understand and contains several non-trivial problems that we regularly encounter in other projects. The project was internally called the "Cloud Auction". We did this implementation inside Macaw's "Knowledge Development" group, a small R&D group inside Macaw for which I am responsible. The solution that we built uses several new technologies, and we have been trying to update the solution when we gained new insights, or when updates of technologies we use came out. Of course our solution uses the latest and greatest web technologies from Microsoft: the Microsoft Web Stack, consisting of the .NET Framework 4.5, the ASP.NET MVC4 web framework, and SQL Server. It runs on the Windows Azure cloud service. We use a number of open source technologies that mostly come to us in NuGet packages, by Microsoft and many others. In this blog series I am going to describe many challenges that we ran into, and how we solved them. Hopefully, it will save others some time, and your solution will become as awesome as ours.

Blog posts that I plan on writing:

  • Setting up a solution with MVC4 and Twitter Bootstrap
  • Source control and ALM with Visual Studio TFS Online
  • Configuring an ASP.NET project for development with SSL
  • Database access using SqlFu, a fast Micro ORM
  • Database Migrations using FluentMigrator
  • Setting up deployment to Windows Azure, troubleshooting problems
  • ASP.NET MVC4 Form Validation with Bootstrap on client and server using a single ruleset
  • Consistent Localization in the database, .NET and javascript layers
  • Content Management with Markdown
  • Authentication in ASP.NET MVC with SimpleMembership and OAuth
  • Authentication with WIF and Windows Azure Active Directory (WAAD)
  • Creating a custom Identity Provider for an organization
  • Separating domain logic from infrastructure code using Domain Events
  • Using SignalR and knockout.js to push data in real-time to the browser
  • Scheduling background work without adding a Worker role using Quartz.NET
  • Implementing Dutch/European Cookie Law in ASP.NET MVC4
  • Improving page speed using bundling, image compression and the Azure Blobstore as a CDN
  • Adding Facebook Like buttons and using the Graph API with ASP.NET MVC
  • Making your ASP.NET MVC4 website double as a Facebook App
  • Reusing your existing ASP.NET MVC4 site as a SharePoint App
  • SEO: Optimizing the MVC site for Search Engines
  • Fun with the (script) kids
  • Logging errors with Elmah and NLog
  • Exposing web site data and functions using Web APIs
  • Creating a Cross-Platform Native App Using MvvmQuickCross and Xamarin, Part 1: Cross-Platform Code and Windows 8 App
  • Creating a Cross-Platform Native App Using MvvmQuickCross and Xamarin, Part 2: Android App
  • Creating a Cross-Platform Native App Using MvvmQuickCross and Xamarin, Part 3: iPhone App
  • Optimizing code share of the application between ASP.NET, Xamarin Mono and Windows 8
  • Enriching the web experience with the Durandal client-side MVC framework

Writing all that down, this seems like a lot of work! That is a lot of knowledge to share; let's see how far I can get in the next weeks…