[![Build Status](https://worldbeater.visualstudio.com/Camelotia/_apis/build/status/Camelotia-CI)](https://worldbeater.visualstudio.com/Camelotia/_build/latest?definitionId=1) [![Pull Requests](https://img.shields.io/github/issues-pr/worldbeater/camelotia.svg)](https://github.com/worldbeater/Camelotia/pulls) [![Issues](https://img.shields.io/github/issues/worldbeater/camelotia.svg)](https://github.com/worldbeater/Camelotia/issues) ![License](https://img.shields.io/github/license/worldbeater/camelotia.svg) ![Size](https://img.shields.io/github/repo-size/worldbeater/camelotia.svg) File manager for cloud storages. Supports Yandex Disk, Google Drive, VK Documents, GitHub, FTP, SFTP. The app runs on Windows, Linux, MacOS, XBox, Surface Hub and HoloLens. Built with [ReactiveUI](https://github.com/reactiveui/ReactiveUI). ## Compiling Avalonia app You can compile .NET Standard libraries, run tests and run an Avalonia application on Windows, Linux and macOS operating systems. Make sure you have latest [.NET Core SDK](https://dot.net/) installed. ```sh # Linux or MacOS shell git clone https://github.com/worldbeater/Camelotia cd Camelotia/Camelotia.Presentation.Avalonia dotnet run ``` On Windows, double-click the `./run.bat` file. ## Compiling Universal Windows Platform app You can compile Universal Windows Platform Camelotia app only on latest Windows 10. Make sure you have latest [Microsoft Visual Studio](https://visualstudio.microsoft.com/) installed. Make sure the "Universal Application Development" section is checked in [Visual Studio Installer](https://visualstudio.microsoft.com/ru/vs/). Supports light and dark themes! ## Compiling Xamarin Forms app To compile the Xamarin Forms Android application, you need to install appropriate Android SDK v8.1. This can be achieved by using [Visual Studio Installer](https://visualstudio.microsoft.com/ru/vs/) and selecting "Mobile Development" section there. ### Adding Custom Providers File system providers are located at `./Camelotia.Services/Providers/`. To add a custom file system provider, you need to create a separate class and implement the [IProvider](https://github.com/worldbeater/Camelotia/blob/master/Camelotia.Services/Interfaces/IProvider.cs) interface. Then, add your provider to composition root for each platform that should support it. ### Technologies and Tools Used - ReactiveUI modern MVVM framework - Akavache persistent key-value store - AvaloniaUI cross-platform XAML-based GUI framework - NSubstitute mocking library - FluentAssertions assertions library - Xamarin.Forms mobile GUI framework - Universal Windows Platform SDK - Reactive Extensions for .NET - Octokit GitHub client library - FluentFTP FTP implementation - SSH.NET SFTP implementation - VkNet Vkontakte SDK for .NET - Google Drive SDK for .NET - JetBrains Rider and Microsoft Visual Studio IDEs