← Back to Projects

ClinicOS

Full-stack therapy operations platform for session scheduling, treatment plans, therapist workflows, and progress tracking.

A-Tier · Public Repository Portfolio / academic project · No public live deployment

1. The Problem

Therapy practices need structured ways to schedule sessions, record attendance and notes, maintain treatment plans with goals, and give therapists a clear operational view of their caseload. Spreadsheet- or paper-based workflows fragment this information and make progress hard to track consistently.

ClinicOS was built as a software-engineering / portfolio project to model these operational workflows in a full-stack web application — authentication, role-aware access, session lifecycle, treatment plans, and dashboard views — without claiming clinical validation or production healthcare deployment.

2. The Solution

Verified capabilities supported by the repository models, routes, and frontend components:

No public live deployment is listed. Local setup is the intended review path.

3. System Architecture

Monolithic full-stack design — no microservices or external AI services.

┌──────────────────────────────┐
│     ClinicOS Frontend        │
│  React 18 + Vite             │
│  React Router · Context API  │
│  CSS custom properties       │
└──────────────┬───────────────┘
               │ REST API
               ▼
┌──────────────────────────────┐
│     Express.js Backend       │
│  Node.js · JWT · RBAC        │
│  Session / Plan / Therapist  │
│  route modules               │
└──────────────┬───────────────┘
               │
               ▼
      ┌────────────────┐
      │ MongoDB        │
      │ + Mongoose     │
      │ Session        │
      │ TreatmentPlan  │
      │ TherapistProfile│
      └────────────────┘
      

Core models: Session, TreatmentPlan (with embedded goals), TherapistProfile.

4. My Contribution

ClinicOS is presented as an individual portfolio / academic software project. Unlike AutiSmart (documented team FYP), there is no separate team-contribution table in the repository. The public codebase and documentation reflect full-stack work across:

5. Key Technical Decisions

React + Vite + Context API

Why: Fast SPA development for multi-screen operational UIs; Context API sufficient for auth state without heavier state libraries.

Trade-off: Client-side rendering; full experience requires a running backend.

Express REST API + route modules

Why: Clear separation of session, treatment-plan, and therapist concerns; straightforward middleware chain for auth.

Trade-off: Monolithic process; scaling would require further modularisation or service extraction.

MongoDB + Mongoose with embedded goals

Why: Flexible documents for treatment plans whose goals and interventions evolve; indexes on therapistId + date for common list queries.

Trade-off: Patient identity is stored as names/IDs in documents rather than a full normalised Patient collection in the current models — simpler for a prototype, less ideal for complex multi-patient reporting.

JWT + role checks

Why: Stateless auth suitable for SPA + API; roles (therapist, admin, caregiver, patient) enable protected dashboards and actions.

Trade-off: Token lifecycle and revocation need careful handling; demo/setup still depends on a correctly configured JWT secret.

6. How the System Works

Authentication

Login → JWT issued → AuthContext stores token/role → ProtectedRoute guards pages → API requests send Bearer token → therapistAuthMiddleware validates

Session lifecycle

Therapist creates session (patient, date, type, duration)
  → Status: scheduled
  → Update attendance / notes / status (in-progress → completed | cancelled)
  → List/filter by therapist and date

Treatment plan flow

Create plan (draft) with goals + interventions
  → Activate plan
  → Update goal progress percentages and status
  → Complete or archive

7. Current Limitations

8. Repository & Demo Status

No public live deployment is currently listed. Clone and run locally using the README setup instructions.

Scope & Disclaimer

ClinicOS is an academic/software engineering project. It should not be represented as a clinically validated medical system, medical device, or evidence of production healthcare deployment.