I had been providing assistance to a primary stakeholder in optimizing her scheduling process, gaining a solid understanding of her business and specific client requirements related to scheduling. Her scheduling needs were quite distinct, as she required the ability to double book herself and conduct sessions both at her facility and at clients' homes. Additionally, she had numerous exceptions to standard scheduling rules that aligned with her business practices but could not be accommodated by a generic scheduling tool like Setmore, which she was using at the time.
Given my background in front-end coding and my eagerness to enhance my skills through exploring no-code solutions, I undertook a project to develop a customized scheduling application. The goal was to create a solution tailored to her unique requirements, eliminating the reliance on generic platforms.
Objectives
In light of the limitations posed by Setmore and its impact on her business, it was crucial to explore alternative solutions, whether building one from scratch or adopting an existing one. Additionally, considering the stakeholder's reliance on her phone for day-to-day business operations, it was vital to develop a solution that seamlessly integrated with mobile devices.
Based on these factors, the main objectives of the project were:
Transition the stakeholder away from Setmore and onto a more suitable scheduling platform.
Create a mobile-first solution that prioritizes usability and functionality on smartphones and other mobile devices.
Acquire knowledge and expertise in low-code/no-code solutions to expand skill sets and enhance problem-solving capabilities.
In most projects, I typically follow the standard design process, creating designs and mapping out workflows for the scheduling solution before entering the development phase. However, this particular project called for a different approach.
Considering my objective of exploring no-code solutions, I first needed to determine their viability before diving into design work. I started by exploring Bubble.io, a popular solution in the market. While I appreciated the wealth of resources and training available for the platform, it did not provide a straightforward method for creating an app deployable on app stores. After conducting a competitive analysis, I discovered FlutterFlow, a tool that leveraged Flutter to build applications, offering solutions for iOS, Android, and web platforms. This proved to be the perfect fit.
Although the resources and training materials for FlutterFlow were limited, the tool had a strong community that provided enough support to get me started.
To bring the project to life, I utilized the following tools and technologies:
Figma for designing (integrating with FlutterFlow, enabling me to import style guides and components)
Firebase as the database solution
Chat GPT as my engineering resource when writing code or custom functions
Xcode, Android Studio, and VS Code for deployment purposes.
To bring the app to life, I initially utilized a generic template provided by FlutterFlow. Through tutorial videos and active engagement in their community, I familiarized myself with various functionalities such as database querying, document manipulation, conditional statements, and more.
As my proficiency with the tool grew, I began tailoring the app to the stakeholder's specific needs and workflows. I adopted a somewhat unconventional process by first building functional flows, such as the class booking process, and then iteratively designing the user interface (UI) elements, saving and reusing them. Although this reverse approach (build before design) may seem atypical, it allowed me to tackle the riskiest aspects early on, given my familiarity with the desired end-state flows and relative unfamiliarity with FlutterFlow.
As the app expanded in complexity, I gradually moved away from the initial templates and developed custom ones that I leveraged throughout. These custom templates seamlessly integrated with the database, dynamically pulling in class names, prices, and other relevant information that could be updated on the fly by administrators.
Apart from building flows and components, the app required email functionality for both administrators and end-users. Additionally, I needed to integrate with Google Calendar to automatically create events and include the client's name upon signing up for a class. As these tasks surpassed the capabilities of FlutterFlow, I enlisted the assistance of Chat GPT to develop custom Firebase functions, facilitating the connection with the appropriate APIs.
Finally, prior to deploying the app to the app store, I conducted thorough rounds of quality assurance (QA) using TestFlight. This involved engaging both stakeholders and end-users to identify and address any bugs or issues. Despite encountering a few challenges that have since been resolved, the app's deployment marked a significant milestone, ultimately generating a substantial positive impact on the stakeholder's business.
Results
The customized scheduling app has been successfully deployed on both the iOS and Google Play stores, seamlessly integrating with various platforms and services including Firebase, SendGrid, Google Calendar, Google Analytics, Stripe, and Amazon SES.
Since its launch, the app has garnered significant adoption, with 100% of the stakeholder's customer base (300 clients) actively using it. Impressively, within the first few days of the app's release, 62% of clients downloaded and installed it. Furthermore, the stakeholder has gained an additional 50 new customers since the launch.
The implementation of the app has had a tangible impact on the stakeholder's daily schedule management. With the newfound efficiency and convenience provided by the app, she now spends significantly less time on scheduling tasks. Moreover, she has been able to schedule 20% more classes and sessions compared to her previous methods. This increase in capacity directly contributes to a boost in her yearly revenue.
Screenshots from the app can be found below:
Learnings
Reflecting on this project, I have identified a few areas where I would have approached things differently if given the opportunity.
Firstly, I would have conducted a data mapping exercise. As someone relatively new to database management, I encountered several bugs caused by missing or incorrect variables in Firebase collections. By performing a data mapping exercise beforehand, I could have created a visual reference that would have allowed me to quickly recall the requirements of each collection, reducing the likelihood of such mistakes.
Secondly, and an aspect I intend to address in the future, is the implementation of automated testing. Currently, the manual testing process extends the deployment timeline by a few days. I aim to incorporate automated testing to streamline this process and expedite deployments. I anticipate that my reliable companion, Chat GPT, can assist me with this in the future.
HMP 2023
Dog Training App