Project case study

Healthcare management system

A full-stack clinic management platform — receptionists register clients, doctors create and manage health programs, and assign them to individual clients.

Hospital system screenshot
React + ViteFrontend
Express + PostgreSQLBackend
2 user rolesReceptionist · Doctor
Interview assignmentOrigin
Overview

What is the healthcare management system?

This project was developed as part of an interview assignment and serves as a portfolio piece demonstrating full-stack skills across the entire development lifecycle. It is a clinic management platform built with React (Vite) on the frontend and Express.js + PostgreSQL on the backend.

The system separates concerns cleanly between two roles. Receptionists handle client intake — registering new clients via a modal interface and searching through the client list. Doctors take it from there — creating health programs (such as TB, HIV, or Malaria), assigning one or multiple programs to individual clients, and tracking program enrolment across the platform.

System roles

Two roles, two flows

Receptionist
  • Register new clients with full name, phone number, and ID
  • Add clients via an intuitive modal interface
  • View and search all registered clients
Doctor
  • Create and manage health programs (e.g. TB, HIV, Malaria)
  • Assign one or multiple programs to each client
  • View and search through client program enrolments
Features

What it does

Role-based access
Separate logins and dashboards for receptionists and doctors, each restricted to their own workflow.
Client registration
Receptionists register clients (name, phone, ID) through a clean modal interface, with search across the client list.
Health program management
Doctors create and manage health programs (e.g. TB, HIV, Malaria) and assign one or multiple programs per client.
Search & filter
Both roles can search through their relevant lists — clients for receptionists, client programs for doctors.
Secure authentication
Password hashing with bcrypt and JWT-based authorisation to protect user sessions and data.
Relational database
PostgreSQL with a normalised schema supporting clients, health programs, and many-to-many program assignments.
Tech stack

Built with

Languages
JavaScriptHTML5CSS3
Frontend
ReactViteBootstrap
Backend
Express.jsNode.js
Database
PostgreSQLpg
Security
JWTbcryptCORSdotenv
Deployment
Vercel
Screenshots

App walkthrough

Receptionist homepage dashboard
Receptionist dashboard
Add client modal
Add client modal
Client list view
Client list
Doctor homepage
Doctor dashboard
Health programs view
Health programs
Client programs from doctor view
Client program assignments
Challenges

What I worked through

Separating frontend and backend into a proper API architecture Solved
Unlike my previous projects that used EJS templating, this system required a fully decoupled React frontend consuming a RESTful Express API. Setting up CORS correctly, handling JWT tokens across requests, and managing frontend state with API responses was a significant shift in how I think about full-stack architecture.
Designing the program assignment data model Solved
A client can be enrolled in multiple health programs, and a program can have multiple clients — a classic many-to-many relationship. Designing a clean normalised PostgreSQL schema with a junction table, and then writing the JOIN queries to support the doctor's dashboard views, required careful upfront planning.
JWT authentication across a decoupled stack Solved
Implementing JWT with bcrypt in a React + Express setup meant handling token storage on the client, sending the Authorization header on every protected request, and writing middleware on the backend to validate tokens and enforce role-based route access.
MovieWatch All projects