Coproject - a RIA Caliburn.Micro demo, part 1

by Augustin Šulc

In this part, I would like to describe the Coproject application, overview its architecture, and prepare its database.

What will Coproject do

If you know BaseCamp, the idea of Coproject should be familiar to you. For others, let’s say we want to create a simple project management tool. It should help you track current state and progress of a project. We want it to have four modules: Home and overview, Messages, To-Do lists, and Milestones.

Since I want this tutorial to be as simple and clear as possible, we will focus on To-Do lists only. We want the application to show list of To-Do items, filter the list, show detail of selected To-Do item, and edit the item. I believe that for now, it is enough to keep you focused on our goal and I hope I will be able to show how to handle many issues that you usually encounter while developing business applications.


Based on the analysis illustrated in the original presentation, Coproject will be a three layered application based on a SQL database, ADO.NET Entity Framework 4, WCF RIA Services and Silverlight 4.

Data source

In this tutorial. we will use a simple SQL database for data storage because this is probably the typical case. Nevertheless, you may use any other data source that is supported by Entity Framework 4. The most important part of the database schema is shown below:

To make it a little more complicated than simple list of items, ToDoItems are grouped by ToDoLists.

Web server

On the application server side, we will use Entity Framework 4 to access data source. If you are not familiar with it, check this site.

To make the data available for the Silverlight client, we will use WCF RIA Services. You can learn more about it here.

The client itself and the services will be hosted in an ASP.NET Web application and thus the client application will be accessible via browser. However, we will also support out-of-browser running.


The client will be implemented as a Silverlight 4 application. It will follow M-V-VM design pattern using Caliburn.Micro framework. It should handle typical business scenarios like: asynchronous loading of data, loading indication, opening and editing of more than one entity at a time, validation, dirty checking, etc.

Getting ready for development

We need to create a database for Coproject. Although you can create a database file in Visual Studio, it is not possible to execute a script on a database through VS. So you can either create an ordinary database on your server (or local Express server) and execute Create script attached to this article, or download already prepared database file Database.mdf and put into App_Data folder of web server that we created last time.

You should be able to double-click it and have it opened in Server Explorer:

Rebuild the solution to make sure there are no errors.

That’s all for now. The next time, we’ll create a RIA service.

Tags: Silverlight, Caliburn, Ria, Coproject


  • nick said

    The link to Script and Database download is broken.


  • sulca said

    Hi, nick - thank you for the notification, the link should be ok now.

  • TimNape said

    Where do I download the initial project

  • Augustin Šulc said

    You can get source code from Codeplex: but for this tutorial, you simply start with New Silverlight project from VS.

  • Naye said

    I am trying to use your tutorial as a model for our WPF Desktop Application. However, I am having trouble getting the style to work.
    Do you have anything quick alternative I can use with a non-silverlight project?

    Please help


  • Augustin Šulc said

    @Naye Try this WPF Cosmopolitan style: (I have no experience with it, just have googled it).

Add a Comment