# sosukeaizen11/mediconnect architecture

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

- Interactive diagram: https://gitdiagram.com/sosukeaizen11/mediconnect
- Repository: https://github.com/sosukeaizen11/mediconnect

## Overview

MediConnect is a role-based healthcare platform for patients, doctors, and clinic administrators. Patients find clinics, book appointments or join token queues, and access records and consultation history; doctors manage availability and queues and record consultations; administrators approve clinics and manage users. The sampled source shows the Express route mounting and parts of scheduling, queue, and clinical flows. Other major capabilities are represented from the route and page tree; their internal wiring is not inferred where source was not sampled.

Main entry points: [`server/src/app.js`](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/app.js) (Express application), [`server/src/modules/queue/controllers/token.controller.js`](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/controllers/token.controller.js) (Token handling), [`server/src/modules/scheduling/controllers/appointment.controller.js`](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/controllers/appointment.controller.js) (Appointment handling), [`server/src/modules/queue/routes/token.routes.js`](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/routes/token.routes.js) (Queue routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_web["Role-based pages<br/>[AppRoutes.jsx]"]
  node_clientapi["API modules<br/>[apiClient.js]"]
end

subgraph group_core["Scheduling and care"]
  node_schedule_routes["Scheduling routes"]
  node_schedule_controller["Appointment handling"]
  node_schedule_service["Scheduling services"]
  node_schedule_repo["Appointment repository"]
  node_appointment_model[("Appointment records")]
  node_availability["Availability and slots"]
  node_queue_routes["Queue routes<br/>[token.routes.js]"]
  node_queue_controller["Token handling"]
  node_queue_service["Queue services<br/>[token.service.js]"]
  node_token_repo["Token repository"]
  node_token_model[("Token records<br/>[token.model.js]")]
  node_clinical["Consultation services"]
  node_clinical_model[("Consultation records")]
end

subgraph group_platform["Platform services"]
  node_app["Express application<br/>[app.js]"]
  node_clinic["Clinic and doctor services<br/>[clinic.service.js]"]
  node_auth["Authentication<br/>[auth.controller.js]"]
  node_admin["Clinic and user admin"]
end

subgraph group_insights["Content and insights"]
  node_reports["Medical reports"]
  node_ai["AI health features"]
  node_receptionist["AI receptionist"]
  node_posts["Doctor posts<br/>[post.controller.js]"]
end

node_people(("Patients and staff"))
node_database[("MongoDB")]

node_people -->|"use"| node_web
node_web -->|"request via"| node_clientapi
node_clientapi -->|"HTTP API"| node_app
node_app -->|"mounts"| node_schedule_routes
node_app -->|"mounts"| node_queue_routes
node_schedule_routes -->|"dispatches"| node_schedule_controller
node_schedule_controller -->|"calls"| node_schedule_service
node_schedule_service -->|"uses"| node_schedule_repo
node_schedule_repo -->|"reads and writes"| node_appointment_model
node_schedule_controller -->|"uses"| node_availability
node_app -->|"mounts"| node_queue_routes
node_queue_routes -->|"dispatches"| node_queue_controller
node_queue_controller -->|"calls"| node_queue_service
node_queue_service -->|"uses"| node_token_repo
node_token_repo -->|"reads and writes"| node_token_model
node_queue_controller -->|"requests care data"| node_clinical
node_clinical -->|"reads and writes"| node_clinical_model
node_app -->|"mounts auth routes"| node_auth
node_app -->|"mounts clinic routes"| node_clinic
node_app -->|"mounts admin routes"| node_admin
node_app -->|"mounts report routes"| node_reports
node_app -->|"mounts insights routes"| node_ai
node_app -->|"mounts receptionist routes"| node_receptionist
node_app -->|"mounts post routes"| node_posts
node_admin -->|"queries"| node_database
node_queue_controller -->|"validates clinic"| node_database

click node_web "https://github.com/sosukeaizen11/mediconnect/blob/main/client/src/routes/AppRoutes.jsx"
click node_clientapi "https://github.com/sosukeaizen11/mediconnect/blob/main/client/src/api/apiClient.js"
click node_app "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/app.js"
click node_schedule_routes "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/routes/appointment.routes.js"
click node_schedule_controller "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/controllers/appointment.controller.js"
click node_schedule_service "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/services/appointment.service.js"
click node_schedule_repo "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/repositories/appointment.repository.js"
click node_appointment_model "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/models/appointment.model.js"
click node_availability "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/services/doctorAvailability.service.js"
click node_queue_routes "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/routes/token.routes.js"
click node_queue_controller "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/controllers/token.controller.js"
click node_queue_service "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/services/token.service.js"
click node_token_repo "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/repositories/token.repository.js"
click node_token_model "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/models/token.model.js"
click node_clinical "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/clinical/services/consultation.service.js"
click node_clinical_model "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/clinical/models/consultation.model.js"
click node_clinic "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/services/clinic.service.js"
click node_auth "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/auth.controller.js"
click node_admin "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/admin.controller.js"
click node_reports "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/report.controller.js"
click node_ai "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/aiInsights.controller.js"
click node_receptionist "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/aiReceptionist.controller.js"
click node_posts "https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/post.controller.js"

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_web,node_clientapi toneBlue
class node_schedule_routes,node_schedule_controller,node_schedule_service,node_schedule_repo,node_appointment_model,node_availability,node_queue_routes,node_queue_controller,node_queue_service,node_token_repo,node_token_model,node_clinical,node_clinical_model,node_database toneAmber
class node_app,node_clinic,node_auth,node_admin toneMint
class node_reports,node_ai,node_receptionist,node_posts toneRose
class node_people toneIndigo
```

## Components

### Web application

- [Role-based pages](https://github.com/sosukeaizen11/mediconnect/blob/main/client/src/routes/AppRoutes.jsx): `client/src/routes/AppRoutes.jsx`
- [API modules](https://github.com/sosukeaizen11/mediconnect/blob/main/client/src/api/apiClient.js): `client/src/api/apiClient.js`

### Scheduling and care

- [Scheduling routes](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/routes/appointment.routes.js): `server/src/modules/scheduling/routes/appointment.routes.js`
- [Appointment handling](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/controllers/appointment.controller.js): `server/src/modules/scheduling/controllers/appointment.controller.js`
- [Scheduling services](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/services/appointment.service.js): `server/src/modules/scheduling/services/appointment.service.js`
- [Appointment repository](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/repositories/appointment.repository.js): `server/src/modules/scheduling/repositories/appointment.repository.js`
- [Appointment records](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/models/appointment.model.js): `server/src/modules/scheduling/models/appointment.model.js`
- [Availability and slots](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/scheduling/services/doctorAvailability.service.js): `server/src/modules/scheduling/services/doctorAvailability.service.js`
- [Queue routes](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/routes/token.routes.js): `server/src/modules/queue/routes/token.routes.js`
- [Token handling](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/controllers/token.controller.js): `server/src/modules/queue/controllers/token.controller.js`
- [Queue services](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/services/token.service.js): `server/src/modules/queue/services/token.service.js`
- [Token repository](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/repositories/token.repository.js): `server/src/modules/queue/repositories/token.repository.js`
- [Token records](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/queue/models/token.model.js): `server/src/modules/queue/models/token.model.js`
- [Consultation services](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/clinical/services/consultation.service.js): `server/src/modules/clinical/services/consultation.service.js`
- [Consultation records](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/modules/clinical/models/consultation.model.js): `server/src/modules/clinical/models/consultation.model.js`

### Platform services

- [Express application](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/app.js): `server/src/app.js`
- [Clinic and doctor services](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/services/clinic.service.js): `server/src/services/clinic.service.js`
- [Authentication](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/auth.controller.js): `server/src/controllers/auth.controller.js`
- [Clinic and user admin](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/admin.controller.js): `server/src/controllers/admin.controller.js`

### Content and insights

- [Medical reports](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/report.controller.js): `server/src/controllers/report.controller.js`
- [AI health features](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/aiInsights.controller.js): `server/src/controllers/aiInsights.controller.js`
- [AI receptionist](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/aiReceptionist.controller.js): `server/src/controllers/aiReceptionist.controller.js`
- [Doctor posts](https://github.com/sosukeaizen11/mediconnect/blob/main/server/src/controllers/post.controller.js): `server/src/controllers/post.controller.js`

### Other components

- **Patients and staff**
- **MongoDB**

## Connections

- Patients and staff → Role-based pages: use
- Role-based pages → API modules: request via
- API modules → Express application: HTTP API
- Express application → Scheduling routes: mounts
- Express application → Queue routes: mounts
- Scheduling routes → Appointment handling: dispatches
- Appointment handling → Scheduling services: calls
- Scheduling services → Appointment repository: uses
- Appointment repository → Appointment records: reads and writes
- Appointment handling → Availability and slots: uses
- Express application → Queue routes: mounts
- Queue routes → Token handling: dispatches
- Token handling → Queue services: calls
- Queue services → Token repository: uses
- Token repository → Token records: reads and writes
- Token handling → Consultation services: requests care data
- Consultation services → Consultation records: reads and writes
- Express application → Authentication: mounts auth routes
- Express application → Clinic and doctor services: mounts clinic routes
- Express application → Clinic and user admin: mounts admin routes
- Express application → Medical reports: mounts report routes
- Express application → AI health features: mounts insights routes
- Express application → AI receptionist: mounts receptionist routes
- Express application → Doctor posts: mounts post routes
- Clinic and user admin → MongoDB: queries
- Token handling → MongoDB: validates clinic
