# tmasaiti/pharmassist architecture

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

- Interactive diagram: https://gitdiagram.com/tmasaiti/pharmassist
- Repository: https://github.com/tmasaiti/pharmassist

## Overview

This is a pharmacy and dispensary operations application with inventory, prescribing/dispensing, retail sales, registers, reporting, and organization/user administration. The principal workflow is a staff member using the web client to perform an operational task; the client communicates with the Express API, whose routes invoke domain services and persistent storage. Separate policy engines support permissions, password rules, audit policies, and user settings. The README is empty, and several client pages and server modules were not sampled; those areas are represented at their existing directory or module paths, with only evidenced connections shown.

Main entry points: [`server/routes.ts`](https://github.com/tmasaiti/pharmassist/blob/master/server/routes.ts) (API routes), [`server/libs/enterprise-api.ts`](https://github.com/tmasaiti/pharmassist/blob/master/server/libs/enterprise-api.ts) (Enterprise endpoints), [`server/libs/users-api.ts`](https://github.com/tmasaiti/pharmassist/blob/master/server/libs/users-api.ts) (User and role endpoints), [`client/src/lib/RPEE/engine.ts`](https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/RPEE/engine.ts) (Permission client engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_web["Application shell<br/>[App.tsx]"]
  node_client_api["API client<br/>[queryClient.ts]"]
end

subgraph group_api["API and services"]
  node_api_app["Express application<br/>[app.ts]"]
  node_routes["API routes<br/>[routes.ts]"]
  node_enterprise_api["Enterprise endpoints<br/>[enterprise-api.ts]"]
  node_org_api["Organization endpoints<br/>[org-api.ts]"]
  node_setup_api["Business setup"]
end

subgraph group_operations["Pharmacy operations"]
  node_dispensary["Dispensing workflows"]
  node_inventory["Inventory management"]
  node_patients["Patient and prescription UI"]
  node_registers["Controlled-drug registers"]
  node_retail_engine["Retail dispensing rules<br/>[retailEngine.ts]"]
  node_business_models["Business-model rules"]
  node_dfe["Dispensing rules<br/>[dfe.ts]"]
end

subgraph group_governance["Administration and policy"]
  node_users_api["User and role endpoints<br/>[users-api.ts]"]
  node_rpee_server["Permission enforcement<br/>[rpee.ts]"]
  node_ppee_server["Password policy<br/>[ppee.ts]"]
  node_atpe_server["Audit policy<br/>[atpe.ts]"]
  node_umse_server["User settings<br/>[umse.ts]"]
  node_rpee_client["Permission client engine<br/>[engine.ts]"]
  node_ppee_client["Password validator<br/>[engine.ts]"]
  node_atpe_client["Audit validator<br/>[engine.ts]"]
  node_umse_client["Settings validator<br/>[engine.ts]"]
end

subgraph group_data["Persistence and models"]
  node_storage[("Operational storage<br/>[storage.ts]")]
  node_schema["Core data schema<br/>[schema.ts]"]
  node_register_schema["Register schema"]
end

node_staff(("Pharmacy staff"))

node_staff -->|"uses"| node_web
node_web -->|"uses"| node_client_api
node_client_api -.->|"sends requests"| node_api_app
node_api_app -->|"configures routes"| node_routes
node_routes -->|"reads and writes"| node_storage
node_routes -->|"registers"| node_enterprise_api
node_routes -->|"registers"| node_org_api
node_routes -->|"registers"| node_setup_api
node_routes -->|"registers"| node_users_api
node_routes -->|"registers"| node_rpee_server
node_routes -->|"registers"| node_ppee_server
node_routes -->|"registers"| node_atpe_server
node_routes -->|"registers"| node_umse_server
node_routes -->|"uses"| node_dfe
node_enterprise_api -->|"reads and writes"| node_storage
node_enterprise_api -->|"uses rules"| node_business_models
node_users_api -->|"reads and writes"| node_storage
node_users_api -->|"checks permission"| node_rpee_server
node_setup_api -->|"uses rules"| node_business_models
node_rpee_client -->|"requests checks"| node_rpee_server
node_rpee_client -->|"caches results"| node_rpee_client

click node_web "https://github.com/tmasaiti/pharmassist/blob/master/client/src/App.tsx"
click node_client_api "https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/queryClient.ts"
click node_dispensary "https://github.com/tmasaiti/pharmassist/tree/master/client/src/pages/Dispensary"
click node_inventory "https://github.com/tmasaiti/pharmassist/tree/master/client/src/pages/Inventory"
click node_patients "https://github.com/tmasaiti/pharmassist/tree/master/client/src/pages"
click node_registers "https://github.com/tmasaiti/pharmassist/tree/master/client/src/pages"
click node_retail_engine "https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/DFE/retailEngine.ts"
click node_api_app "https://github.com/tmasaiti/pharmassist/blob/master/server/app.ts"
click node_routes "https://github.com/tmasaiti/pharmassist/blob/master/server/routes.ts"
click node_enterprise_api "https://github.com/tmasaiti/pharmassist/blob/master/server/libs/enterprise-api.ts"
click node_org_api "https://github.com/tmasaiti/pharmassist/blob/master/server/libs/org-api.ts"
click node_setup_api "https://github.com/tmasaiti/pharmassist/blob/master/server/libs/business-setup-api.ts"
click node_users_api "https://github.com/tmasaiti/pharmassist/blob/master/server/libs/users-api.ts"
click node_business_models "https://github.com/tmasaiti/pharmassist/tree/master/server/libs/business-models"
click node_rpee_server "https://github.com/tmasaiti/pharmassist/blob/master/server/rpee.ts"
click node_ppee_server "https://github.com/tmasaiti/pharmassist/blob/master/server/ppee.ts"
click node_atpe_server "https://github.com/tmasaiti/pharmassist/blob/master/server/atpe.ts"
click node_umse_server "https://github.com/tmasaiti/pharmassist/blob/master/server/umse.ts"
click node_rpee_client "https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/RPEE/engine.ts"
click node_ppee_client "https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/PPEE/engine.ts"
click node_atpe_client "https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/ATPE/engine.ts"
click node_umse_client "https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/UMSE/engine.ts"
click node_dfe "https://github.com/tmasaiti/pharmassist/blob/master/server/dfe.ts"
click node_storage "https://github.com/tmasaiti/pharmassist/blob/master/server/storage.ts"
click node_schema "https://github.com/tmasaiti/pharmassist/blob/master/shared/schema.ts"
click node_register_schema "https://github.com/tmasaiti/pharmassist/blob/master/shared/schema-registers.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_web,node_client_api toneBlue
class node_api_app,node_routes,node_enterprise_api,node_org_api,node_setup_api toneAmber
class node_dispensary,node_inventory,node_patients,node_registers,node_retail_engine,node_business_models,node_dfe toneMint
class node_users_api,node_rpee_server,node_ppee_server,node_atpe_server,node_umse_server,node_rpee_client,node_ppee_client,node_atpe_client,node_umse_client toneRose
class node_storage,node_schema,node_register_schema,node_staff toneIndigo
```

## Components

### Web application

- [Application shell](https://github.com/tmasaiti/pharmassist/blob/master/client/src/App.tsx): `client/src/App.tsx`
- [API client](https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/queryClient.ts): `client/src/lib/queryClient.ts`

### API and services

- [Express application](https://github.com/tmasaiti/pharmassist/blob/master/server/app.ts): `server/app.ts`
- [API routes](https://github.com/tmasaiti/pharmassist/blob/master/server/routes.ts): `server/routes.ts`
- [Enterprise endpoints](https://github.com/tmasaiti/pharmassist/blob/master/server/libs/enterprise-api.ts): `server/libs/enterprise-api.ts`
- [Organization endpoints](https://github.com/tmasaiti/pharmassist/blob/master/server/libs/org-api.ts): `server/libs/org-api.ts`
- [Business setup](https://github.com/tmasaiti/pharmassist/blob/master/server/libs/business-setup-api.ts): `server/libs/business-setup-api.ts`

### Pharmacy operations

- [Dispensing workflows](https://github.com/tmasaiti/pharmassist/tree/master/client/src/pages/Dispensary): `client/src/pages/Dispensary`
- [Inventory management](https://github.com/tmasaiti/pharmassist/tree/master/client/src/pages/Inventory): `client/src/pages/Inventory`
- [Patient and prescription UI](https://github.com/tmasaiti/pharmassist/tree/master/client/src/pages): `client/src/pages`
- [Controlled-drug registers](https://github.com/tmasaiti/pharmassist/tree/master/client/src/pages): `client/src/pages`
- [Retail dispensing rules](https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/DFE/retailEngine.ts): `client/src/lib/DFE/retailEngine.ts`
- [Business-model rules](https://github.com/tmasaiti/pharmassist/tree/master/server/libs/business-models): `server/libs/business-models`
- [Dispensing rules](https://github.com/tmasaiti/pharmassist/blob/master/server/dfe.ts): `server/dfe.ts`

### Administration and policy

- [User and role endpoints](https://github.com/tmasaiti/pharmassist/blob/master/server/libs/users-api.ts): `server/libs/users-api.ts`
- [Permission enforcement](https://github.com/tmasaiti/pharmassist/blob/master/server/rpee.ts): `server/rpee.ts`
- [Password policy](https://github.com/tmasaiti/pharmassist/blob/master/server/ppee.ts): `server/ppee.ts`
- [Audit policy](https://github.com/tmasaiti/pharmassist/blob/master/server/atpe.ts): `server/atpe.ts`
- [User settings](https://github.com/tmasaiti/pharmassist/blob/master/server/umse.ts): `server/umse.ts`
- [Permission client engine](https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/RPEE/engine.ts): `client/src/lib/RPEE/engine.ts`
- [Password validator](https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/PPEE/engine.ts): `client/src/lib/PPEE/engine.ts`
- [Audit validator](https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/ATPE/engine.ts): `client/src/lib/ATPE/engine.ts`
- [Settings validator](https://github.com/tmasaiti/pharmassist/blob/master/client/src/lib/UMSE/engine.ts): `client/src/lib/UMSE/engine.ts`

### Persistence and models

- [Operational storage](https://github.com/tmasaiti/pharmassist/blob/master/server/storage.ts): `server/storage.ts`
- [Core data schema](https://github.com/tmasaiti/pharmassist/blob/master/shared/schema.ts): `shared/schema.ts`
- [Register schema](https://github.com/tmasaiti/pharmassist/blob/master/shared/schema-registers.ts): `shared/schema-registers.ts`

### Other components

- **Pharmacy staff**

## Connections

- Pharmacy staff → Application shell: uses
- Application shell → API client: uses (evidence: `client/src/App.tsx`)
- API client → Express application: sends requests (evidence: `client/src/lib/queryClient.ts`)
- Express application → API routes: configures routes (evidence: `server/app.ts`)
- API routes → Operational storage: reads and writes (evidence: `server/routes.ts`)
- API routes → Enterprise endpoints: registers (evidence: `server/routes.ts`)
- API routes → Organization endpoints: registers (evidence: `server/routes.ts`)
- API routes → Business setup: registers (evidence: `server/routes.ts`)
- API routes → User and role endpoints: registers (evidence: `server/routes.ts`)
- API routes → Permission enforcement: registers (evidence: `server/routes.ts`)
- API routes → Password policy: registers (evidence: `server/routes.ts`)
- API routes → Audit policy: registers (evidence: `server/routes.ts`)
- API routes → User settings: registers (evidence: `server/routes.ts`)
- API routes → Dispensing rules: uses (evidence: `server/routes.ts`)
- Enterprise endpoints → Operational storage: reads and writes (evidence: `server/libs/enterprise-api.ts`)
- Enterprise endpoints → Business-model rules: uses rules (evidence: `server/libs/enterprise-api.ts`)
- User and role endpoints → Operational storage: reads and writes (evidence: `server/libs/users-api.ts`)
- User and role endpoints → Permission enforcement: checks permission (evidence: `server/libs/users-api.ts`)
- Business setup → Business-model rules: uses rules (evidence: `server/libs/business-setup-api.ts`)
- Permission client engine → Permission enforcement: requests checks (evidence: `client/src/lib/RPEE/engine.ts`)
- Permission client engine → Permission client engine: caches results (evidence: `client/src/lib/RPEE/engine.ts`)
