Cleveroad is an outsourcing company that provides its technical expertise to businesses of various sizes and industries. We develop custom software of varying complexity to solve the business problems of our clients. However, even software developers need unique solutions to overcome business challenges. We needed a unique digital solution to eliminate our management problems not long ago.
In this article, we will tell you how to build a scheduling app based on our own experience for our pipeline because we are professionals, and it is easier for us to do it ourselves than to look for a solution on the market. So, let’s get started.
Why Did We Need a Scheduling App?
Software development is a multi-stage process that involves many departments, each of which performs its own tasks to benefit the future product. In this case, you cannot do without competent management. Otherwise, the entire pipeline will fall apart, and the quality of the final software will be questionable.
Various scheduling apps are designed to assist in the development process. Many digital solutions fall under this concept, and each of them is aimed at covering all (or some of) the following tasks:
Schedule management. The name speaks for itself. Such applications and software are needed to schedule meetings, track projects, control budgeting, and employee workload.
Real-time communication. Such systems also help establish messaging, e-mail, and calls directly related to the created schedules.
Shift management. Large companies with many employees simply cannot live without a transparent and convenient management system for working days and hours, day-offs, sick days, and so on.
Analytics and reporting. Depending on companies’ internal procedures, some enterprises need transparent insights on the number of hours worked, the time spent on certain tasks, and the total workload. This helps not only to build processes correctly but also supports in financial matters of the company.
Optimizing internal processes at Cleveroad is one of our most important tasks, and we constantly strive for excellence in it. Clear interaction between departments as a whole and employees, in particular, ease of communication with customers, and continuity of the pipeline are our main priorities in management. And in this process, we also use certain scheduling software, which we will now discuss in more detail.
The Story Behind CR.Meeting
Before telling you about the history of developing our own scheduling solution, it is worth paying attention to how we decided to create an application for our needs.
Popular Scheduling Apps
There are quite a few solutions on the market that aim to solve management problems, namely, competent scheduling of internal processes and allocating resources. The most popular applications are:
Shiftboard has many features designed to streamline the workforce planning process. It has everything you need to keep your managers running smoothly and provide your employees with the information they need to do their job well. Thanks to creating user profiles, this solution is great for people management and scheduling.
A good application for creating different schedules, which is suitable for outsourcing companies where different meetings are often held. The software can integrate with useful tools like Google Analytics, Google Meet, and so on.
Another scheduling solution that not only helps to schedule meetings but also maintains a schedule for recurring events, all in the form of a convenient iOS and Android application.
An excellent tool for scheduling meetings and various events, which has in its arsenal both mobile iOS and Android applications, as well as a full-fledged Web version, which significantly increases its availability.
When it comes to the scheduling process, you most likely immediately think of Google Calendar. And this is not surprising because the application is one of the pieces of the Google Workspace. In it, you can appoint various meetings and create individual schedules that will be available on mobile platforms and in the Web app.
Why We Didn't Use Ready-Made Solutions
It would seem that we have named a whole list of successful examples of excellent scheduling solutions. Just take it and use it. However, not everything is so simple at first glance. Before we decided to build a scheduling app, we tried many other applications and found that none of them could cover our needs. Somewhere, something will still be missing in the functionality.
First, it should be said that we are a large company with R&D centers in several cities. As a result, the teams are divided between each other by kilometers, but clear communication must go on. Meetings are necessary for the streamlined development of custom software, and their management for different offices is quite a task. The number of meeting rooms is limited, and this number must be used wisely so that the development teams do not experience inconvenience. In addition to this requirement, third-party solutions also could not fully cover the following requirements:
- Integration with Google Calendar: since each employee owns a corporate calendar with events for the day, the information about the meeting must be in it.
- The presence of iOS, Android, and Web applications for greater ease of use and accessibility.
- Transparency of booking, when it is clear which team and which employees have reserved the meeting room.
- Synchronization of any changes in real-time.
- An intuitive interface where information dominates (for example, information about the meeting time should be available immediately, without the need to click on a specific meeting).
- Quality-of-life features, like a timeline.
After analyzing all of the above features, we realized that an ideal solution would be to create a scheduling app sharpened for our internal pipeline.
Preparing for Development
Before developing CR.Meeting, we went through a pre-production stage, which is worth discussing in a little more detail. This will help you get a complete picture of how an abstract idea turned into a full-fledged digital product.
It all started with understanding what we need and what we want to improve in our scheduling process. Our main problems were:
- The complexity of organizing meetings in several remote offices.
- An extremely slow booking process since we need to coordinate negotiations in several offices.
- The percentage of missed meetings and workers who were late for them due to lack of awareness
- Queues in meeting rooms and, as a result, a heavy load on them.
Understanding our main pains helped to form a feature list and set tasks for designers to study similar solutions on the market and how to implement the functionality we need.
Once the task to build a scheduling app appeared, the designers first analyzed the market for existing products and studied the competitors. This helped to get an initial idea of what we have to work with. In addition, the designers talked with the team leaders of the departments to collect the specifics of using meeting rooms and the most common complaints regarding the booking process. All this helped to finalize the list of features and start the design process.
We have defined that the application will have two user roles - administrator and user. An administrator can create an organization, add meeting room information, send invitations to add to a space, and block users. The user can book a conference room and edit the record. This is extremely important, as it affects the design process and requires a separate approach for each user role.
Next, it was necessary to reproduce the basic logic of the application and distribute the functionality across the screens. For greater clarity, the designers created Wireframes displayed as a map of projected screens that visually demonstrate the logic and structure of the whole application.
After the UX phase and the approval of the application logic, the designers proceeded to the UI part, which implies the development of the entire visuals with all the states of the application. The main criteria in the development of the design were the presence of good typography, the exclusion of unnecessary graphics, and an emphasis on content. It not only affected the complexity of the graphics but also the color scheme of the application. As a result, a color palette was approved with the design team, as well as corresponding corporate style, and safe contrast criteria.
Team Assembling Stage
Another issue was to gather a team that would be responsible for development. The dilemma was that we could not allocate a full-fledged team for this project since the developers were busy on other projects. Still, the solution to management problems could not be postponed indefinitely.
After a series of meetings, it was settled to allow the entire development team to work on the project in their free time without any specific deadlines. Thus, we killed two birds with one stone since the main projects did not suffer and the creation of CR.Meeting could begin. In addition, there were no free back-end developers in our team, which led to our decision not to use the self-written backend structure and implement a ready-made solution.
Tech Stack of the CR Meeting
It's time to talk about the technologies that helped us create a scheduling app.
Flutter has become the central development tool. It’s an open-source, cross-platform toolkit used for building apps for mobile OS, web, and desktop with the same codebase. But, why Flutter? There are several reasons for this:
Flutter makes it possible to develop cross-platform applications without sacrificing quality. From design to features, Flutter allows you to achieve the highest quality without developing a digital solution separately for different platforms.
Flutter allows developers to create feature-rich, high-performance applications for any platform.
Speed of writing code
This technology helps to speed up the development cycle and bring applications to people much faster. Thanks to the revolutionary Hot Reload function, Flutter provides a faster development process. This means developers can change the code and see the results in real-time. They can fix bugs, try new elements, and it takes less than a second to see how it works.
However, in addition to this tool, we used the following technologies:
- Dart. It is the main cross-platform, object-oriented language we used when developing our application.
- Kotlin. A statically typed programming language, mainly used for writing platform solutions.
- Swift. We use this programming language for platform tasks for the iOS platform.
- Firebase. We chose this service as cloud data storage. It allowed us not to reinvent the wheel and start the server part from scratch.
- Firebase Auth. Thanks to Firebase, we could integrate the login and registration process into our application in just one day. In addition, the provided user management console helped us test the login implementation as well as manage our users.
- Firebase Storage. The Firebase cloud storage function ideally helped us to store our users' avatars.
- Firebase Crashlytics. It is a fantastic tool for quickly finding and fixing problems. Firebase can track both fatal and non-fatal errors, and reports are generated based on how errors affect user experience. Unfortunately for web development it is not yet available.
- Google Calendar. With the help of this service, we have achieved the synchronization of room booking with the Google calendar. As a result, the staff members' reservations are displayed in the CR.Meeting and in everyone's personal calendar.
Core Features of CR.Meeting
So, let's look at the feature list we’ve settled to build a scheduling app. We implemented them in our solution to solve the problems of management and booking of meetings.
Users can register as an administrator or as regular users in the application. The admin role provides features to create profiles of organizations, add chat rooms, manage their visibility, and invite users to the organization. In the meantime, users can download and edit meetings.
Registration screen in CR.Meeting
User and room management
After registering the organization, the administrator can invite users to join or manage the organization by email (invite new ones, view a list of all conference room bookings, and remove them from the organization). In addition, there is the ability to work with conference rooms, namely, temporarily hide the possibility of booking, edit the name, and add new ones.
User management in CR.Meeting
Meeting scheduling and room booking
When creating a booking, the user can specify a time period, a description of the meeting, and set up a repeat of this booking. Also, each user can view the schedule for the current day, the whole month, and see it in the form of the list. In addition, there are features for editing or deleting a created reservation and viewing the details of another user's reservation.
Meeting room management
Google Calendar sync
All meetings created in the application are automatically synchronized with personal Google calendars of employees, who can see the exact day and time of the meeting and accordingly schedule other tasks.
Development Process: Peculiarities and Challenges
The development of any digital product is a complex process where the emergence of various complexities is a common thing. When you decide to create a scheduling app, you can also meet them. The development of CR.Meeting was not without its own challenges. However, our development team quickly fixed them.
Since we have created an application for several platforms, the design must look great on all platforms. Flutter is a great tool because developers need to write a codebase once and then run it on different devices. However, the problem is that the mobile UI will look bad on the web, and vice versa, the web UI will look bad on mobile devices.
Therefore, the developers needed to create a widget that controls which layout is shown on the device. If the user has launched a web application, then the web UI will be demonstrated, and the mobile UI if vice versa.
Custom Pop-up Menu
When it comes to developing a solution for a mobile platform, it's easy to interact with UI elements when you know the exact screen size. However, our application is cross-platform, and web applications are dynamically sized. As a result, we faced the problem of showing the popup menu when clicking on the booking. The problem was that the developers did not know if there was enough space around to show the pop-up window.
The solution to the problem was writing a separate calculation to check which side of the pop-up menu should be shown so that nothing overlapped it. This check happens every time a menu should appear on the screen.
Google Calendar Sync
To synchronize bookings with Google Calendar, it was decided to use the Google APIs library. It allowed developers to access the Google Calendar API. Initially, we faced the problem that the window with access to the calendar opened in the browser on smartphones, and it did not look very aesthetically pleasing.
The solution was quickly found using the googleapis_auth library. She allowed us to open a window to access the calendar directly in our application.
To summarize, the project took about 320 hours and was handled by a team of seven specialists who created this application with great enthusiasm. After we rolled out the finished version, the whole company began to actively test its functionality and the impact on internal management. And everyone was pleasantly surprised, as the effect exceeded all expectations.
- Internal pipelines have been greatly enhanced due to the simpler booking process.
- The percentage of missing rallies has decreased due to more awareness and accessibility of information about them.
- The queues in the meeting rooms were eliminated, and the corresponding load on them was also reduced.
The development team has done an excellent job and are not going to stop there. They continue to work on a new update for CR.Meeting that will bring new features that we cannot talk about yet.
Our ability to work with Flutter and its capabilities helped us solve management problems that negatively affected the overall workflow. And this is what we do every day - we help businesses, startups, and SMBs overcome difficulties and get a performance boost by implementing unique digital solutions.
Cleveroad in numbers:
- 10+ years on the market
- 120+ in-house engineers
- 170+ successful projects
- 8+ expertise industries
We operate in domains such as Healthcare, Logistics, FinTech, Retail, Education, Travel, Marketplaces, and Media. We provide an individual approach to each case and guarantee the top-tier quality, transparency of the development process, and high professionalism.
First of all, you should decide what kind of scheduling app you want and what kind of management processes it should launch. After that, you must make a relevant list of features that will cover all the necessary functionality. And the last step is to contact a professional technical vendor who provides mobile development services. Such a company will be able to collect the perfect text and create an application based on modern software development trends.
The best and most cost-effective way to create a cross-platform application is to use Flutter technology. This an open-source, cross-platform toolkit used for building apps for mobile OS, web, and desktop with the same code base. As a result, you don't need to create two separate applications for each platform. You create one cohesive solution that is available across all platforms.
At the moment, there are five popular solutions in this area:
- Google calendar
Give us your impressions about this article
Give us your impressions about this article