# sanjay-it008/hospital- architecture

> Architecture diagram of the GitHub repository sanjay-it008/hospital-, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sanjay-it008/hospital-
- Repository: https://github.com/sanjay-it008/hospital-

## Overview

#### Purpose and Entry Points
This is a hospital-management system split into a Java backend and a JavaScript frontend. The backend entry point is `hospital-backend/src/main/java/com/hospital/HospitalApplication.java`; its runtime settings are in `hospital-backend/src/main/resources/application.properties`. The frontend bootstraps from `hospital-frontend/src/index.js` into `hospital-frontend/src/App.js`.

#### Backend API Layer
HTTP-facing resources are separated by domain and authentication:
- `hospital-backend/src/main/java/com/hospital/controller/AuthController.java`
- `hospital-backend/src/main/java/com/hospital/controller/AppointmentController.java`
- `hospital-backend/src/main/java/com/hospital/controller/DoctorController.java`
- `hospital-backend/src/main/java/com/hospital/controller/PatientController.java`

Controllers form the backend boundary for login/registration and patient, doctor, and appointment operations, delegating domain work rather than directly representing the persistence layer.

#### Domain and Persistence
The central persisted entities are users, patients, doctors, and appointments:
- `hospital-backend/src/main/java/com/hospital/model/User.java`
- `hospital-backend/src/main/java/com/hospital/model/Patient.java`
- `hospital-backend/src/main/java/com/hospital/model/Doctor.java`
- `hospital-backend/src/main/java/com/hospital/model/Appointment.java`

Repository interfaces isolate data access per entity, including `hospital-backend/src/main/java/com/hospital/repository/AppointmentRepository.java` and `hospital-backend/src/main/java/com/hospital/repository/UserRepository.java`. Service classes are the intended business-logic boundary between controllers and repositories, notably `hospital-backend/src/main/java/com/hospital/service/AppointmentService.java` and `hospital-backend/src/main/java/com/hospital/service/AuthService.java`.

#### Authentication and Request Security
JWT-based authentication is a defining cross-cutting backend flow. `hospital-backend/src/main/java/com/hospital/security/JwtFilter.java` likely intercepts incoming requests, while `hospital-backend/src/main/java/com/hospital/security/JwtUtil.java` creates or validates tokens. Security policy and cross-origin access are centralized in:
- `hospital-backend/src/main/java/com/hospital/config/SecurityConfig.java`
- `hospital-backend/src/main/java/com/hospital/config/CorsConfig.java`

The primary protected-request flow is frontend API call → CORS/security chain → JWT filter → controller → service → repository.

#### Frontend Application and Role Workspaces
The frontend is a single-page application organized around user journeys and role-specific views. Shared application state includes authentication and toast/notification concerns:
- `hospital-frontend/src/context/AuthContext.js`
- `hospital-frontend/src/context/ToastContext.js`
- `hospital-frontend/src/components/Layout.jsx`

Main workflows are represented by `hospital-frontend/src/pages/Login.jsx`, `hospital-frontend/src/pages/Register.jsx`, `hospital-frontend/src/pages/BookAppointment.jsx`, `hospital-frontend/src/pages/PatientDashboard.jsx`, `hospital-frontend/src/pages/DoctorDashboard.jsx`, and `hospital-frontend/src/pages/AdminPanel.jsx`. `hospital-frontend/src/components/AppointmentCard.jsx` is a reusable appointment presentation unit.

#### Client Data Boundaries and External Services
`hospital-frontend/src/services/api.js` is the likely HTTP boundary to the Java backend and should be the primary location for token attachment, request normalization, and backend URL handling. The frontend also contains alternate or supplemental client-side data integrations:
- `hospital-frontend/src/services/localDB.js`
- `hospital-frontend/src/services/supabaseDB.js`
- `hospital-frontend/src/supabaseClient.js`

Supabase is therefore an external service dependency present in the client architecture. Its relationship to the backend persistence layer is not determinable from the tree and should be clarified before treating either backend repositories or Supabase as the sole system of record.

#### Runtime and Delivery Boundaries
The backend is Maven-based (`hospital-backend/pom.xml`) and structured as a Java application with conventional controller/service/repository layers. The frontend is a separate Node-managed build (`hospital-frontend/package.json`) with Tailwind/PostCSS styling configuration. They can be deployed independently, with browser traffic crossing from the frontend runtime to the backend API and potentially to Supabase.

Main entry points: [`hospital-frontend/src/pages/Login.jsx`](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/pages/Login.jsx) (Role workflows), [`hospital-frontend/src/App.js`](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/App.js) (Application shell), [`hospital-backend/src/main/java/com/hospital/security/JwtFilter.java`](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/security/JwtFilter.java) (JWT filter), [`hospital-backend/src/main/java/com/hospital/service/AuthService.java`](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/service/AuthService.java) (Auth & appointment services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend SPA"]
  node_frontend_boot["Frontend bootstrap<br/>React entry<br/>[index.js]"]
  node_app["Application shell<br/>React app<br/>[App.js]"]
  node_client_state["Auth, toasts &amp; layout<br/>shared UI state<br/>[AuthContext.js]"]
  node_role_workflows["Role workflows<br/>pages<br/>[Login.jsx]"]
  node_appointment_card["Appointment card<br/>UI component"]
  node_api_client{{"Backend API client<br/>HTTP boundary<br/>[api.js]"}}
  node_local_data["Local data adapter<br/>client data<br/>[localDB.js]"]
  node_supabase_adapter["Supabase adapter<br/>client data<br/>[supabaseDB.js]"]
end

subgraph group_backend["Java Backend"]
  node_backend_app["Hospital application<br/>Spring Boot entry"]
  node_security{{"Security &amp; CORS chain<br/>request policy"}}
  node_jwt_filter["JWT filter<br/>request filter<br/>[JwtFilter.java]"]
  node_jwt_util["JWT utility<br/>token service<br/>[JwtUtil.java]"]
  node_controllers["Domain API controllers<br/>REST controllers"]
  node_services["Auth &amp; appointment services<br/>business layer<br/>[AuthService.java]"]
  node_repositories["Entity repositories<br/>data access"]
  node_entities["Hospital entities<br/>domain model<br/>[User.java]"]
end

subgraph group_external["External Data"]
  node_supabase[("Supabase<br/>external service")]
end

node_frontend_boot -->|"mounts"| node_app
node_app -->|"provides"| node_client_state
node_app -->|"routes to"| node_role_workflows
node_role_workflows -->|"renders"| node_appointment_card
node_role_workflows -->|"API requests"| node_api_client
node_role_workflows -.->|"may use"| node_local_data
node_role_workflows -.->|"may use"| node_supabase_adapter
node_supabase_adapter -->|"connects to"| node_supabase
node_api_client -->|"HTTP with token"| node_security
node_backend_app -->|"configures"| node_security
node_security -->|"protected requests"| node_jwt_filter
node_jwt_filter -->|"validates token"| node_jwt_util
node_jwt_filter -->|"authorized request"| node_controllers
node_controllers -->|"delegates"| node_services
node_services -->|"issues tokens"| node_jwt_util
node_services -->|"reads and writes"| node_repositories
node_repositories -->|"persists"| node_entities
node_supabase -.->|"system-of-record relationship unknown"| node_repositories

click node_frontend_boot "https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/index.js"
click node_app "https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/App.js"
click node_client_state "https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/context/AuthContext.js"
click node_role_workflows "https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/pages/Login.jsx"
click node_appointment_card "https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/components/AppointmentCard.jsx"
click node_api_client "https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/services/api.js"
click node_local_data "https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/services/localDB.js"
click node_supabase_adapter "https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/services/supabaseDB.js"
click node_backend_app "https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/HospitalApplication.java"
click node_security "https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/config/SecurityConfig.java"
click node_jwt_filter "https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/security/JwtFilter.java"
click node_jwt_util "https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/security/JwtUtil.java"
click node_controllers "https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/controller/AuthController.java"
click node_services "https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/service/AuthService.java"
click node_repositories "https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/repository/UserRepository.java"
click node_entities "https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/model/User.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_frontend_boot,node_app,node_client_state,node_role_workflows,node_appointment_card,node_api_client,node_local_data,node_supabase_adapter toneBlue
class node_backend_app,node_security,node_jwt_filter,node_jwt_util,node_controllers,node_services,node_repositories,node_entities toneAmber
class node_supabase toneMint
```

## Components

### Frontend SPA

- [Frontend bootstrap](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/index.js): React entry · `hospital-frontend/src/index.js`
- [Application shell](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/App.js): React app · `hospital-frontend/src/App.js`
- [Auth, toasts & layout](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/context/AuthContext.js): shared UI state · `hospital-frontend/src/context/AuthContext.js`
- [Role workflows](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/pages/Login.jsx): pages · Login, registration, booking, and role dashboards. · `hospital-frontend/src/pages/Login.jsx`
- [Appointment card](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/components/AppointmentCard.jsx): UI component · `hospital-frontend/src/components/AppointmentCard.jsx`
- [Backend API client](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/services/api.js): HTTP boundary · Normalizes requests and attaches tokens. · `hospital-frontend/src/services/api.js`
- [Local data adapter](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/services/localDB.js): client data · `hospital-frontend/src/services/localDB.js`
- [Supabase adapter](https://github.com/sanjay-it008/hospital-/blob/main/hospital-frontend/src/services/supabaseDB.js): client data · `hospital-frontend/src/services/supabaseDB.js`

### Java Backend

- [Hospital application](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/HospitalApplication.java): Spring Boot entry · `hospital-backend/src/main/java/com/hospital/HospitalApplication.java`
- [Security & CORS chain](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/config/SecurityConfig.java): request policy · Applies CORS and protected-route policy. · `hospital-backend/src/main/java/com/hospital/config/SecurityConfig.java`
- [JWT filter](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/security/JwtFilter.java): request filter · `hospital-backend/src/main/java/com/hospital/security/JwtFilter.java`
- [JWT utility](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/security/JwtUtil.java): token service · `hospital-backend/src/main/java/com/hospital/security/JwtUtil.java`
- [Domain API controllers](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/controller/AuthController.java): REST controllers · Auth, patient, doctor, and appointment endpoints. · `hospital-backend/src/main/java/com/hospital/controller/AuthController.java`
- [Auth & appointment services](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/service/AuthService.java): business layer · `hospital-backend/src/main/java/com/hospital/service/AuthService.java`
- [Entity repositories](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/repository/UserRepository.java): data access · User and appointment repository interfaces. · `hospital-backend/src/main/java/com/hospital/repository/UserRepository.java`
- [Hospital entities](https://github.com/sanjay-it008/hospital-/blob/main/hospital-backend/src/main/java/com/hospital/model/User.java): domain model · Users, patients, doctors, and appointments. · `hospital-backend/src/main/java/com/hospital/model/User.java`

### External Data

- **Supabase**: external service · Client-side supplemental data integration.

## Connections

- Frontend bootstrap → Application shell: mounts
- Application shell → Auth, toasts & layout: provides
- Application shell → Role workflows: routes to
- Role workflows → Appointment card: renders
- Role workflows → Backend API client: API requests
- Role workflows → Local data adapter: may use
- Role workflows → Supabase adapter: may use
- Supabase adapter → Supabase: connects to
- Backend API client → Security & CORS chain: HTTP with token
- Hospital application → Security & CORS chain: configures
- Security & CORS chain → JWT filter: protected requests
- JWT filter → JWT utility: validates token
- JWT filter → Domain API controllers: authorized request
- Domain API controllers → Auth & appointment services: delegates
- Auth & appointment services → JWT utility: issues tokens
- Auth & appointment services → Entity repositories: reads and writes
- Entity repositories → Hospital entities: persists
- Supabase → Entity repositories: system-of-record relationship unknown
