A cross-platform desktop app that analyzes the size of files and folders - written with Avalonia and RavenDB.
You need to have the .NET 6 SDK installed and an IDE of your choice that can handle .sln
files.
Simply check out the repository and open ./Code/FileSystemAnalyzer.sln
in your favorite IDE. Build and run the FileSystemAnalyzer.AvaloniaApp
project. You do not need to configure anything - the app will use an embedded RavenDB server by default.
Once the app is running, you are presented with a list view, showing all analyses that you already conducted. Click "Create new analysis..." on the top left and select a folder in your file system that you want to analyze.
File System Analyzer will create a snapshot of the file system entries in the selected folder and store it in the underlying RavenDB database. While the snapshot is created, you can already view the processed results. Depending on the folder you choose, the analysis can take several minutes (many small files and folders decrease performance - I'm looking at you, node_modules
).
When you inspect an analysis, you have three tabs at the top: use the explorer to drill down into the target folder. Use the files and folders tabs to get flat access to all file system entries. The files tab also allows grouping over file extensions.
If you want to inspect the database, you can open your browser and go to http://localhost:10002 (the app must be running while accessing the web frontend of the database server).
You can use RavenDB for seven days without a license. Afterwards, just head over to ravendb.net and get a free license.
You can customize the settings by creating a file called appsettings.Development.json
next to the existing appsettings.json file. This file is automatically ignored by git. Simply assign new values in this file with the same keys, they will override the contents of appsettings.json.
File System Analyzer uses the following Open Source packages:
- Avalonia, Material.Avalonia, and Material.Icons.Avalonia
- Bogus
- FluentAssertions
- FuzzySharp
- Humanizer
- LightInject
- Light.GuardClauses
- Light.ViewModels
- Microsoft.Extensions.Configuration
- RavenDB
- Serilog
- Synnotech.Core, Synnotech.DatabaseAbstractions.Mocks Synnotech.FluentProcesses, Synnotech.RavenDB, and Synnotech.Time
- Verify
- xUnit.net