How fateyevstanislav/disk-analyzer works
Disk Analyzer is a WinForms desktop client backed by a REST API for analyzing files and folders. The user selects a path, depth, filters, and an operation; the API builds the requested strategies, domain services scan the filesystem and return measurement, grouping, or duplicate results. The client also exposes analysis history and filter metadata. The README documents dynamic discovery of filters, groupers, and measurements; the sampled request-info controller explicitly exposes filters, so metadata wiring beyond that is not shown here.
Main entry points: Controllers Analysis controllers · DirectoryWalker.cs Directory scanner · ApiClient.cs API client · Program.cs Analysis API
Components 19
Desktop client
- Main window
DiskAnalyzer/DiskAnalyzer.UI/Forms/MainWindow.Designer.cs - API client
DiskAnalyzer/DiskAnalyzer.UI/Infrastructure/ApiClient.cs
REST API
- Analysis API
DiskAnalyzer/DiskAnalyzer.Api/Program.cs - Analysis controllers
DiskAnalyzer/DiskAnalyzer.Api/Controllers - Filter factory
DiskAnalyzer/DiskAnalyzer.Api/Factories/FilterFactory.cs - Strategy factories
DiskAnalyzer/DiskAnalyzer.Api/Factories - Filter metadata
DiskAnalyzer/DiskAnalyzer.Api/Controllers/RequestInfoController.cs - Type discovery
DiskAnalyzer/DiskAnalyzer.Api/Modules/ApiReflection.cs
Domain analysis
- Directory scanner
DiskAnalyzer/DiskAnalyzer.Domain/Services/DirectoryWalker.cs - File filters
DiskAnalyzer/DiskAnalyzer.Domain/Models/Filters - File measurements
DiskAnalyzer/DiskAnalyzer.Domain/Services/FilesMeasurements - Measurement service
DiskAnalyzer/DiskAnalyzer.Domain/Services/FilesMeasurer.cs - File groupers
DiskAnalyzer/DiskAnalyzer.Domain/Models/Groupers - Grouping service
DiskAnalyzer/DiskAnalyzer.Domain/Services/FilesGrouper.cs - Duplicate finder
DiskAnalyzer/DiskAnalyzer.Domain/Services/DuplicatesFinder.cs
History storage
- History controller
DiskAnalyzer/DiskAnalyzer.Api/Controllers/HistoryController.cs - In-memory history
DiskAnalyzer/DiskAnalyzer.Infrastructure/Repositories/InMemoryRepository.cs
Other components
- User
- Local filesystem
Connections 25
- User → Main window: configures analysis
- Main window → API client: submits requests
- API client → Analysis API: sends HTTP
- Analysis API → Analysis controllers: dispatches routes
- Analysis controllers → Filter factory: creates filters
- Analysis controllers → Strategy factories: creates strategies
- Filter factory → File filters: instantiates
- Strategy factories → File measurements: instantiates
- Strategy factories → File groupers: instantiates
- Analysis controllers → Measurement service: measures files
- Analysis controllers → Grouping service: groups files
- Analysis controllers → Duplicate finder: finds duplicates
- Measurement service → Directory scanner: scans through
- Grouping service → Directory scanner: scans through
- Duplicate finder → Directory scanner: scans through
- Directory scanner → Local filesystem: reads files
- Directory scanner → File filters: applies
- Measurement service → File measurements: computes
- Grouping service → File groupers: groups by
- Analysis controllers → Main window: returns results
- API client → History controller: history requests
- History controller → In-memory history: reads and writes
- API client → Filter metadata: requests filters
- Filter metadata → Type discovery: gets filter data
- Analysis API → Type discovery: initializes discovery