# cyberdrain/cipp architecture

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

- Interactive diagram: https://gitdiagram.com/cyberdrain/cipp
- Repository: https://github.com/cyberdrain/cipp
- Video tour (about a minute): https://gitdiagram.com/cyberdrain/cipp/video

## Overview

CIPP is a multi-tenant administration portal for Microsoft Partners. An engineer uses the web interface to inspect tenant and estate health or perform administration; the frontend sends API requests to the backend, which mediates Microsoft 365 operations. Standards deployment, security visibility, automation, integrations, and reports are significant parallel capabilities. The tree and README establish the broad product shape, but most backend API and feature implementations are not sampled, so those internals and their specific call wiring are intentionally left abstract.

Main entry points: [`frontend/src/index.jsx`](https://github.com/cyberdrain/cipp/blob/main/frontend/src/index.jsx) (Web portal), [`backend`](https://github.com/cyberdrain/cipp/tree/main/backend) (Backend API), [`frontend/src/api/ApiCall.jsx`](https://github.com/cyberdrain/cipp/blob/main/frontend/src/api/ApiCall.jsx) (API client), [`frontend/src/components/CippAllTenants`](https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippAllTenants) (Estate dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Portal experience"]
  node_portal["Web portal<br/>[index.jsx]"]
end

subgraph group_tenant_ops["Tenant operations"]
  node_tenant_admin["Tenant administration"]
  node_estate_dashboard["Estate dashboard"]
  node_sharepoint["SharePoint management"]
  node_cleanup_opportunities["Storage opportunities"]
  node_cleanup_drawer["Storage cleanup"]
end

subgraph group_security_automation["Security and automation"]
  node_standards["Standards enforcement"]
  node_baselines["Baseline deployment"]
  node_security_visibility["Security visibility"]
  node_bec_response["BEC response"]
  node_automation["Scheduled automation"]
end

subgraph group_platform["API and reporting"]
  node_api_client["API client<br/>[ApiCall.jsx]"]
  node_integrations["External integrations"]
  node_backend_api["Backend API"]
  node_rest_client["REST transport<br/>[CIPPRestClient.cs]"]
  node_reports["PDF reporting<br/>[ReportPdf.cs]"]
end

node_partner(("Partner engineer"))
node_microsoft365["Microsoft 365"]

node_partner -->|"uses"| node_portal
node_portal -->|"opens"| node_tenant_admin
node_portal -->|"opens"| node_estate_dashboard
node_portal -->|"opens"| node_standards
node_portal -->|"opens"| node_baselines
node_portal -->|"opens"| node_security_visibility
node_portal -->|"opens"| node_bec_response
node_portal -->|"opens"| node_automation
node_portal -->|"opens"| node_integrations
node_portal -->|"opens"| node_sharepoint
node_sharepoint -->|"analyzes"| node_cleanup_opportunities
node_cleanup_drawer -->|"requests"| node_api_client
node_estate_dashboard -->|"fetches data"| node_api_client
node_api_client -->|"sends requests"| node_backend_api
node_backend_api -->|"manages tenants"| node_microsoft365
node_backend_api -->|"uses transport"| node_rest_client
node_reports -.->|"renders report data"| node_microsoft365

click node_portal "https://github.com/cyberdrain/cipp/blob/main/frontend/src/index.jsx"
click node_api_client "https://github.com/cyberdrain/cipp/blob/main/frontend/src/api/ApiCall.jsx"
click node_tenant_admin "https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippFormPages"
click node_estate_dashboard "https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippAllTenants"
click node_standards "https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippStandards"
click node_baselines "https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippBaselines"
click node_security_visibility "https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippComponents"
click node_bec_response "https://github.com/cyberdrain/cipp/blob/main/frontend/src/components/CippComponents/CippBecContainmentDrawer.jsx"
click node_automation "https://github.com/cyberdrain/cipp/blob/main/frontend/src/components/CippComponents/CippSchedulerDrawer.jsx"
click node_integrations "https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippIntegrations"
click node_sharepoint "https://github.com/cyberdrain/cipp/blob/main/frontend/src/components/CippComponents/CippSharePointBrowserStorage.jsx"
click node_cleanup_opportunities "https://github.com/cyberdrain/cipp/blob/main/frontend/src/utils/storage-cleanup-opportunities.js"
click node_cleanup_drawer "https://github.com/cyberdrain/cipp/blob/main/frontend/src/components/CippComponents/CippStorageCleanupDrawer.jsx"
click node_backend_api "https://github.com/cyberdrain/cipp/tree/main/backend"
click node_rest_client "https://github.com/cyberdrain/cipp/blob/main/backend/Shared/CIPPSharp/CIPPRestClient.cs"
click node_reports "https://github.com/cyberdrain/cipp/blob/main/backend/Shared/CIPPSharp/Reporting/ReportPdf.cs"

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_portal toneBlue
class node_tenant_admin,node_estate_dashboard,node_sharepoint,node_cleanup_opportunities,node_cleanup_drawer toneAmber
class node_standards,node_baselines,node_security_visibility,node_bec_response,node_automation toneMint
class node_api_client,node_integrations,node_backend_api,node_rest_client,node_reports toneRose
class node_partner,node_microsoft365 toneIndigo
```

## Components

### Portal experience

- [Web portal](https://github.com/cyberdrain/cipp/blob/main/frontend/src/index.jsx): `frontend/src/index.jsx`

### Tenant operations

- [Tenant administration](https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippFormPages): `frontend/src/components/CippFormPages`
- [Estate dashboard](https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippAllTenants): `frontend/src/components/CippAllTenants`
- [SharePoint management](https://github.com/cyberdrain/cipp/blob/main/frontend/src/components/CippComponents/CippSharePointBrowserStorage.jsx): `frontend/src/components/CippComponents/CippSharePointBrowserStorage.jsx`
- [Storage opportunities](https://github.com/cyberdrain/cipp/blob/main/frontend/src/utils/storage-cleanup-opportunities.js): `frontend/src/utils/storage-cleanup-opportunities.js`
- [Storage cleanup](https://github.com/cyberdrain/cipp/blob/main/frontend/src/components/CippComponents/CippStorageCleanupDrawer.jsx): `frontend/src/components/CippComponents/CippStorageCleanupDrawer.jsx`

### Security and automation

- [Standards enforcement](https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippStandards): `frontend/src/components/CippStandards`
- [Baseline deployment](https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippBaselines): `frontend/src/components/CippBaselines`
- [Security visibility](https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippComponents): `frontend/src/components/CippComponents`
- [BEC response](https://github.com/cyberdrain/cipp/blob/main/frontend/src/components/CippComponents/CippBecContainmentDrawer.jsx): `frontend/src/components/CippComponents/CippBecContainmentDrawer.jsx`
- [Scheduled automation](https://github.com/cyberdrain/cipp/blob/main/frontend/src/components/CippComponents/CippSchedulerDrawer.jsx): `frontend/src/components/CippComponents/CippSchedulerDrawer.jsx`

### API and reporting

- [API client](https://github.com/cyberdrain/cipp/blob/main/frontend/src/api/ApiCall.jsx): `frontend/src/api/ApiCall.jsx`
- [External integrations](https://github.com/cyberdrain/cipp/tree/main/frontend/src/components/CippIntegrations): `frontend/src/components/CippIntegrations`
- [Backend API](https://github.com/cyberdrain/cipp/tree/main/backend): `backend`
- [REST transport](https://github.com/cyberdrain/cipp/blob/main/backend/Shared/CIPPSharp/CIPPRestClient.cs): `backend/Shared/CIPPSharp/CIPPRestClient.cs`
- [PDF reporting](https://github.com/cyberdrain/cipp/blob/main/backend/Shared/CIPPSharp/Reporting/ReportPdf.cs): `backend/Shared/CIPPSharp/Reporting/ReportPdf.cs`

### Other components

- **Partner engineer**
- **Microsoft 365**

## Connections

- Partner engineer → Web portal: uses
- Web portal → Tenant administration: opens
- Web portal → Estate dashboard: opens
- Web portal → Standards enforcement: opens
- Web portal → Baseline deployment: opens
- Web portal → Security visibility: opens
- Web portal → BEC response: opens
- Web portal → Scheduled automation: opens
- Web portal → External integrations: opens
- Web portal → SharePoint management: opens
- SharePoint management → Storage opportunities: analyzes
- Storage cleanup → API client: requests
- Estate dashboard → API client: fetches data
- API client → Backend API: sends requests
- Backend API → Microsoft 365: manages tenants
- Backend API → REST transport: uses transport
- PDF reporting → Microsoft 365: renders report data
