# coleleep/mytestscim architecture

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

- Interactive diagram: https://gitdiagram.com/coleleep/mytestscim
- Repository: https://github.com/coleleep/mytestscim

## Overview

This is a SCIM 2.0 provisioning server with an authenticated web UI. An identity provider sends user and group operations to the SCIM API; the server authenticates and dispatches them to resource handlers, which persist data in PostgreSQL. The UI uses Okta OIDC login and reads provisioned users and groups from that store. The server also exposes SCIM capability metadata and OAuth token flows. Relationships are based on the README and shown excerpts; unsampled authentication setup and route details are not expanded beyond documented behavior.

Main entry points: [`server.js`](https://github.com/coleleep/mytestscim/blob/main/server.js) (SCIM entry and dispatch), [`routes/users.js`](https://github.com/coleleep/mytestscim/blob/main/routes/users.js) (User provisioning), [`routes/groups.js`](https://github.com/coleleep/mytestscim/blob/main/routes/groups.js) (Group provisioning), [`views/users.ejs`](https://github.com/coleleep/mytestscim/blob/main/views/users.ejs) (Users page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["SCIM API"]
  node_scim["SCIM entry and dispatch<br/>[server.js]"]
  node_scim_auth["SCIM authentication<br/>[server.js]"]
  node_users["User provisioning<br/>[users.js]"]
  node_groups["Group provisioning<br/>[groups.js]"]
  node_capabilities["SCIM metadata<br/>[server.js]"]
end

subgraph group_identity["Identity and OAuth"]
  node_oidc["Okta OIDC login<br/>[server.js]"]
  node_oauth["OAuth authorization and tokens<br/>[server.js]"]
end

subgraph group_storage["PostgreSQL storage"]
  node_database[("PostgreSQL data<br/>[server.js]")]
end

subgraph group_ui["Web UI"]
  node_ui_users["User data view<br/>[server.js]"]
  node_ui_groups["Group data view<br/>[server.js]"]
  node_users_template["Users page<br/>[users.ejs]"]
  node_groups_template["Groups page<br/>[groups.ejs]"]
  node_login_template["Login page<br/>[login.ejs]"]
  node_consent_template["Consent page<br/>[consent.ejs]"]
end

node_idp(("Identity provider"))
node_ui_actor(("UI visitor"))
node_okta["Okta identity service"]
node_oauth_client(("SCIM OAuth client"))

node_idp -->|"sends SCIM"| node_scim
node_scim -->|"authenticates"| node_scim_auth
node_scim -->|"routes users"| node_users
node_scim -->|"routes groups"| node_groups
node_scim -->|"serves metadata"| node_capabilities
node_scim -->|"initializes tables"| node_database
node_users -->|"reads and writes"| node_database
node_groups -->|"reads and writes"| node_database
node_ui_actor -->|"signs in"| node_oidc
node_oidc -->|"authenticates with"| node_okta
node_ui_actor -->|"opens UI"| node_ui_users
node_ui_actor -->|"opens UI"| node_ui_groups
node_ui_users -->|"reads users"| node_database
node_ui_groups -->|"reads groups"| node_database
node_ui_users -->|"renders"| node_users_template
node_ui_groups -->|"renders"| node_groups_template
node_ui_actor -->|"requests login"| node_login_template
node_oauth_client -->|"requests token"| node_oauth
node_oauth -->|"renders consent"| node_consent_template

click node_scim "https://github.com/coleleep/mytestscim/blob/main/server.js"
click node_scim_auth "https://github.com/coleleep/mytestscim/blob/main/server.js"
click node_users "https://github.com/coleleep/mytestscim/blob/main/routes/users.js"
click node_groups "https://github.com/coleleep/mytestscim/blob/main/routes/groups.js"
click node_capabilities "https://github.com/coleleep/mytestscim/blob/main/server.js"
click node_database "https://github.com/coleleep/mytestscim/blob/main/server.js"
click node_oidc "https://github.com/coleleep/mytestscim/blob/main/server.js"
click node_oauth "https://github.com/coleleep/mytestscim/blob/main/server.js"
click node_ui_users "https://github.com/coleleep/mytestscim/blob/main/server.js"
click node_ui_groups "https://github.com/coleleep/mytestscim/blob/main/server.js"
click node_users_template "https://github.com/coleleep/mytestscim/blob/main/views/users.ejs"
click node_groups_template "https://github.com/coleleep/mytestscim/blob/main/views/groups.ejs"
click node_login_template "https://github.com/coleleep/mytestscim/blob/main/views/login.ejs"
click node_consent_template "https://github.com/coleleep/mytestscim/blob/main/views/consent.ejs"

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_scim,node_scim_auth,node_users,node_groups,node_capabilities,node_ui_actor,node_oauth_client toneBlue
class node_oidc,node_oauth toneAmber
class node_database toneMint
class node_ui_users,node_ui_groups,node_users_template,node_groups_template,node_login_template,node_consent_template toneRose
class node_idp,node_okta toneIndigo
```

## Components

### SCIM API

- [SCIM entry and dispatch](https://github.com/coleleep/mytestscim/blob/main/server.js): `server.js`
- [SCIM authentication](https://github.com/coleleep/mytestscim/blob/main/server.js): `server.js`
- [User provisioning](https://github.com/coleleep/mytestscim/blob/main/routes/users.js): `routes/users.js`
- [Group provisioning](https://github.com/coleleep/mytestscim/blob/main/routes/groups.js): `routes/groups.js`
- [SCIM metadata](https://github.com/coleleep/mytestscim/blob/main/server.js): `server.js`

### Identity and OAuth

- [Okta OIDC login](https://github.com/coleleep/mytestscim/blob/main/server.js): `server.js`
- [OAuth authorization and tokens](https://github.com/coleleep/mytestscim/blob/main/server.js): `server.js`

### PostgreSQL storage

- [PostgreSQL data](https://github.com/coleleep/mytestscim/blob/main/server.js): `server.js`

### Web UI

- [User data view](https://github.com/coleleep/mytestscim/blob/main/server.js): `server.js`
- [Group data view](https://github.com/coleleep/mytestscim/blob/main/server.js): `server.js`
- [Users page](https://github.com/coleleep/mytestscim/blob/main/views/users.ejs): `views/users.ejs`
- [Groups page](https://github.com/coleleep/mytestscim/blob/main/views/groups.ejs): `views/groups.ejs`
- [Login page](https://github.com/coleleep/mytestscim/blob/main/views/login.ejs): `views/login.ejs`
- [Consent page](https://github.com/coleleep/mytestscim/blob/main/views/consent.ejs): `views/consent.ejs`

### Other components

- **Identity provider**
- **UI visitor**
- **Okta identity service**
- **SCIM OAuth client**

## Connections

- Identity provider → SCIM entry and dispatch: sends SCIM (evidence: `README.md`)
- SCIM entry and dispatch → SCIM authentication: authenticates (evidence: `server.js`)
- SCIM entry and dispatch → User provisioning: routes users (evidence: `server.js`)
- SCIM entry and dispatch → Group provisioning: routes groups (evidence: `server.js`)
- SCIM entry and dispatch → SCIM metadata: serves metadata (evidence: `server.js`)
- SCIM entry and dispatch → PostgreSQL data: initializes tables (evidence: `server.js`)
- User provisioning → PostgreSQL data: reads and writes (evidence: `routes/users.js`)
- Group provisioning → PostgreSQL data: reads and writes (evidence: `routes/groups.js`)
- UI visitor → Okta OIDC login: signs in (evidence: `README.md`)
- Okta OIDC login → Okta identity service: authenticates with (evidence: `README.md`)
- UI visitor → User data view: opens UI (evidence: `README.md`)
- UI visitor → Group data view: opens UI (evidence: `server.js`)
- User data view → PostgreSQL data: reads users (evidence: `server.js`)
- Group data view → PostgreSQL data: reads groups (evidence: `server.js`)
- User data view → Users page: renders (evidence: `server.js`)
- Group data view → Groups page: renders (evidence: `server.js`)
- UI visitor → Login page: requests login
- SCIM OAuth client → OAuth authorization and tokens: requests token (evidence: `README.md`)
- OAuth authorization and tokens → Consent page: renders consent (evidence: `server.js`)
