<- Project index

Desktop Application · .NET

Media Manager

A restored and modernized desktop media application that preserves the history of an earlier diploma build while replacing brittle integrations and improving reliability.

Role / responsibility

Legacy recovery, integration replacement, desktop engineering and portfolio restoration.

A restored and modernized desktop media application that preserves the history of an earlier diploma build while replacing brittle integrations and improving reliability.

Verified proof surfaces

  • Recovered legacy application path
  • Modern provider/API boundary
  • Portable demo and release packaging

Repository readme / adapted

Media Manager

SOURCEREADME.mdAdapted for portfolio readability; claims remain source-derived.

Privacy-first C# WPF media library organiser - restored from my diploma-era origin project and modernized with supported metadata providers.

Media Manager is a local Windows desktop application for organising, enriching, searching, and maintaining personal media libraries. The corrected `v1.0.1` portfolio release preserves the recovered application and its original custom-controls architecture while presenting a verified, modern product.

> **The application that taught me how to build software, completed by the developer it helped me become.**

01

Project significance

Media Manager was the first serious application I built during my software-development diploma. It taught me how application structure, WPF, custom controls, file-system workflows, metadata, persistence, debugging, and interface design fit together.

Years later, I recovered the project from a damaged drive. The recovered snapshot preserved substantial real application work, but it was only partially functional and was not a reproducible or release-ready build. I preserved that historical baseline, repaired and reconnected the custom controls library, progressively stabilized its workflows with isolated synthetic data, replaced brittle site scraping with supported provider APIs, strengthened local data handling, and redesigned the interface. This is a modernised origin project, not a greenfield rewrite.

02

Historical baseline status

The repository distinguishes three states:

| State | Meaning | | --- | --- | | Recovered snapshot | Partially functional historical source recovered from a damaged drive. It demonstrates the original scope and interface, but does not prove every historical workflow or establish the condition of the application when originally submitted. | | Original-interface functional restoration | A separate, acceptance-complete Student Projects edition based on the pre-modern Group 4 snapshot. It preserves the original interface while carrying the remaining functional corrections and its own complete verification evidence. | | Modern release | The corrected `v1.0.1` application in this repository: supported providers, reliability work, modern interface, verified player surfaces, packaging, and release evidence. |

The recovered snapshot being incomplete today does not mean the diploma application never worked. It means the damaged-drive recovery could not provide a complete, reproducible copy or full acceptance evidence on its own.

Read the full original application history and modernisation case study.

03

Original to modern

The evidence is deliberately matched:

| Recovered snapshot | Reproducible build checkpoint | Modern completed release | | --- | --- | --- | | 13 original screenshots | 13 restored screenshots | 13 modern screenshots |

Every public capture uses generated artwork and synthetic records. The fixed sequences show the same shell, libraries, forms, sorting, provider state, and selected-item details at each stage. Screenshots prove the states pictured; they are not, by themselves, evidence that every workflow passed.

04

Core features

Media Manager is a desktop organiser. It is not a streaming service, Plex/Kodi replacement, cloud platform, or active IMDb scraper.

  • Six local library types: movies, TV shows, videos, pictures, music, and games.
  • Folder hierarchies, media cards, selected-item details, search, sorting, filtering, and favourites.
  • Add, edit, remove, delete, reveal-in-Explorer, playback, gallery, and game-launch workflows.
  • TMDB metadata for movies and television; IGDB metadata for games.
  • Manual metadata entry plus no-key, offline, timeout, rate-limit, and stale-cache behavior.
  • SQLite persistence with health checks, path-redacted catalog export, verified backups, staged restore, rollback, and corruption recovery.
  • Disposable `--demo` profile with generated covers and neutral local fixtures.
  • Modern navy/cyan shell with visible focus, accessible names, scroll-safe commands, and responsive long-form layouts.
05

Architecture

| Area | Responsibility | | --- | --- | | `src/Media_Manager` | .NET Framework 4.7.2 WPF application, views, local workflows, provider boundary, persistence, recovery, and modern application theme | | `src/MediaControlsLibrary` | Recovered reusable WPF controls for navigation, cards, details, forms, dialogs, folder browsing, and viewer surfaces | | `src/MediaControlsTester` | Demonstration harness for the reusable controls; some labels intentionally demonstrate styling without configured destinations | | `tests/MediaManager.StabilityTests` | Dependency-light x64 regression executable using disposable data and mocked provider responses | | `sample-data` | Publication-safe fixture policy and generated demo-catalog description | | `packaging` | Repeatable Release x64 portable-package pipeline and privacy gate |

The recovery intentionally retains a pragmatic hybrid of view code-behind, view models, and static workflow helpers. Provider and data-recovery boundaries were introduced incrementally where they materially improved safety and testability; the project was not rewritten merely to appear newer. See architecture.

06

Metadata providers

`IMetadataProvider` keeps provider response types and authentication out of the UI:

Provider calls are cancellable, have bounded timeouts, use timestamped local caches, and always retain a manual-entry route. Credentials are optional, stored outside the repository, and protected for the current Windows user with DPAPI. Setup, failure states, and attribution are documented in metadata-provider-migration.md.

  • TMDB: movie, TV, season, and episode search/details, including supported lookup of legacy IMDb external IDs.
  • IGDB: game search/details through Twitch application credentials.
07

Privacy and local-first behavior

Normal use stores the database, settings, encrypted provider configuration, caches, covers, backups, recovery copies, and rolling logs in the current Windows user's local application-data profile. Demo mode instead uses a disposable directory under `%TEMP%` and never opens the normal profile.

The repository and portable package exclude real libraries, databases, API credentials, logs, personal paths, recovered copyrighted samples, caches, and generated build directories. Backups exclude media files and provider credentials; catalog export redacts local path roots. See the complete privacy model and release audit.

08

Build and run

Requirements:

From a Developer PowerShell:

The normal executable uses the current user's local profile. Use `--demo` for a completely synthetic portfolio walkthrough.

Build the portable Release:

  • Windows 10/11 x64;
  • Visual Studio 2022 with .NET desktop development;
  • .NET Framework 4.7.2 developer pack;
  • NuGet package restore.
nuget restore MediaManager.sln -ConfigFile NuGet.Configmsbuild MediaManager.sln /t:Rebuild /p:Configuration=Release /p:Platform=x64src\Media_Manager\bin\x64\Release\Media_Manager.exe --demopowershell -NoProfile -ExecutionPolicy Bypass -File packaging\build-portable.ps1powershell -NoProfile -ExecutionPolicy Bypass -File tools\verify-release.ps1
09

Testing and evidence

After building each x64 configuration:

The suite covers destructive hierarchy behavior, malformed data, provider mapping and cancellation, encrypted settings, offline fallback, backup/restore, corrupt-database recovery, archive validation, path redaction, demo isolation, and a 2,500-record health scan. Manual matrices verify the complete UI and filesystem workflows. See testing.md, build-status.md, and the evidence index.

Watch the silent modern-interface walkthrough.

tests\MediaManager.StabilityTests\bin\x64\Debug\MediaManager.StabilityTests.exetests\MediaManager.StabilityTests\bin\x64\Release\MediaManager.StabilityTests.exe
10

Release status

`v1.0.1` is the current release. It retains the seven-group recovery and modernisation closure and adds the corrective player pass:

The historical `group-2-complete` tag records the point where clean builds and startup were restored. Groups 3–5 were intended to establish the fully functional pre-modern baseline, but a later live audit found that their playback check had verified open/return behavior without detecting the constrained full-window player layout. The defect was corrected and evidenced in `v1.0.1`; the separate original-interface Student Projects edition now carries the equivalent functional correction and independent acceptance evidence without adopting the modern theme.

See release notes, changelog, closed current bucket, and master plan.

  • preserved recovered baseline;
  • restored reproducible application builds;
  • stabilised original workflows;
  • replaced unsupported scraping with provider APIs;
  • strengthened local data safety and portable release behavior;
  • completed the modern interface;
  • completed packaging, public documentation, visual evidence, privacy/licensing review, and release proof.