Files
Sharepoint-Toolbox/.planning/PROJECT.md
Dev 81da0f6a99 docs: start milestone v1.1 Enhanced Reports
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 09:38:28 +02:00

4.5 KiB

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