A mental-health platform
with therapy one tap away
A telehealth mental-health support platform we built end to end: licensed therapists you can reach by text, call, or video, a range of healing approaches, and peer communities so no one has to work through it alone.
Inside the app
Building something in telehealth? Book a 30-min review
The hard part was making help feel reachable, not clinical
Getting a person to reach out is half UX and half trust. The build had to shrink every barrier between feeling bad and getting real help.
Live access to real therapists
We matched people to licensed therapists by field and let them choose how to meet, by text, call, or video, so the first step felt small instead of daunting.
Room for different approaches
Not everyone heals the same way, so the app carried meditation, movement, and breathing techniques alongside talk therapy, and let people find what worked for them.
Beating the fear of being judged
Peer communities and channels let people find others facing the same thing, so reaching out felt shared rather than exposing.
What we built
Therapist matching
A directory of licensed therapists by specialty, with the freedom to pick both the person and the way you meet them.
Sessions your way
Text, voice, or video appointments, so care fits the moment and the comfort level instead of forcing one format.
A toolkit beyond talk
Guided meditation, movement, and breathing exercises for the days between sessions, because healing is not only an appointment.
Peer communities
Topic channels where people find others with the same struggle, turning an isolating problem into a shared one.
How a session actually happens
The product is four steps long from the user's side, and every one of them is a place people drop out. Most of the build went into the seams between them rather than the screens.
Find someone who fits
Browse licensed therapists by specialty rather than by whoever is free. Matching on the presenting problem is what makes a first session useful instead of a triage call.
Pick how you meet
Text, voice or video, chosen by the person rather than fixed by the platform. The format is the barrier for a lot of people, so it is a choice at booking time and not a setting buried in a profile.
Meet, and keep the thread
Sessions run in-app and the history stays attached to the relationship, so nobody restarts their story every time and the therapist opens on context rather than a blank page.
The days in between
Guided meditation, movement and breathing tools plus peer channels, because the week between appointments is where a care routine is either built or lost.
Building something with sessions and sensitive data? Book a 30-min review
The parts that were not obvious
Three decisions that shaped this build, each one a place where the straightforward implementation is the one that quietly fails.
Sensitive content changes what you may log
A session in this product is health information, so the usual instinct to instrument everything is the wrong instinct. What gets recorded, what stays on the device, and what support staff can see are product decisions made before the first screen, not privacy cleanup done before launch.
Text, voice and video are three products, not one
Text, voice and video look like one feature and behave like three: different failure modes, different latency budgets, different things that happen when a connection drops mid-sentence. Treating them as one abstraction is where telehealth builds usually crack.
A peer community inside a care product carries duty of care
An open channel next to licensed therapy is not a forum feature. Moderation, escalation and the path from a worrying post to a real person have to exist from the first release, because the alternative is discovering the gap through an incident.
The stack
- Angular
- RxJS
- TypeScript
- NGXS
- Express
- Node.js
What this build demonstrates
The client is not named and no usage numbers are cleared, so what follows is capability. Every item is something the platform does in production.
- Real-time sessions in three formats, each with its own failure handling rather than one shared abstraction
- Health-sensitive data handled as a design constraint from the first sprint, not a pre-launch pass
- Matching people on the presenting problem rather than on availability
- A moderated peer community running alongside licensed clinical care
- Self-guided tooling built for the gap between appointments, where retention is actually decided
- A full product cycle in one team, from discovery through release



