Intune Companion
Progressive web app for managing Intune devices, apps and groups — right in the browser, nothing to install.
Features
- Devices — list with compliance status, search and filters; details with remote actions (sync, lock, reboot, retire), macOS custom attributes and LAPS password
- Apps — overview with platform filter; assignment details and automatic creation of uninstall groups
- Group search — shows where a group is used across apps, configurations, compliance policies, update rings, scripts and Autopilot profiles
- PWA — installable, Graph API responses cached for 5 minutes
Architecture
flowchart LR
subgraph github ["GitHub"]
direction TB
PR["Pull Request"] -->|"CI: Lint + Build"| MAIN["main"]
MAIN -->|"auto-deploy"| DEV_SWA
REL["Release PR\nrelease-please"] -->|"merge → tag vX.Y.Z"| PROD_SWA
end
subgraph azure_dev ["Azure — Dev Tenant"]
DEV_SWA["Static Web App\nDevelopment"]
end
subgraph azure_prod ["Azure — Prod Tenant"]
PROD_SWA["Static Web App\nProduction"]
end
subgraph runtime ["Browser"]
PWA["Intune Companion\nPWA"]
end
DEV_SWA & PROD_SWA -->|"serves"| PWA
PWA <-->|"MSAL / OAuth 2.0"| ENTRA["Entra ID"]
PWA -->|"Delegated API Calls"| GRAPH["Microsoft Graph API\nIntune · Apps · Groups"]
Quickstart (local)
npm install
npm run dev # → http://localhost:5173
For the full setup (app registration, Azure Static Web App, CI/CD) → CONTRIBUTING.md
Tech stack
| Frontend | React 19, TypeScript 5.9 strict, Vite 8 |
| UI | Fluent UI v9, servoIT branding |
| Auth | MSAL (@azure/msal-browser + @azure/msal-react) |
| Data | Microsoft Graph API v1.0 + beta |
| PWA | vite-plugin-pwa, Workbox |
| Hosting | Azure Static Web Apps |
| CI/CD | GitHub Actions, release-please |