# boscine/mediq architecture

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

- Interactive diagram: https://gitdiagram.com/boscine/mediq
- Repository: https://github.com/boscine/mediq

## Overview

MediQ is a healthcare staff portal with authentication and role-specific administration and doctor workspaces. The web routing establishes the user flow: staff sign in, then reach an authorized role area; doctors manage appointments, patients, schedules, visit history, and profiles, while administrators oversee accounts, specialties, audit logs, and settings. Session services mediate domain state and API access. The README is empty, and several pages and integrations are represented only by the tree or SOURCE INDEX, so their internal connections are omitted where not evidenced.

Main entry points: [`mediqweb/mediqweb-fe/src/app/app.routes.ts`](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/app.routes.ts) (Application routing), [`mediqweb/mediqweb-fe/src/app/core/api/supabase.service.ts`](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/supabase.service.ts) (Supabase client), [`mediqweb/mediqweb-fe/src/app/admin/admin-session.ts`](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin-session.ts) (Admin session), [`mediqweb/mediqweb-fe/src/app/doctor/doctor-session.ts`](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor-session.ts) (Doctor session)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and authentication"]
  node_routing["Application routing<br/>[app.routes.ts]"]
  node_login["Staff login<br/>[staff-login.ts]"]
  node_signup["Account signup<br/>[auth-signup.ts]"]
  node_auth["Authentication state<br/>[auth.service.ts]"]
end

subgraph group_admin["Administration"]
  node_adminroutes["Admin routing<br/>[admin.routes.ts]"]
  node_adminpages["Admin pages"]
  node_adminsession["Admin session<br/>[admin-session.ts]"]
  node_adminanalytics["Admin analytics<br/>[admin.analytics.ts]"]
  node_adminmodels["Admin models<br/>[admin.models.ts]"]
end

subgraph group_doctor["Doctor workspace"]
  node_doctorroutes["Doctor routing<br/>[doctor.routes.ts]"]
  node_doctorpages["Doctor pages"]
  node_doctorsession["Doctor session<br/>[doctor-session.ts]"]
  node_doctorschedule["Schedule editor<br/>[doctor-schedule.ts]"]
  node_doctordates["Schedule date rules<br/>[doctor.dates.ts]"]
  node_doctormodels["Doctor models<br/>[doctor.models.ts]"]
end

subgraph group_services["Shared services"]
  node_patientapi["Patient API gateway"]
  node_adminapi["Admin API gateway"]
  node_supabaseclient["Supabase client"]
  node_toastservice["Toast service<br/>[toast.service.ts]"]
end

node_staff(("Staff user"))
node_supabase[("Supabase")]

node_staff -->|"opens portal"| node_routing
node_routing -->|"routes to"| node_login
node_routing -->|"routes to"| node_signup
node_routing -->|"loads admin"| node_adminroutes
node_routing -->|"loads doctor"| node_doctorroutes
node_adminroutes -->|"loads pages"| node_adminpages
node_doctorroutes -->|"loads pages"| node_doctorpages
node_adminsession -->|"requests data"| node_adminapi
node_adminsession -->|"requests data"| node_patientapi
node_adminsession -->|"records notices"| node_toastservice
node_doctorschedule -->|"updates availability"| node_doctorsession
node_doctorschedule -->|"uses date rules"| node_doctordates
node_doctorsession -->|"requests records"| node_patientapi
node_doctorsession -->|"uses date rules"| node_doctordates
node_adminapi -.->|"uses client"| node_supabaseclient
node_patientapi -->|"uses client"| node_supabaseclient
node_auth -->|"reads auth"| node_supabaseclient
node_supabaseclient -.->|"connects"| node_supabase

click node_routing "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/app.routes.ts"
click node_login "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/auth/pages/staff-login/staff-login.ts"
click node_signup "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/auth/pages/auth-signup/auth-signup.ts"
click node_auth "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/auth.service.ts"
click node_adminroutes "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin.routes.ts"
click node_adminpages "https://github.com/boscine/mediq/tree/backend/server/mediqweb/mediqweb-fe/src/app/admin/pages"
click node_adminsession "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin-session.ts"
click node_adminanalytics "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin.analytics.ts"
click node_adminmodels "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin.models.ts"
click node_doctorroutes "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor.routes.ts"
click node_doctorpages "https://github.com/boscine/mediq/tree/backend/server/mediqweb/mediqweb-fe/src/app/doctor/pages"
click node_doctorsession "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor-session.ts"
click node_doctorschedule "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/pages/doctor-schedule/doctor-schedule.ts"
click node_doctordates "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor.dates.ts"
click node_doctormodels "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor.models.ts"
click node_patientapi "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/http-patient-gateway.ts"
click node_adminapi "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/http-admin-gateway.ts"
click node_supabaseclient "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/supabase.service.ts"
click node_toastservice "https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/services/toast.service.ts"

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_routing,node_login,node_signup,node_auth,node_staff toneBlue
class node_adminroutes,node_adminpages,node_adminsession,node_adminanalytics,node_adminmodels,node_supabase toneAmber
class node_doctorroutes,node_doctorpages,node_doctorsession,node_doctorschedule,node_doctordates,node_doctormodels toneMint
class node_patientapi,node_adminapi,node_supabaseclient,node_toastservice toneRose
```

## Components

### Entry and authentication

- [Application routing](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/app.routes.ts): `mediqweb/mediqweb-fe/src/app/app.routes.ts`
- [Staff login](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/auth/pages/staff-login/staff-login.ts): `mediqweb/mediqweb-fe/src/app/auth/pages/staff-login/staff-login.ts`
- [Account signup](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/auth/pages/auth-signup/auth-signup.ts): `mediqweb/mediqweb-fe/src/app/auth/pages/auth-signup/auth-signup.ts`
- [Authentication state](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/auth.service.ts): `mediqweb/mediqweb-fe/src/app/core/api/auth.service.ts`

### Administration

- [Admin routing](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin.routes.ts): `mediqweb/mediqweb-fe/src/app/admin/admin.routes.ts`
- [Admin pages](https://github.com/boscine/mediq/tree/backend/server/mediqweb/mediqweb-fe/src/app/admin/pages): `mediqweb/mediqweb-fe/src/app/admin/pages`
- [Admin session](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin-session.ts): `mediqweb/mediqweb-fe/src/app/admin/admin-session.ts`
- [Admin analytics](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin.analytics.ts): `mediqweb/mediqweb-fe/src/app/admin/admin.analytics.ts`
- [Admin models](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/admin/admin.models.ts): `mediqweb/mediqweb-fe/src/app/admin/admin.models.ts`

### Doctor workspace

- [Doctor routing](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor.routes.ts): `mediqweb/mediqweb-fe/src/app/doctor/doctor.routes.ts`
- [Doctor pages](https://github.com/boscine/mediq/tree/backend/server/mediqweb/mediqweb-fe/src/app/doctor/pages): `mediqweb/mediqweb-fe/src/app/doctor/pages`
- [Doctor session](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor-session.ts): `mediqweb/mediqweb-fe/src/app/doctor/doctor-session.ts`
- [Schedule editor](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/pages/doctor-schedule/doctor-schedule.ts): `mediqweb/mediqweb-fe/src/app/doctor/pages/doctor-schedule/doctor-schedule.ts`
- [Schedule date rules](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor.dates.ts): `mediqweb/mediqweb-fe/src/app/doctor/doctor.dates.ts`
- [Doctor models](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/doctor/doctor.models.ts): `mediqweb/mediqweb-fe/src/app/doctor/doctor.models.ts`

### Shared services

- [Patient API gateway](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/http-patient-gateway.ts): `mediqweb/mediqweb-fe/src/app/core/api/http-patient-gateway.ts`
- [Admin API gateway](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/http-admin-gateway.ts): `mediqweb/mediqweb-fe/src/app/core/api/http-admin-gateway.ts`
- [Supabase client](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/api/supabase.service.ts): `mediqweb/mediqweb-fe/src/app/core/api/supabase.service.ts`
- [Toast service](https://github.com/boscine/mediq/blob/backend/server/mediqweb/mediqweb-fe/src/app/core/services/toast.service.ts): `mediqweb/mediqweb-fe/src/app/core/services/toast.service.ts`

### Other components

- **Staff user**
- **Supabase**

## Connections

- Staff user → Application routing: opens portal
- Application routing → Staff login: routes to (evidence: `mediqweb/mediqweb-fe/src/app/app.routes.ts`)
- Application routing → Account signup: routes to (evidence: `mediqweb/mediqweb-fe/src/app/app.routes.ts`)
- Application routing → Admin routing: loads admin (evidence: `mediqweb/mediqweb-fe/src/app/app.routes.ts`)
- Application routing → Doctor routing: loads doctor (evidence: `mediqweb/mediqweb-fe/src/app/app.routes.ts`)
- Admin routing → Admin pages: loads pages (evidence: `mediqweb/mediqweb-fe/src/app/admin/admin.routes.ts`)
- Doctor routing → Doctor pages: loads pages (evidence: `mediqweb/mediqweb-fe/src/app/doctor/doctor.routes.ts`)
- Admin session → Admin API gateway: requests data (evidence: `mediqweb/mediqweb-fe/src/app/admin/admin-session.ts`)
- Admin session → Patient API gateway: requests data (evidence: `mediqweb/mediqweb-fe/src/app/admin/admin-session.ts`)
- Admin session → Toast service: records notices (evidence: `mediqweb/mediqweb-fe/src/app/admin/admin-session.ts`)
- Schedule editor → Doctor session: updates availability (evidence: `mediqweb/mediqweb-fe/src/app/doctor/pages/doctor-schedule/doctor-schedule.ts`)
- Schedule editor → Schedule date rules: uses date rules (evidence: `mediqweb/mediqweb-fe/src/app/doctor/pages/doctor-schedule/doctor-schedule.ts`)
- Doctor session → Patient API gateway: requests records (evidence: `mediqweb/mediqweb-fe/src/app/doctor/doctor-session.ts`)
- Doctor session → Schedule date rules: uses date rules (evidence: `mediqweb/mediqweb-fe/src/app/doctor/doctor-session.ts`)
- Admin API gateway → Supabase client: uses client
- Patient API gateway → Supabase client: uses client (evidence: `mediqweb/mediqweb-fe/src/app/core/api/http-patient-gateway.ts`)
- Authentication state → Supabase client: reads auth (evidence: `mediqweb/mediqweb-fe/src/app/core/api/auth.service.ts`)
- Supabase client → Supabase: connects
