{"id":14965087,"url":"https://github.com/reactiveui/camelotia","last_synced_at":"2025-05-15T11:08:12.321Z","repository":{"id":37274520,"uuid":"158741385","full_name":"reactiveui/Camelotia","owner":"reactiveui","description":"Cross-platform sample .NET GUI for cloud file management.","archived":false,"fork":false,"pushed_at":"2025-04-28T23:45:12.000Z","size":6396,"stargazers_count":583,"open_issues_count":16,"forks_count":60,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-05-12T10:22:38.358Z","etag":null,"topics":["avalonia","avaloniaui","dotnet","dotnetcore","dynamicdata","linux","macos","microsoft-visual-studio","mvvm","reactive-programming","reactiveui","reactivex","solid-principles","unit-testing","uwp","windows","wpf","xamarin-forms","xunit"],"latest_commit_sha":null,"homepage":"https://www.reactiveui.net/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reactiveui.png","metadata":{"funding":{"github":["reactivemarbles"]},"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-11-22T19:12:07.000Z","updated_at":"2025-05-11T17:04:44.000Z","dependencies_parsed_at":"2024-04-10T19:57:45.554Z","dependency_job_id":"956c7efc-eedd-4480-8dac-90257c60ee80","html_url":"https://github.com/reactiveui/Camelotia","commit_stats":{"total_commits":228,"total_committers":13,"mean_commits":17.53846153846154,"dds":0.5701754385964912,"last_synced_commit":"1b7e86169e5993db3b44140872144bea4d1c3e81"},"previous_names":["worldbeater/camelotia"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FCamelotia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FCamelotia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FCamelotia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FCamelotia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactiveui","download_url":"https://codeload.github.com/reactiveui/Camelotia/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254328384,"owners_count":22052632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avalonia","avaloniaui","dotnet","dotnetcore","dynamicdata","linux","macos","microsoft-visual-studio","mvvm","reactive-programming","reactiveui","reactivex","solid-principles","unit-testing","uwp","windows","wpf","xamarin-forms","xunit"],"created_at":"2024-09-24T13:34:11.951Z","updated_at":"2025-05-15T11:08:12.298Z","avatar_url":"https://github.com/reactiveui.png","language":"C#","readme":"\u003cp\u003e\u003cimg src=\"images/horizontal.png\" alt=\"Camelotia\" height=\"50px\"\u003e\u003c/p\u003e\n\n[![Build](https://github.com/reactiveui/Camelotia/actions/workflows/ci-build.yml/badge.svg)](https://github.com/reactiveui/Camelotia/actions/workflows/ci-build.yml) [![Pull Requests](https://img.shields.io/github/issues-pr/reactiveui/camelotia.svg)](https://github.com/reactiveui/Camelotia/pulls) [![Issues](https://img.shields.io/github/issues/reactiveui/camelotia.svg)](https://github.com/reactiveui/Camelotia/issues) ![License](https://img.shields.io/github/license/reactiveui/camelotia.svg) ![Size](https://img.shields.io/github/repo-size/reactiveui/camelotia.svg) [![codecov](https://codecov.io/gh/reactiveui/Camelotia/branch/main/graph/badge.svg?token=dmQeHH4Us8)](https://codecov.io/gh/reactiveui/Camelotia)\n\nCamelotia is a sample cross-platform application built with reactive extensions, [ReactiveUI](https://github.com/reactiveui/ReactiveUI), and modern .NET UI frameworks. Camelotia is a file manager for cloud storages, it currently supports Yandex Disk, Google Drive, VK Documents, GitHub, FTP, SFTP, and local file systems. The app runs on Windows, Linux, MacOS, XBox, Surface Hub and HoloLens.\n\n### Compiling Avalonia app\n\n\u003cimg src=\"images/UiAvalonia.png\" width=\"550\"\u003e\n\nIn order to compile .NET Standard libraries, run tests and run the \u003ca href=\"https://github.com/avaloniaui\"\u003eAvalonia\u003c/a\u003e application on Windows, Linux or MacOS operating system make sure to have latest [.NET Core SDK](https://dot.net/) installed. Launch the `Camelotia.Avalonia.sln` file to browse or to edit source files. Camelotia uses [Nuke Build](https://github.com/nuke-build/nuke) to build and test the solution. Execute the following commands to run the build scripts on Linux or MacOS:\n\n```sh\n# Linux or MacOS shell. Launches the Avalonia app after build.\ngit clone https://github.com/worldbeater/Camelotia\ncd ./Camelotia \u0026\u0026 bash ./build.sh --interactive\n```\n\nOn Windows, execute the following command line:\n\n```sh\n# Windows command line. Launches the Avalonia app after build.\n# Use the '--full' option to compile Android, UWP and WPF apps as well.\n# Use the '--configuration Release' option to generate app packages.\ngit clone https://github.com/worldbeater/Camelotia\ncd ./Camelotia \u0026\u0026 powershell -ExecutionPolicy Unrestricted ./build.ps1 --interactive\n```\n\n### Compiling Universal Windows Platform app\n\n\u003cimg src=\"images/UiWindows.png\" width=\"550\"\u003e \n\n\u003ca href=\"https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide\"\u003eUniversal Windows Platform\u003c/a\u003e Camelotia app is compatible with Windows 10-based devices, such as PCs, Xbox One and HoloLens. The app can be compiled only on latest Windows 10. Make sure to 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/). Launch the `Camelotia.Uwp.sln` solution file.\n\n### Compiling Windows Presentation Foundation app\n\n\u003cimg src=\"images/UiPresentation.png\" width=\"550\"\u003e\n\nThe app was ported to WPF to make the cloud file manager controls reusable across most popular .NET implementations, so one could easily embed parts of Camelotia into their own applications by simply copying and pasting the source files. The app is also compatible with Windows versions lower than 10, such as Windows 7 or 8. To compile the WPF app, ensure the \"Desktop Development\" section is checked in [Visual Studio Installer](https://visualstudio.microsoft.com/ru/vs/). Then, open the `Camelotia.Wpf.sln` file in Visual Studio 2019.\n\n### Compiling Xamarin Forms app\n\n\u003cimg src=\"images/UiAndroid.png\" width=\"550\"\u003e \n\nTo compile the \u003ca href=\"https://docs.microsoft.com/en-us/xamarin/xamarin-forms/\"\u003eXamarin.Forms\u003c/a\u003e Android application, install the 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. Launch the `Camelotia.Xamarin.sln` solution file.\n\n### Technologies and Tools Used\n\n- \u003ca href=\"https://reactiveui.net/\"\u003eReactiveUI\u003c/a\u003e modern MVVM framework\n- \u003ca href=\"https://github.com/reactiveui/reactiveui.validation\"\u003eReactiveUI.Validation\u003c/a\u003e reactive validation library\n- \u003ca href=\"https://reactiveui.net/docs/handbook/events/\"\u003eReactiveUI.Events\u003c/a\u003e turning regular events into observables\n- \u003ca href=\"https://github.com/reactiveui/DynamicData\"\u003eDynamicData\u003c/a\u003e reactive collections\n- \u003ca href=\"https://github.com/avaloniaui\"\u003eAvaloniaUI\u003c/a\u003e cross-platform XAML-based GUI framework\n- \u003ca href=\"https://github.com/worldbeater/citrus.avalonia\"\u003eCitrus.Avalonia\u003c/a\u003e bright and modern AvaloniaUI theme\n- \u003ca href=\"https://github.com/reactiveui/Akavache\"\u003eAkavache\u003c/a\u003e persistent key-value store\n- \u003ca href=\"https://github.com/nuke-build/nuke\"\u003eNuke\u003c/a\u003e build automation system for C#/.NET\n- \u003ca href=\"https://github.com/xunit/xunit\"\u003eXUnit\u003c/a\u003e unit testing tool for .NET\n- \u003ca href=\"https://github.com/tonerdo/coverlet\"\u003eCoverlet\u003c/a\u003e code coverage analyzer\n- \u003ca href=\"https://github.com/nsubstitute/NSubstitute\"\u003eNSubstitute\u003c/a\u003e mocking library\n- \u003ca href=\"https://github.com/fluentassertions/fluentassertions\"\u003eFluentAssertions\u003c/a\u003e assertions library\n- \u003ca href=\"https://docs.microsoft.com/en-us/xamarin/xamarin-forms/\"\u003eXamarin.Forms\u003c/a\u003e mobile GUI framework\n- \u003ca href=\"https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide\"\u003eUniversal Windows Platform\u003c/a\u003e SDKs\n- \u003ca href=\"https://github.com/dotnet/reactive\"\u003eReactive Extensions\u003c/a\u003e for .NET\n- \u003ca href=\"https://github.com/octokit/octokit.net\"\u003eOctokit\u003c/a\u003e GitHub client library\n- \u003ca href=\"https://github.com/robinrodricks/FluentFTP\"\u003eFluentFTP\u003c/a\u003e FTP implementation\n- \u003ca href=\"https://github.com/sshnet/SSH.NET/\"\u003eSSH.NET\u003c/a\u003e SFTP implementation\n- \u003ca href=\"https://github.com/vknet/vk\"\u003eVkNet\u003c/a\u003e Vkontakte SDK for .NET\n- \u003ca href=\"https://github.com/googleapis/google-api-dotnet-client\"\u003eGoogle Drive\u003c/a\u003e client SDK for .NET\n- \u003ca href=\"https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit\"\u003eMaterial Design\u003c/a\u003e XAML controls and styles\n- \u003ca href=\"https://github.com/MahApps/MahApps.Metro\"\u003eMahApps Metro\u003c/a\u003e XAML controls and styled windows\n- \u003ca href=\"https://github.com/Fody/Costura\"\u003eCostura.Fody\u003c/a\u003e which embeds references as resources\n- \u003ca href=\"https://www.jetbrains.com/rider/\"\u003eJetBrains Rider\u003c/a\u003e and \u003ca href=\"https://visualstudio.microsoft.com/\"\u003eMicrosoft Visual Studio\u003c/a\u003e IDEs\n- \u003ca href=\"https://github.com/fornever/avaloniarider\"\u003eAvaloniaRider\u003c/a\u003e plugin for visual designer support\n","funding_links":["https://github.com/sponsors/reactivemarbles"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactiveui%2Fcamelotia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactiveui%2Fcamelotia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactiveui%2Fcamelotia/lists"}