# ugurkocde/intuneautomation architecture

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

- Interactive diagram: https://gitdiagram.com/ugurkocde/intuneautomation
- Repository: https://github.com/ugurkocde/intuneautomation

## Overview

IntuneAutomation’s web application helps administrators discover and retrieve Intune PowerShell scripts, generate new scripts, and access supporting content and analytics. The generator’s visible client handles streamed output and quota/redaction state, while its API and validation services form distinct server-side stages; excerpts do not show their call wiring, so those links are marked unverified. The MCP repository excerpt shows catalog, guide, and source retrieval with GitHub and bundled-index fallback. Other major site capabilities are represented from the README and tree; unsampled implementations are not assumed to be inspected.

Main entry points: [`web/src/app/generator/page-client.tsx`](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/generator/page-client.tsx) (Generator UI), [`web/src/app/api/generator/generate/route.ts`](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/generator/generate/route.ts) (Generate Endpoint), [`web/src/lib/generator-lint.ts`](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-lint.ts) (Script Lint), [`web/src/server/mcp/core.ts`](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/mcp/core.ts) (MCP Server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Script Discovery"]
  node_website["IntuneAutomation Site<br/>[page.tsx]"]
  node_catalog["Script Catalog<br/>[scripts.ts]"]
  node_browse["Browse Scripts<br/>[page.tsx]"]
  node_script_detail["Script Details<br/>[page.tsx]"]
  node_runbooks["Runbook Guidance<br/>[page.tsx]"]
  node_blog["Blog Posts<br/>[page-client.tsx]"]
  node_mdx["MDX Rendering<br/>[mdx-components.tsx]"]
end

subgraph group_authoring["Script Authoring"]
  node_generator_ui["Generator UI<br/>[page-client.tsx]"]
  node_inspector["Output Inspector<br/>[inspector.tsx]"]
  node_generate_api["Generate Endpoint<br/>[route.ts]"]
  node_fix_api["Fix Endpoint<br/>[route.ts]"]
  node_refine_api["Refine Endpoint<br/>[route.ts]"]
  node_abuse_checks["Abuse Checks<br/>[generator-abuse.ts]"]
  node_topic_checks["Topic Filter<br/>[topic-filter.ts]"]
  node_lint["Script Lint<br/>[generator-lint.ts]"]
  node_endpoint_checks["Endpoint Checks"]
  node_permissions["Permission Checks"]
end

subgraph group_delivery["MCP Delivery"]
  node_mcp_endpoint["MCP Endpoint<br/>[route.ts]"]
  node_mcp_core["MCP Server<br/>[core.ts]"]
  node_mcp_routing["Request Routing<br/>[requestRouting.ts]"]
  node_mcp_repo["Script Repository<br/>[repository.ts]"]
  node_script_index["Script Index<br/>[scripts-index.json]"]
end

subgraph group_site["Site Services"]
  node_analytics["Analytics API<br/>[route.ts]"]
  node_stats["Statistics API<br/>[route.ts]"]
  node_subscription["Subscriptions"]
  node_query_client["Query Client<br/>[query-client.ts]"]
  node_env["Environment Config<br/>[env.js]"]
end

node_admin(("Administrator"))
node_mcp_client(("MCP Client"))
node_github["GitHub Source"]
node_supabase[("Supabase")]

node_admin -->|"visits"| node_website
node_admin -->|"discovers scripts"| node_browse
node_admin -->|"requests generation"| node_generator_ui
node_website -.->|"presents scripts"| node_catalog
node_browse -.->|"lists scripts"| node_catalog
node_script_detail -.->|"shows script"| node_catalog
node_blog -->|"renders MDX"| node_mdx
node_generator_ui -->|"renders"| node_inspector
node_generator_ui -.->|"submits prompt"| node_generate_api
node_generator_ui -.->|"requests fix"| node_fix_api
node_generator_ui -.->|"requests refinement"| node_refine_api
node_generate_api -.->|"checks abuse"| node_abuse_checks
node_generate_api -.->|"checks topic"| node_topic_checks
node_generate_api -.->|"validates output"| node_lint
node_lint -.->|"checks endpoints"| node_endpoint_checks
node_lint -.->|"checks permissions"| node_permissions
node_mcp_client -->|"queries scripts"| node_mcp_endpoint
node_mcp_endpoint -.->|"serves requests"| node_mcp_core
node_mcp_core -.->|"routes requests"| node_mcp_routing
node_mcp_repo -->|"fetches catalog and source"| node_github
node_mcp_repo -->|"falls back to"| node_script_index
node_mcp_client -->|"requests authoring guide"| node_mcp_core
node_analytics -.->|"records events"| node_supabase
node_subscription -.->|"manages subscribers"| node_supabase
node_query_client -->|"configures hydration"| node_query_client

click node_website "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/page.tsx"
click node_catalog "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/scripts.ts"
click node_browse "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/scripts/page.tsx"
click node_script_detail "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/script/%5Bslug%5D/page.tsx"
click node_runbooks "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/intune-scripts/page.tsx"
click node_blog "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/blog/%5Bslug%5D/page-client.tsx"
click node_mdx "https://github.com/ugurkocde/intuneautomation/blob/main/web/mdx-components.tsx"
click node_generator_ui "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/generator/page-client.tsx"
click node_inspector "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/generator/_components/inspector.tsx"
click node_generate_api "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/generator/generate/route.ts"
click node_fix_api "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/generator/fix/route.ts"
click node_refine_api "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/generator/refine/route.ts"
click node_abuse_checks "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-abuse.ts"
click node_topic_checks "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/generator/topic-filter.ts"
click node_lint "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-lint.ts"
click node_endpoint_checks "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-graph-endpoints.ts"
click node_permissions "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-graph-permissions.ts"
click node_mcp_endpoint "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/mcp/route.ts"
click node_mcp_core "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/mcp/core.ts"
click node_mcp_routing "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/mcp/requestRouting.ts"
click node_mcp_repo "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/mcp/repository.ts"
click node_script_index "https://github.com/ugurkocde/intuneautomation/blob/main/mcp/data/scripts-index.json"
click node_analytics "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/analytics/route.ts"
click node_stats "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/stats/totals/route.ts"
click node_subscription "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/components/SubscriptionForm.tsx"
click node_query_client "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/trpc/query-client.ts"
click node_env "https://github.com/ugurkocde/intuneautomation/blob/main/web/src/env.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_website,node_catalog,node_browse,node_script_detail,node_runbooks,node_blog,node_mdx,node_mcp_client toneBlue
class node_generator_ui,node_inspector,node_generate_api,node_fix_api,node_refine_api,node_abuse_checks,node_topic_checks,node_lint,node_endpoint_checks,node_permissions,node_supabase toneAmber
class node_mcp_endpoint,node_mcp_core,node_mcp_routing,node_mcp_repo,node_script_index toneMint
class node_analytics,node_stats,node_subscription,node_query_client,node_env toneRose
class node_admin,node_github toneIndigo
```

## Components

### Script Discovery

- [IntuneAutomation Site](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/page.tsx): `web/src/app/page.tsx`
- [Script Catalog](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/scripts.ts): `web/src/lib/scripts.ts`
- [Browse Scripts](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/scripts/page.tsx): `web/src/app/scripts/page.tsx`
- [Script Details](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/script/%5Bslug%5D/page.tsx): `web/src/app/script/[slug]/page.tsx`
- [Runbook Guidance](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/intune-scripts/page.tsx): `web/src/app/intune-scripts/page.tsx`
- [Blog Posts](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/blog/%5Bslug%5D/page-client.tsx): `web/src/app/blog/[slug]/page-client.tsx`
- [MDX Rendering](https://github.com/ugurkocde/intuneautomation/blob/main/web/mdx-components.tsx): `web/mdx-components.tsx`

### Script Authoring

- [Generator UI](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/generator/page-client.tsx): `web/src/app/generator/page-client.tsx`
- [Output Inspector](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/generator/_components/inspector.tsx): `web/src/app/generator/_components/inspector.tsx`
- [Generate Endpoint](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/generator/generate/route.ts): `web/src/app/api/generator/generate/route.ts`
- [Fix Endpoint](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/generator/fix/route.ts): `web/src/app/api/generator/fix/route.ts`
- [Refine Endpoint](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/generator/refine/route.ts): `web/src/app/api/generator/refine/route.ts`
- [Abuse Checks](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-abuse.ts): `web/src/lib/generator-abuse.ts`
- [Topic Filter](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/generator/topic-filter.ts): `web/src/server/generator/topic-filter.ts`
- [Script Lint](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-lint.ts): `web/src/lib/generator-lint.ts`
- [Endpoint Checks](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-graph-endpoints.ts): `web/src/lib/generator-graph-endpoints.ts`
- [Permission Checks](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/lib/generator-graph-permissions.ts): `web/src/lib/generator-graph-permissions.ts`

### MCP Delivery

- [MCP Endpoint](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/mcp/route.ts): `web/src/app/api/mcp/route.ts`
- [MCP Server](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/mcp/core.ts): `web/src/server/mcp/core.ts`
- [Request Routing](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/mcp/requestRouting.ts): `web/src/server/mcp/requestRouting.ts`
- [Script Repository](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/server/mcp/repository.ts): `web/src/server/mcp/repository.ts`
- [Script Index](https://github.com/ugurkocde/intuneautomation/blob/main/mcp/data/scripts-index.json): `mcp/data/scripts-index.json`

### Site Services

- [Analytics API](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/analytics/route.ts): `web/src/app/api/analytics/route.ts`
- [Statistics API](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/app/api/stats/totals/route.ts): `web/src/app/api/stats/totals/route.ts`
- [Subscriptions](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/components/SubscriptionForm.tsx): `web/src/components/SubscriptionForm.tsx`
- [Query Client](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/trpc/query-client.ts): `web/src/trpc/query-client.ts`
- [Environment Config](https://github.com/ugurkocde/intuneautomation/blob/main/web/src/env.js): `web/src/env.js`

### Other components

- **Administrator**
- **MCP Client**
- **GitHub Source**
- **Supabase**

## Connections

- Administrator → IntuneAutomation Site: visits (evidence: `README.md`)
- Administrator → Browse Scripts: discovers scripts (evidence: `README.md`)
- Administrator → Generator UI: requests generation (evidence: `README.md`)
- IntuneAutomation Site → Script Catalog: presents scripts
- Browse Scripts → Script Catalog: lists scripts
- Script Details → Script Catalog: shows script
- Blog Posts → MDX Rendering: renders MDX (evidence: `web/src/app/blog/[slug]/page-client.tsx`)
- Generator UI → Output Inspector: renders (evidence: `web/src/app/generator/page-client.tsx`)
- Generator UI → Generate Endpoint: submits prompt
- Generator UI → Fix Endpoint: requests fix
- Generator UI → Refine Endpoint: requests refinement
- Generate Endpoint → Abuse Checks: checks abuse
- Generate Endpoint → Topic Filter: checks topic
- Generate Endpoint → Script Lint: validates output
- Script Lint → Endpoint Checks: checks endpoints
- Script Lint → Permission Checks: checks permissions
- MCP Client → MCP Endpoint: queries scripts (evidence: `README.md`)
- MCP Endpoint → MCP Server: serves requests
- MCP Server → Request Routing: routes requests
- Script Repository → GitHub Source: fetches catalog and source (evidence: `web/src/server/mcp/repository.ts`)
- Script Repository → Script Index: falls back to (evidence: `web/src/server/mcp/repository.ts`)
- MCP Client → MCP Server: requests authoring guide (evidence: `README.md`)
- Analytics API → Supabase: records events
- Subscriptions → Supabase: manages subscribers
- Query Client → Query Client: configures hydration (evidence: `web/src/trpc/query-client.ts`)
