success_logo

Your form has successfully submitted

One of our teammates will get back to you soon.

scalendar: Time-Management in Haskell

Does your business need time management, but you haven't been able to find a tool to correctly handle it? scalendar is a solution which implements an algorithm to keep track of the availability of resources over a period of time measured in days.


Many things in business require time-management of a set of resources. For example, in a hotel you can book different types of rooms, a company might rent an office in a business center, or you might want to rent a specific car from a car rental business. In all these examples you might want to book a resource for several days, let's say, you plan to book a hotel room in Beverly Hills from July 9th to July 20th and perhaps when you are there you plan to rent a Ferrari for some days. More generally, our business model may have some sort of resource which can be booked for a number of days and once it's booked it's no longer available to other users for that period of time.

Naturally, when we are given a set of available resources for a given business, we want to know how many units are available for a given check-in (starting date) and check-out (end-date). By availability we mean that there are no conflicts between a desired reservation and previous reservations which have been made on a specific resource over a period of time. Also, not only we want to know the quantity of the available units, but additionally we want to know a set of identifiers of the units which are still available. For example, for the owner of a car rental it would be very useful to know with anticipation that from July 9th to July 20th she still has a Ferrari Dino, a Ferrari California and a Lamborghini Aventador available for you to rent.

This is the kind of problem that scalendar approaches - namely, managing availability over time for a set of identifiers (which represent resources), where the availability varies according to the state of a calendar that is affected by the history of reservations previously performed.

If you search the Internet for time management systems, you may have a hard time finding something similar. Most examples out there focus on the front-end: showing the calendar, but not on the backend: managing valid reservations in your business logic. Most of time-management software which could be reliable is proprietary. In contrast, scalendar is an open-source solution that serves as a proxy between your storage system and your business model. That way you have complete control over how you are storing reservations, and your back-end is properly decoupled from the GUI.

So if you are planning to build an application which needs time management, give scalendar a try! In case you have gone through the README but still are not very clear about how to integrate this library with your application, take a look at our minimalistic example which is about a simple API in servant to know the availability of rooms in a hotel.

Finally, we want to acknowledge Martin Rayrole, who is the author of the "Top-Nodes" algorithm on which the scalendar library is based: without his ideas it would have been harder to figure out a time management library in Haskell. You can verify in the Abandonment section of this web-page that the version of the algorithm which inspired this library now belongs to the public domain.

Published on Oct. 5, 2017

Written by:


Software Developer

Sebastián Pulido

Subscribe to the Blog

Join our community of avid readers and stay informed with the latest articles, tips, and insights delivered straight to your inbox. Don't miss out on valuable content – subscribe now and be part of the conversation!

We care about your data. Check out our Privacy Policy.