Reservation is an example of Web Application distributed with PageBox.
Reservation is not a contrived example but an application that:
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:
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:
Obviously the Web can help for the latter point:
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 firstname.lastname@example.org. Also send us a mail if you want to contribute. We can create an developer account for you on Sourceforge.
The customer can choose a preferred employee.
It will be possible to delete a user sometime in the future.
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.
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.
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 customer can book or search other suitable instances.
The security forms and mechanisms are further described in resa-auth.html.
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.
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.