Since 2017, Marigold Health has been working day and night under founder, Ravi Shah, to tackle one of the most prevalent health conditions in the world today, mental health. Named as 'One of the most disruptive startups by the APA in 2018, Marigold health wants to bring attention to mental health and provide care to people suffering from it using technology and mobility. Marigold Health gives patients with mental health or substance abuse issues 24/7 access to a text-based group support with healthcare professionals that can help them talk their problems out, catch clinical complications early, and increase the capacity of current providers.
In 2019, in his hunt to find the best establishment to help him with his mission, he came across NativeBase, our UI Library for React Native, which led him to us. He explored our past experiences and the work that we had done for our clientele, which won him over and brought him to our mailbox.
In our first discussion, we convinced him that we were the right people for the job and took the transaction forward. He explained his mission and his requirements to us, which, if plainly put, was an overhaul of the existing app for Marigold using the latest technology and divide functionality of the platform into two separate apps. To make this happen, we decided on a fixed scope & timeline engagement, spread across multiple phases. The first phase would last for 7 weeks, which would include development and release of both apps.
The phases that would follow would include addition of new features for the app and support for the released product through another engagement, which is ongoing.
With a fixed time model engaged for the project, there was a lot of work to be done in a fixed amount of time. The project was of a sensitive nature and needed great expertise and finesse when being developed. To make it happen, we employed 3 developers who were experts in React to handle the tasks, with a Product Manager spearheading the process, who were all being supervised by an Engineering Manager. Keeping availability and other engagements in mind, the developers were rotated with prior knowledge of the client.
Two mobile apps built in React Native. One for moderators and one for members.
The app needed to be HIPAA compliant.
Features such as group chat rooms, moderator privileges and synchronous chat controls.
Development of additional features and support for released products.
The system in question comprised of two separate applications; one, that would be tailored for patients and the other, that would be customized for moderators and healthcare professionals. With an intensive discussion over which technology. to build this project in, React Native was the ideal choice. With that choice made, it was another task to choose the best backend tech that would complement usage and add to the efficiency of the app. According to our experts, Firebase & NodeJS were the two choices and since Node, combined with FeatherJS, is a JS based backend framework and gelled well with React Native, it was the obvious choice. The app was also required to be Health Insurance Portability and Accountability Act (HIPAA) compliant, which meant that the entire projects should adhere to the guidelines set by HIPAA.
The entire project was divided into 12 milestones, which ranged in duration and accomplished a set of tasks individually. The first 3 & the 6th milestone dealt with the creation and completion of a working UI with three focused on integration and the rest for adding finesse to the apps in question. The app was to have 3 major types of users: Patients, Semi-Moderators (recovered patients) & Moderators, each with their own set views, privileges and features. Some basic features of the app include an able chat messenger for patients to chat on, form creation and sending capabilities for moderators to send them to patients to fill and adding them to the relevant groups based on their choices and the ability to flag and add reactions to messages that may be intercepted by semi-moderators and acted upon, amongst many others.
In the development of the app, a combination of React, React Native & FeatherJS was used with Redux & mobx-state-tree to manage states. The first features that were implemented were account creation and authentication based (sign-up, sign-in, forgot password etc.), followed by chat room creation, adding/removing users, waiting screens, forms creation, filling and response storage, crash reports, customization tools, dark mode et cetera. A new feature of icebreakers was added in the apps which were introductory messages for new patients in a user group. All these features were discussed on by the client and the dev. team for application, feasibility and relevance before actual implementation. The feature was then created, shared with the client and then integrated with the entire app.
The UI was not an issue as an app did exist previously and the UI screens were pre-designed by the client, so the design team had no involvement in the project.
After successful integration of features, the build was passed on to the testing team which performed manual testing on the app using Sentry. The feature was rigorously tested under all imaginable circumstances to make sure that it is stable, and through every iteration, existing features were re-tested to ensure stability. Once tested and approved by the client, the feature was pushed into production , where some critical features were tested again in production environment.
With so much to do, challenges and obstacles crept in during the development of the product. The first challenge was to make sure that the push notification delivered to users were encrypted. This was achieved through the process being done within the native layer of the extensions used for push notifications. Another one surfaced while using Mixpanel where the events were synchronised for different clients with different decryption keys at the native layer itself. The chat feature was to serve more functionality when compared to traditional chat applications in the market, so realtime performance was an issue. This was solved by implementing an efficient codebase underneath the chat APIs. Finally, one feature that stood out was the 'Synchronous Chat', which enabled moderators to pause all activities of users in a group chat to give the spotlight to a single user. This was a tricky feature to implement but our developers thought throught their heads and made it happen.
- PubNub was the API used to enable chat services.
- MixPanel was used for application behavior management.
- Bitrise was the choice of tool for CI & delivery, with Aptible for compliance assurance.
- A total of 12 milestones were set and completed to see the product reach fruition.
Marigold health is currently ongoing with new features coming in and support being offered for the existing apps. Overall, the client is extremely happy with how the product turned out. He gave special emphasis to the team's ability to undertake and adapt to changes during the development cycle and integrating all features till date seamlessly and effectively. Till now, the product released works as intended. We are glad to be a part of Marigold Health's noble endeavour to bring awareness towards the importance of mental health and provide support and help to people suffering from it on a 24x7 clock. With the platform becoming more robust and versatile by the day, we're eager to explore the possibilities it can bring.