Back to Projects
Ruang Diri Mental Health Platform

Ruang Diri — Mental Health Platform

Web Development
Client
Jasa Raharja
Engagement
Paid Freelance
Timeline
Dec 2025 — Apr 2026

Project Overview

Ruang Diri is a production mental health counseling platform connecting clients (students, employees, and the general public) with professional psychologists for online counseling, mental health screening, and real-time chat. I delivered the project end-to-end as a paid freelance engagement for Jasa Raharja between December 2025 and April 2026 — owning architecture, backend, frontend, infrastructure, and deployment to production.

18+
Feature modules
40+
REST endpoints
20+
Database tables
6
User roles

My Role & Impact

End-to-end ownership. Architected and shipped the platform from zero — backend modules, frontend flows, database schema, infrastructure, and CI/CD.

Real production outcome. Live at ruangdiri.vercel.app serving real users from corporate and educational organizations.

Multi-tenant SaaS. Designed organization-scoped quotas, custom branding, and role-based access control across 6 distinct user types.

Production reliability. Containerized with Docker, deployed to Google Cloud Run, async work via BullMQ + Redis, file uploads via Google Cloud Storage with signed URLs.

Application Gallery

Homepage — hero with screening CTA
Homepage — hero with screening CTA
Layanan — clinical, education, and career counseling
Layanan — clinical, education, and career counseling
Platform advantages section
Platform advantages section
Testimonials from real users
Testimonials from real users
Contact & FAQ
Contact & FAQ
Authentication — multi-role login
Authentication — multi-role login

Technical Implementation

Architecture. Clean Architecture with DDD — Interfaces, Application, Domain, and Infrastructure layers. Each feature module is self-contained and testable.

Authentication. Multi-role JWT auth via Passport.js. Role-based guards and decorators enforce RBAC at every protected route.

Database. PostgreSQL with Drizzle ORM for type-safe queries and zero-downtime migrations. 20+ tables modeling counseling, scheduling, chat, and tenancy.

Real-time. Ably + Socket.io power 1-on-1 chat with file uploads, typing indicators, read receipts, and presence tracking.

Background work. BullMQ + Redis run async jobs — email queue, push notification fan-out, and scheduled session reminders.

Deployment. Multi-stage Docker builds, pushed to Google Artifact Registry, deployed to Cloud Run. Frontend hosted on Vercel.

Technologies Used

backend

NestJS v11TypeScriptPostgreSQLDrizzle ORMPassport.js (JWT)BullMQRedis

frontend

React 19ViteTailwindCSSZustandReact QueryFramer MotionZod

realtime

AblySocket.ioWebSocket Gateway

infra

DockerGoogle Cloud RunGoogle Cloud StorageArtifact Registry

services

MailerSendPushy SDKSwagger UI

Key Features Shipped

Multi-tenant SaaS — custom branding per organization
6 user roles with RBAC: Student, Employee, Client, Psychologist, Organization, Partner
Real-time 1-on-1 chat with file uploads, typing indicators, read receipts
Counseling booking with calendar UI, reschedule & quota management
Mental health screening with multi-step Zod-validated forms
Psychologist availability scheduling with conflict detection
Email (MailerSend) + Push (Pushy SDK) notifications
PDF report generation and Excel export for sessions
GDPR-compliant data wipe flow
Swagger UI for 40+ documented REST endpoints

See it in production

The platform is live and serving real organizations. Explore the homepage, services, and authentication flow on the deployed site.

Visit ruangdiri.vercel.app