Skip to content
All work

Healthcare Management Platform

Health Direct

Multi-role healthcare platform with isolated dashboards for patients, doctors, clinics and admins, plus a structured medical records module.

Overview

What the product does

A healthcare management platform where patients, doctors, clinics and admins each work in an isolated dashboard, with scheduling, real-time chat, video consultations and a structured medical records module.

Problem

The problem it solves

Four user types share one platform but need different views and permissions, while chat and scheduling have to stay responsive during live consultations.

My role

What I contributed

Full-stack work on the records module, shared data-fetching layer, real-time chat performance and the scheduling experience.

Solution

How the system was designed

A Next.js and TypeScript frontend over a Node and Express API with MongoDB. Data fetching is standardised through reusable hooks on Axios and TanStack React Query, records are validated with Zod, FullCalendar drives scheduling, and Agora handles in-call video.

Architecture

System architecture

ClientApplicationServicesDataExternalHTTPSRESTWebSocketValidateQueriesHistoryCallsClientPatient · Doctor · ClinicNext.jsRole dashboardsREST APINode · ExpressRecordsZod-validatedRealtimeSocket.io chatMongoDBPrimary datastoreAgora RTCVideo sessions

Key features

What it does in practice

Isolated role dashboards

Separate dashboards for patients, doctors, clinics and admins, with a structured medical records module validated using Zod.

Challenges

The interesting engineering problems

  • Keeping real-time chat smooth
    Problem
    Presence heartbeats, scroll handling and duplicate socket messages made the chat surface heavier than it needed to be.
    Approach
    Reduced presence heartbeat frequency, debounced scroll events and applied message ID-based deduplication.
  • Trusting the records module
    Problem
    Medical records collected across roles are only useful if their shape is guaranteed before they are stored.
    Approach
    Validated the records module with Zod schemas, so malformed submissions fail at the boundary rather than in the database.

Technology

The stack behind it

  • Next.jsReact Framework
  • TypeScriptType Safety
  • Node.jsBackend Runtime
  • Express.jsHTTP Framework
  • MongoDBDocument Database
  • Socket.ioRealtime Transport
  • Agora RTCRealtime Audio & Video
  • FullCalendarScheduling UI
  • TanStack QueryServer State
  • ZodSchema Validation