Case study · Web app
Moodica
An online therapy platform that matches clients with the right psychologist or psychiatrist.
Someone looking for therapy faces a long list of specialists and no way to tell who fits their problem, and booking, paying and meeting usually happen in three different places.
Moodica puts the questionnaire, the match, the appointment, the payment and the video session in one platform, built around data protection. It is still in development and not yet open to the public.
- 700+ automated unit, integration and interface tests
- 3 user roles: client, specialist, administrator
- Year
- 2026
- Role
- Developer, graduation project
- Built with
- Links
01
The challenge
The data is among the most sensitive there is: a client’s answers about their mental health. The platform has to protect it by design, keep specialists’ credentials verified and never present a questionnaire result as a diagnosis.
On top of that the parts depend on each other: a booking must never double-book a specialist, a payment must match an appointment, and a video call must only open for the right two people at the right time.
Constraints
- Personal data must follow KVKK, Turkey’s data protection law
- Online therapy has legal conditions that are still being worked through before launch
02
My part
-
Built the ASP.NET Core MVC application with Entity Framework Core on PostgreSQL, packaged with Docker.
-
Wrote two-step verification, role-based authorisation and encrypted storage of questionnaire answers.
-
Built the matching from a short questionnaire, plus a demo mode with eight sample specialists and five client scenarios.
-
Built the appointment calendar, online payment and live video sessions with SignalR.
-
Wrote more than 700 automated tests, including integration tests that run against a real PostgreSQL in Docker, and set up CI on GitHub Actions.
03
Key decisions
-
The platform never diagnoses
- Chose
- The questionnaire only screens and routes; assessment and treatment always stay with the specialist.
- Why
- It keeps the product honest and inside what software may claim, and it shapes every screen’s wording.
-
Let the database prevent double bookings
- Chose
- Appointment times are stored in UTC and a database rule rejects overlapping bookings.
- Why
- Application code can race under load or time zones; a rule in the database cannot be bypassed.
-
Test against a real database
- Chose
- Integration tests start PostgreSQL in Docker and call the app over HTTP.
- Why
- Authorisation, two-step verification and consent flows only prove themselves end to end, and mocks would have hidden database behaviour.
04
Results
Most of the platform works end to end: the questionnaire and matching, booking and cancellation rules, e-mail reminders, post-session feedback and a sandbox payment with refund. Two people have also joined a live video call over the internet.
It is not public yet. Before launch the remaining work is legal (what an online therapy service must be licensed as) and operational (hosting and a TURN server for difficult networks). The source is on GitHub, in a repository that stays private for now.
Have a problem like this one?
Tell me what you are working on and I will get back to you.
kilichalit103@gmail.com