close-icon

Nibou online therapy

In 2018, a businesswoman approached me with an idea for a mental wellness iOS app connecting users to qualified therapists. I took the concept from a slide deck to an MVP, launching Nibou in the UAE and Turkey within a year.

Welcome.png

Project highlights

  • Built and led a team of four: a junior iOS engineer, UX designer, QA engineer, and a backend engineer

  • I developed two iOS apps — one for customers and one for therapists — while mentoring a junior iOS engineer who assisted me

  • Used Swift and programmatic UIKit to build a highly customized user experience

  • Leveraged DispatchQueues and DispatchGroups for concurrency, which resulted in a smooth and responsive user experience

  • The backend was built with Ruby on Rails

  • Primarily integrated REST APIs for core functionality, while using Socket.io for real-time chat functionality

  • Integrated Stripe for secure payment processing

Now, I’ll highlight some of the most interesting iOS engineering aspects of Nibou.

Bespoke user experience

liquid.gif
  • Created a bespoke user experience with custom UI components using UIKit

  • Optimized for all iPhone models and iPads with AutoLayout

  • Utilized UIView animations and CoreAnimation for smooth transitions

  • Integrated Lottie for complex animations like the one above

  • Leveraged DispatchQueues and DispatchGroups for a smooth, responsive user experience

Payments

Register-scm-1.png
  • Integrated Stripe iOS SDK to securely tokenize user cards and send tokens via an SSL-secured REST API

  • Nibou offered its users the convenience to store and switch between multiple cards within the app

  • Used a server-synced timer to track therapist session duration and calculate costs

  • After a session ended, the app sent a request to the backend to trigger a payment via the Stripe API using the stored token

  • The user could also view their transaction history in the app

Networking

Register-scm (1).png
  • Core networking tasks like authentication and therapist search were handled via URLSession integrating with a REST API

  • Real-time chat functionality was powered by WebSockets and the Socket.io SDK

  • In addition to a responsive chat experience, the feature had to be carefully architected to track and charge users based on the time the therapist spent composing messages

  • The chat user experience was achieved by customizing a third-party library built on UICollectionView

Therapist app

expert (3).png

The therapist app shared much of the same foundation and architecture as the client app, with additional utility features tailored for therapists.

  • Both the therapist and user apps utilized iOS Localization to support English, Arabic, and Turkish

  • Therapists could highlight and save important messages to ensure continuity of care if a user switched therapists

  • Firebase was leveraged for push notifications and alerts, helping therapists maintain timely response rates

  • Backend chat data was mirrored into CoreData, enabling powerful offline search functionality for therapists

While Nibou shut its doors in late 2024, it remains a project I'm incredibly proud of due to the depth of work and valuable learning experiences I gained.

If you think I’d be a great fit for your project, please drop me a line at shawnfrank.work@gmail.com