Although we started with a very lofty goal of providing a resource management application to help manage the resources within Chamonix, we decided that our first version should focus on capturing information about our people - things like basic resource profile information (name, office etc), as well as more interesting things like skills and education. This was a basic need for our sales guys to be able to know who had experience in what, whether it be technical, business, or industry oriented. Our plans were to build this basic data capture capability, and over time to flesh this out with further capabilities such as resource planning (potentially based on skills and availability).
Obviously a very important secondary goal for this exercise was to explore building apps in the cloud and get a better grip on some of the potential challenges - as well as some of the opportunities this presents. One of those opportunities (that we're still in the process of evolving) was the ability to allow users to sign in to our app using federated identity - eg Google, Facebook, or Windows Live. And of course while we were at it, if possible, to pull in information from their profile, such as their profile picture. As you'll see as we go along, this is getting increasingly easier, but also raises its own considerations.
So, this is the high-level technology architecture we're using:
- Data Store: SQL Server -> SQL Azure + Azure Storage
- Data Access: Entity Framework 4.0
- Business: WCF RIA Services
- Presentation: ASP.NET 4.0
- Authentication + Authorisation: Forms -> Azure Access Control Service
- Hosting: IIS -> Azure Web Role
Next time I'll get into some of the fun of building the parts of this app.