A few months back, I was working on interesting customer engagement. Lagom was getting popularity, therefore, I and my few team members wanted to explore it to see if it would suit our needs. Just reading its documentation was not enough to get the proper practical hands-on. So we thought to do a project. The idea was that we should not build a dummy project, instead, we should try to solve a real-life problem which can be useful for the people. Therefore we started to explore the possible solution.
At that time, we were facing the challenge of getting the free availability of meeting rooms at Knoldus. Whenever we had our meetings and needed the meeting rooms, it was all occupied. As organizations have limited meeting rooms, so it was an obvious issue. We were not using any tool or application to manage it at that point in time, therefore, we picked this problem as our problem statement and started working on to the solution.
We named the solution as RAP: Resource Acquisition Planner.
We thought to make an inhouse application instead of spending a lot of money on some commercial product. Whatever features RAP have, you might get that in a commercial product but we started RAP as a learning project and converted it to a useful product for the Knoldus along with the learnings.
We did not limit the scope of the RAP only to the meeting rooms. We covered all the resources which an organization have in the limited capacity.
The resources here can be:
- Meeting room
- Conference room
- External Speaker
- Any other limited resources
This is all about the evolution of RAP. Now let’s discuss the technical details.
We planned the following technology stack for RAP:
- Lagom with Event sourcing and CQRS
- Scala and SBT
- Akka Actor
- DDD and Reactive Microservices
After a lot of efforts, we finally launched it for the Knoldus colleagues to use it. Currently, we are using it internally and it is very well welcomed by the Knolders. RAP has become a part of our daily work life because whenever we need any resource to use, we first need to go to RAP and then need to book it for us for a time period.
Let’s discuss some of the RAP features here:
We have 2 portals here:
- User portal
- Admin portal
We have a user dashboard where user can see his total bookings so far, upcoming bookings and the stats for the last 7 and next 7 days bookings;
It has a booking calendar where the user can see the booking details as per the date. Also, he can cancel any booking and finish the booking if it finishes early.
And we have a UI panel where user can see the booked slots for any resource. First, they need to select the resource type and then they will get the visibility of the bookings for all the resources under that type.
You can see in the above image that the booked slots are visible in gray color with the booked duration and name of the user mentioned on it.
As soon as, you will select the time from start time and end time, you will get a light blue box on each resource representing your selected booking slot.
While making a booking, we can add notifiers as well whom we want to notify about the booking. As soon as booking get created, an email goes to the person who made a booking. Now if we have added notifiers as well then the booking email will go to them too
For admin, we have a panel to add users and resources (assets) to the system.
So this is all about RAP features. We will discuss the RAP architecture and some other technical details in my next blog. Stay tuned for the updates.
We will be going to open source the source code very soon. This source code will contain both UI and the backend code.