Reservation: PageBox for .NET application with booking and search Reservation

Presentation Distributed Database Install Security Offer Booking Search Internals



Reservation is an example of Web Application distributed with PageBox.

Reservation is not a contrived example but an application that:

  • Addresses a real need

  • Can also run stand-alone

  • Requires a minimal customisation

  • Leverages on the PageBox deployment

  • Uses its own Database instance

Reservation will be one of our test beds for future evolutions of the PageBox concept presented here and here. It aims to demonstrate that beyond facilitating deployment, PageBox enables the development of applications that cooperate. In a Reservation environment participants share what they want to share. The loosely coupling has two major advantages:

  1. No central point. Limited message exchange (small overhead)

  2. It is easy to convert an existing application to use PageBox: In Reservation, the Search facility is the only PageBox-dependent function. It is an optional and independent component. If you remove it, Reservation continues to work


The current version of Reservation is a .NET Web Application written in C# and should be deployed with PageBox for .NET.



Reservation is born during a vehicle inspection. I had nothing to do but to discuss with the boss who wanted to use Internet. I discovered that vehicle inspection has a simple and pure business model:

  • There is no point to create a fidelity program. Customers only come when required by law (every two years in France)

  • People come to get a paper. The quality of the service doesn’t matter

  • It is difficult to be cheaper. You need the same machines and employee skills as your competitors

  • The customer doesn’t need to make a deposit. She or he just make a call

  • The key issue is to be the first on the list and to be close to the customer with a convenient access

Obviously the Web can help for the latter point:

  • You can show an access plan

  • The customer can book off hours

The Search facility came from another observation: shops, hotels and small companies cooperate extensively. They understood a while ago that it is stupid to hide the address of a competitor when you are overbooked. To the opposite they maximize their profit and the customer satisfaction just by sending customers to each other. Computerizing this process allows measuring how much you give and how much you get.

I also used Reservation to investigate Storyboard Authoring. Today applications are designed from the data model in the simplest case or from an Object model in more complex (or more founded) projects. Analysts build UML models and apply design patterns. However users who make the application success or failure never see the database tables and the UML model. They only see the user interface. I think that we should sacrifice the program and the data model elegance to get a clearer and more convenient user interface and not the opposite. So the storyboard authoring is just designing the screen and then filling the blanks between the screens and the data.

Therefore I wrote Reservation just like an automated tool would do. As a consequence the code is not very structured.


Reservation is not limited to vehicle inspection. You can use in all cases where the offer is limited by the headcount. It could also work for hairdressers and dentists at least in countries where customers don’t insist to be always tormented by the same executioner (limitation addressed in 0.0.2).

Reservation allows employees to set their schedule remotely. They also can see when there is a resource shortage or when they can take a break. Because users are well identified, Reservation simplifies the rescheduling of rendez-vous in case of shortage, strike...


Reservation is free and Open Source. If you need a function that is not implemented, just write it. Please let us know your changes. If the change is generic enough we would be happy to include it in the product. Send us a mail at Also send us a mail if you want to contribute. We can create an developer account for you on Sourceforge.

Future enhancements

Reservation 0.0.2

User preference

The customer can choose a preferred employee.

Scheduled deletion

It will be possible to delete a user sometime in the future.

Opening days

For the moment all days of the week are considered in offering and booking. We will allow configuring Opening days – for instance from Monday to Wednesday.

Reservation 0.0.3

Trust relationship

The search function allows identifying suitable Reservation instances. However when the user selects one of them she or he needs to authenticate again. With the new feature Reservation instances trust each other. When the user links to another instance her or his account info and preferences are passed and the user doesn’t have to login again.


  1. Search uses the address info to select the closest instances. In the future we will also use GPS coordinates.

  2. Remote post-installation (creation of the local database tables, deployment of the configuration file)

  3. Each Reservation instance is managed by an independent and small entity. It only handles a small amount of data but a large constellation of Reservation instances could represent a huge amount of data. Thank to the PageBox infrastructure we can design a consolidation system and implement corporate functions such as Data Mining and Revenue management.


User roles and security

There are two basic roles in Reservation: employee and customer.

Because an employee updates her or his schedule, it changes the Reservation Offer.

Customers are further divided in normal and proxied customers.

  • A normal customer has an Internet access and a mail account. She or he registers and receives a confirmation mail with an Id and password.

  • A proxied customer has his account created by an employee

A customer can book or search other suitable instances.

The security forms and mechanisms are further described in resa-auth.html.

Resource management

Employees update offer. The Offer form looks like some timetables.

A day is divided in slots of 1/2 hour and the employee can select the slots where it will be available.

She or he can also display the total offer, the available (non-booked) and the booked offer.

The resource management is further described in resa-offer.html.


Customers book a resource a given day for a given half an hour slot.

The booking is further described in resa-book.html.


Customers can search the Reservation instances closest either to the current instance, or from their address or from the address that they specify (for instance when they are travelling).

They get a list of instance URLs. They can click to book, to get information about the instance or to display the itinerary using Mapquest.

The search facility is further described in resa-search.html.



Reservation can be automatically deployed and installed.

The Reservation user must however configure the instance (a single reservation.xml file) and run a script to create the database tables.

The installation process is further described in the Installation guide. This page is also where you can download Reservation.

Database model

resa-db.html presents the database model of Reservation. You can use it to produce reports.


resa-internals.html describes how Reservation works. It should help you if you need to troubleshoot or modify Reservation.
2001-2004 Alexis Grandemange. Last modified .