87 lines
4.5 KiB
Markdown
87 lines
4.5 KiB
Markdown
# SharePoint Toolbox v2
|
|
|
|
## What This Is
|
|
|
|
A C#/WPF desktop application for IT administrators and MSPs to audit and manage SharePoint Online permissions, storage, files, and sites across multiple client tenants. Replaces a 6,400-line monolithic PowerShell script with a structured 10,071-line MVVM application shipping as a single self-contained EXE.
|
|
|
|
## Core Value
|
|
|
|
Administrators can audit and manage SharePoint/Teams permissions and storage across multiple client tenants from a single, reliable desktop application.
|
|
|
|
## Current Milestone: v1.1 Enhanced Reports
|
|
|
|
**Goal:** Add user access audit, simplified permissions, storage visualization, and global multi-site selection
|
|
|
|
**Target features:**
|
|
- Export all SharePoint/Teams accesses a specific user has across selected sites
|
|
- Simplified permissions reports with plain-language labels and summary views
|
|
- Storage metrics graph by file type (pie/donut and bar chart, toggleable)
|
|
- Global multi-site selection in toolbar (pick sites once, all tabs use them)
|
|
|
|
## Current State
|
|
|
|
**Shipped:** v1.0 MVP (2026-04-07)
|
|
**Status:** Feature-complete for v1 parity; v1.1 in progress
|
|
|
|
Tech stack: C# / WPF / .NET 10 / PnP Framework / Microsoft Graph SDK / MSAL / Serilog / CommunityToolkit.Mvvm
|
|
Tests: 134 automated (xUnit), 22 skipped (require live SharePoint tenant)
|
|
Distribution: 200 MB self-contained EXE (win-x64)
|
|
|
|
## Requirements
|
|
|
|
### Validated
|
|
|
|
- Full C#/WPF rewrite of all existing PowerShell features — v1.0
|
|
- Multi-tenant authentication with cached sessions — v1.0
|
|
- Thorough error handling (per-item reporting, no silent failures) — v1.0
|
|
- Modular architecture (separate files per feature area, DI, MVVM) — v1.0
|
|
- Self-contained single EXE distribution — v1.0
|
|
|
|
### Active
|
|
|
|
- [ ] Export all SharePoint/Teams accesses a specific user has across selected sites (UACC-01/02)
|
|
- [ ] Simplified permissions reports (plain language, summary views) (SIMP-01/02/03)
|
|
- [ ] Storage metrics graph by file type (pie/donut and bar chart, toggleable) (VIZZ-01/02/03)
|
|
|
|
### Out of Scope
|
|
|
|
- Cross-platform support (Mac/Linux) — WPF is Windows-only; not justified for current user base
|
|
- SQLite or database storage — JSON sufficient for config, profiles, and templates
|
|
- Web-based UI — must remain a local desktop application
|
|
- Cloud/SaaS deployment — local tool by design
|
|
- Mobile support — desktop admin tool
|
|
- Real-time monitoring / alerts — requires background service, beyond scope
|
|
- Automated remediation (auto-revoke) — liability risk
|
|
- Content migration between tenants — separate product category
|
|
|
|
## Context
|
|
|
|
- **v1.0 shipped** with full feature parity: permissions, storage, search, duplicates, bulk operations, templates, folder provisioning
|
|
- **Known tech debt:** FeatureTabBase dead code removed post-v1.0; bulk DataGrid row highlighting added post-v1.0; cancel test locale fix applied post-v1.0
|
|
- **Localization:** 199 EN/FR keys, full parity verified
|
|
- **Architecture:** 106 C# files + 16 XAML files across Core/Infrastructure/Services/ViewModels/Views layers
|
|
|
|
## Constraints
|
|
|
|
- **Platform:** Windows desktop only — WPF requires Windows
|
|
- **Distribution:** Self-contained EXE (~200 MB) — no .NET runtime dependency
|
|
- **Auth method:** Interactive browser-based Azure AD login (no client secrets stored)
|
|
- **Data storage:** JSON files for profiles, settings, templates
|
|
- **SharePoint API:** PnP Framework / Microsoft Graph SDK
|
|
- **Local only:** No telemetry, no cloud services, no external dependencies at runtime
|
|
|
|
## Key Decisions
|
|
|
|
| Decision | Rationale | Outcome |
|
|
|----------|-----------|---------|
|
|
| Rewrite to C#/WPF instead of improving PowerShell | Better async/await, proper OOP, richer UI, better tooling | ✓ Good — 10k LOC structured app vs 6.4k monolithic script |
|
|
| WPF over WinForms | Modern data binding, MVVM pattern, richer styling | ✓ Good — clean separation of concerns |
|
|
| Self-contained EXE | Users shouldn't need to install .NET runtime | ✓ Good — 200 MB single file, zero dependencies |
|
|
| Keep JSON storage | Simple, human-readable, sufficient for config/profiles | ✓ Good — atomic write-then-replace pattern works well |
|
|
| Multi-tenant session caching | MSP workflow requires fast switching between tenants | ✓ Good — per-clientId MSAL PCA with MsalCacheHelper |
|
|
| BulkOperationRunner pattern | Continue-on-error with per-item results for all bulk ops | ✓ Good — consistent error handling across 4 bulk features |
|
|
| Wave 0 scaffold pattern | Models + interfaces + test stubs before implementation | ✓ Good — all phases had test targets from day 1 |
|
|
|
|
---
|
|
*Last updated: 2026-04-07 after v1.1 milestone start*
|