I have been a Perl developer for most of my professional career, since I first started to write code for a living, about 6 years ago. I mostly did back-end for web applications, but I also remember a Voice over IP app and some DevOps scripts I wrote. Remaining dedicated to Perl development over the years can be attributed to the welcoming and supportive community, both locally and globally. Additionally, the open-source nature of the language provides a remarkable blend of adaptability and the availability of sturdy frameworks. Currently, I am the Scrum Master & Team Lead at Calendis, an online booking solution with 3 web platforms and a mobile one.

Calendis was born 3 years ago on the idea that plane tickets and accommodation were not the only things that can be booked online, that everyday services everyone uses, like dentists, gyms, mechanics, hair salons can also be booked in the same manner. This way the classic appointment book of most businesses can be replaced with an online tool and users can more easily book appointments.


At present, Calendis offers solutions for two types of users:

  • end users, that can make appointments for various services
  • businesses, that can manage their appointments and clients (the end users)

For businesses, it is also a tool for managing employees, services, customers, track history of appointments, follow sales reports, send email and SMS reminders to their customers as well as sending them newsletter campaigns.

Business managers can create a public profile with a public calendar and identity for displaying their data to end users, enabling them to schedule their appointments. This way Calendis becomes an online market where offer meets demand, a lot faster, anywhere, anytime.

However, the main feature of Calendis is the interactive calendar. It’s an easy way to keep track of a schedule that belongs to the business user or end user or both. For example, a hairstylist can manage appointments and also book appointments for other services using the same account.

From a technical point of view, most of the time we have challenges on the front-end and related to user experience. We also need a strong back-end to save data and keep the consistency of the schedules in real time.

Perl in Calendis

Perl, as an open-source language, has one of the strongest module repositories, where developers and testers from all over the world have contributed to solid frameworks for web and diverse small modules. Using the Comprehensive Perl Archive Network (CPAN) anyone can find a solution – or more – to almost everything.

This is why we use Perl at Calendis, this is why we built our 3 back-end platforms using the Catalyst web-framework.

For the Admin platform there is a simple web app with the basic HTML, CSS and JavaScript on the front-end. For the Business and Client platforms there is a REST API for scheduling, management and so on, among basic HTTP end-points content built with Mason, which is served for the not so dynamic pages, such as “Terms and conditions” or “Contact”. The APIs allow us to interact with different interfaces on web and mobile.

Businesses use a web interface with Backbone.js, a JavaScript framework for Collections and Models, and Handlebars.js, an HTML&CSS templating system. This enables creating components with consistent structure and style, easily rendered and duplicated as needed. This improves the user interface and the user experience overall. There is also a Mobile App, interacting with the same back-end API. It uses React Native, a framework that lets us build front-end screens simultaneously for Android and iOS devices.

Clients access a React-built web interface for a user-friendly experience in searching and making appointments. Everything on the client-side is responsive and most of our end users access Calendis on their mobile devices. We also have a work-in-progress Client Mobile App, which will be available soon.

There are also other back-end side jobs. We send email reminders in-house, but we integrate with a third-party API of a mobile provider for the SMS reminders. We use our own mail server for transactional emails, while we send newsletter campaigns through Amazon Web Services (AWS). As you can imagine, configurations are always something to pay attention to. Whenever something changes, and as we grow, we test more before we release.

This is why we use Docker for deployment, so we have little to change in configurations between servers. Most of them are done at the docker image level. We have a Perl 5.20 image with 3 instances of it. We also have images for a DBMS, session storage and a proxy server – we use MySQL, Redis and NGINX, respectively. However, we do not use these images on all our environments. For example, in development, some developers prefer to use their own servers, so Docker is really helpful on this part.

Final thoughts

To sum up, we faced some challenges in building this startup and we still go through new challenges every day. We focus on the scalability of this great tool, which was at first a replacement for the old-school appointment book and is now closer to an online market.

Calendis now has now over 15000 users on the client platform (www.calendis.ro), where anyone can make appointments and service providers can publish their services,. We also have almost 100 businesses from Cluj-Napoca and Bucharest on the business platform (business.calendis.ro), from different fields: Sports, Beauty, Medicine, Dental, Psychology and Human Resources.

From a start-up point of view, after 3 years of studying and adapting to the market, I would say it is only the beginning of Calendis.



Article written by Mihai Pop