# xtoxico/n5tools-permisions architecture

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

- Interactive diagram: https://gitdiagram.com/xtoxico/n5tools-permisions
- Repository: https://github.com/xtoxico/n5tools-permisions

## Overview

This is an access-permissions management application: an Angular interface manages application and subapplication grants for users, companies, and roles, plus company-scoped user exclusions. The central workflow is an administrator selecting a subject and permission set, then the UI calling the Express API to read or update it in MySQL. The sampled Angular component shows those workflows and calls the API service; backend excerpts show the corresponding routes and database queries. Some route behavior is unsampled, so only documented or directly visible links are shown.

Main entry points: [`backend/server.js`](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js) (Express API), [`frontend/src/app/app.ts`](https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/app.ts) (Permissions workspace), [`frontend/src/main.ts`](https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/main.ts) (App bootstrap), [`frontend/src/app/app.config.ts`](https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/app.config.ts) (App configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Admin interface"]
  node_bootstrap["App bootstrap<br/>[main.ts]"]
  node_config["App configuration<br/>[app.config.ts]"]
  node_routes["Router routes<br/>[app.routes.ts]"]
  node_workspace["Permissions workspace<br/>[app.ts]"]
  node_api_client["API client<br/>[api.ts]"]
end

subgraph group_api["Permissions API"]
  node_server["Express API<br/>[server.js]"]
  node_catalog["App catalog<br/>[server.js]"]
  node_user_grants["User grants<br/>[server.js]"]
  node_user_search["User search<br/>[server.js]"]
  node_roles["Role management<br/>[server.js]"]
  node_company["Company grants<br/>[server.js]"]
  node_exclusions["User exclusions<br/>[server.js]"]
  node_company_users["Company users<br/>[server.js]"]
end

subgraph group_data["Permission data"]
  node_mysql[("MySQL database")]
end

node_admin(("Administrator"))

node_admin -->|"manages"| node_workspace
node_bootstrap -->|"loads"| node_config
node_bootstrap -->|"bootstraps"| node_workspace
node_config -->|"provides routes"| node_routes
node_workspace -->|"calls"| node_api_client
node_api_client -->|"HTTP requests"| node_server
node_server -->|"queries"| node_mysql
node_server -->|"routes"| node_catalog
node_server -->|"routes"| node_user_grants
node_server -->|"routes"| node_user_search
node_server -->|"routes"| node_roles
node_server -->|"routes"| node_company
node_server -->|"routes"| node_company_users
node_server -->|"routes"| node_exclusions

click node_bootstrap "https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/main.ts"
click node_config "https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/app.config.ts"
click node_routes "https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/app.routes.ts"
click node_workspace "https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/app.ts"
click node_api_client "https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/services/api.ts"
click node_server "https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js"
click node_catalog "https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js"
click node_user_grants "https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js"
click node_user_search "https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js"
click node_roles "https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js"
click node_company "https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js"
click node_exclusions "https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js"
click node_company_users "https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.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_bootstrap,node_config,node_routes,node_workspace,node_api_client toneBlue
class node_server,node_catalog,node_user_grants,node_user_search,node_roles,node_company,node_exclusions,node_company_users toneAmber
class node_mysql toneMint
class node_admin toneIndigo
```

## Components

### Admin interface

- [App bootstrap](https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/main.ts): `frontend/src/main.ts`
- [App configuration](https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/app.config.ts): `frontend/src/app/app.config.ts`
- [Router routes](https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`
- [Permissions workspace](https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/app.ts): `frontend/src/app/app.ts`
- [API client](https://github.com/xtoxico/n5tools-permisions/blob/main/frontend/src/app/services/api.ts): `frontend/src/app/services/api.ts`

### Permissions API

- [Express API](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js): `backend/server.js`
- [App catalog](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js): `backend/server.js`
- [User grants](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js): `backend/server.js`
- [User search](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js): `backend/server.js`
- [Role management](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js): `backend/server.js`
- [Company grants](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js): `backend/server.js`
- [User exclusions](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js): `backend/server.js`
- [Company users](https://github.com/xtoxico/n5tools-permisions/blob/main/backend/server.js): `backend/server.js`

### Permission data

- **MySQL database**

### Other components

- **Administrator**

## Connections

- Administrator → Permissions workspace: manages (evidence: `frontend/src/app/app.ts`)
- App bootstrap → App configuration: loads (evidence: `frontend/src/main.ts`)
- App bootstrap → Permissions workspace: bootstraps (evidence: `frontend/src/main.ts`)
- App configuration → Router routes: provides routes (evidence: `frontend/src/app/app.config.ts`)
- Permissions workspace → API client: calls (evidence: `frontend/src/app/app.ts`)
- API client → Express API: HTTP requests (evidence: `frontend/src/app/services/api.ts`)
- Express API → MySQL database: queries (evidence: `backend/server.js`)
- Express API → App catalog: routes (evidence: `backend/server.js`)
- Express API → User grants: routes (evidence: `backend/server.js`)
- Express API → User search: routes (evidence: `backend/server.js`)
- Express API → Role management: routes (evidence: `backend/server.js`)
- Express API → Company grants: routes (evidence: `backend/server.js`)
- Express API → Company users: routes (evidence: `backend/server.js`)
- Express API → User exclusions: routes (evidence: `backend/server.js`)
