{"id":14963783,"url":"https://github.com/catel/catel","last_synced_at":"2025-05-13T18:12:40.276Z","repository":{"id":38419320,"uuid":"9501756","full_name":"Catel/Catel","owner":"Catel","description":"An application development platform","archived":false,"fork":false,"pushed_at":"2025-04-29T20:41:42.000Z","size":76317,"stargazers_count":889,"open_issues_count":14,"forks_count":141,"subscribers_count":55,"default_branch":"develop","last_synced_at":"2025-05-06T18:40:58.761Z","etag":null,"topics":["c-sharp","catel","mvvm","mvvm-architecture","mvvm-framework","windows","wpf"],"latest_commit_sha":null,"homepage":"https://www.catelproject.com","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Catel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":".github/support.yml","governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["Catel","GeertvanHorrik"],"patreon":null,"open_collective":"Catel","ko_fi":null,"tidelift":null,"custom":null}},"created_at":"2013-04-17T16:07:56.000Z","updated_at":"2025-04-30T12:59:41.000Z","dependencies_parsed_at":"2023-12-21T16:45:34.449Z","dependency_job_id":"f10ffe14-5775-48a3-a739-0174ff5ddc31","html_url":"https://github.com/Catel/Catel","commit_stats":{"total_commits":3980,"total_committers":66,"mean_commits":"60.303030303030305","dds":"0.34572864321608043","last_synced_commit":"c88897e54bf461ca4d72b8ccb45966d6425af382"},"previous_names":[],"tags_count":62,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Catel%2FCatel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Catel%2FCatel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Catel%2FCatel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Catel%2FCatel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Catel","download_url":"https://codeload.github.com/Catel/Catel/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253518944,"owners_count":21921074,"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":["c-sharp","catel","mvvm","mvvm-architecture","mvvm-framework","windows","wpf"],"created_at":"2024-09-24T13:32:08.463Z","updated_at":"2025-05-13T18:12:40.249Z","avatar_url":"https://github.com/Catel.png","language":"C#","readme":"Catel\n=====\n\nName|Badge\n---|---\nDownloads|![NuGet downloads](https://img.shields.io/nuget/dt/catel.core.svg)\nNuGet stable version|![Version](https://img.shields.io/nuget/v/catel.core.svg)\nNuGet unstable version|![Pre-release version](https://img.shields.io/nuget/vpre/catel.core.svg)\nMyGet unstable version|![Pre-release version](https://img.shields.io/myget/catel/vpre/catel.core.svg)\nOpen Collective|[![Backers on Open Collective](https://opencollective.com/Catel/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/Catel/sponsors/badge.svg)](#sponsors)\n\nCatel is an application development platform with the focus on MVVM (WPF, UWP, Xamarin.Android, Xamarin.iOS and Xamarin.Forms). \nThe goal of Catel is to provide a complete set of modular functionality for Line of Business applications written in any .NET \ntechnology, from client to server.\n\nCatel distinguishes itself by unique features to aid in the development of MVVM applications and server-side application \ndevelopment. Since Catel focuses on Line of Business applications, it provides professional support and excellent documentation \nwhich ensures a safe bet by professional companies and developers.\n\nFor documentation, please visit the [documentation portal](https://docs.catelproject.com)\n\n## Features and components\n\nBelow are a few features that are available in Catel.\n\n### Catel.Core\n\nCatel.Core is the library you want to include in all your projects, whether you are writing a UI project or not. It contains lots of useful helper methods. The\nmost important features are listed below:\n\n- Argument validation (e.g. `Argument.IsNotNull(() =\u003e myArgument)`)\n- Caching\n- Data (ModelBase, PropertyBag, Validation)\n- IoC (ServiceLocator, TypeFactory)\n- Logging (LogManager, Log, several log listeners)\n- Messaging\n- Reflection (same reflection API for *every supported platform*)\n- Serialization (BinarySerializer, XmlSerializer and more)\n- Weak references (WeakEventListener)\n\nAnd more.... \n\n### Catel.MVVM\n\nCatel.MVVM is the library you want to include when you are writing a UI project (e.g. WPF, UWP, Xamarin) and you want to use the MVVM pattern. Catel is the *only* MVVM library that has context-aware view and view-model creation, which can be used to solve the [nested user controls problem](https://docs.catelproject.com/vnext/introduction/mvvm/introduction-to-nested-user-controls-problem/). \n\nThe most important\nfeatures are listed below:\n\n- Auditing\n- Collections (FastObservableCollection)\n- Commands (Command, TaskCommand, etc)\n- Converters (tons of converters out of the box)\n- Services\n\t- CameraService\t\n\t- LocationService\n\t- MessageService\n\t- NavigationService\n\t- OpenFileService\n\t- PleaseWaitService\n\t- SaveFileService\n\t- UIVisualizerService\n- View models\n\t- Automatic validation\n\t- Automatic mappings from model to view model\n- Views\n\t- DataWindow\n\t- UserControl\n\t- Window\n\n## Example code\n\n### Models\n\nThis model has automatic change notifications and validation.\n\n```csharp\npublic class Person : ValidatableModelBase\n{\n    public string FirstName { get; set; }\n\n    public string LastName { get; set; }\n\n    protected override void ValidateFields(List\u003cIFieldValidationResult\u003e validationResults)\n    {\n        if (string.IsNullOrWhitespace(FirstName))\n        {\n            validationResults.Add(FieldValidationResult.CreateError(nameof(FirstName), \"First name is required\"));\n        }\n\n        if (string.IsNullOrWhitespace(LastName))\n        {\n            validationResults.Add(FieldValidationResult.CreateError(nameof(LastName), \"Last name is required\"));\n        }\n    }    \n}\n```\n\n### View models\n\nThis is a view model with:\n\n- Automatic injection of the DataContext\n- Automatic mapping of properties \u0026 validation from model =\u003e view model\n\n```csharp\npublic class PersonViewModel : ViewModelBase\n{\n    public PersonViewModel(Person person)\n    {\n        Argument.IsNotNull(() =\u003e person);\n\n        Person = person;\n    }\n\n    [Model]\n    private Person Person { get; set; }\n\n    [ViewModelToModel]\n    public string FirstName { get; set; }\n\n    [ViewModelToModel]\n    public string LastName { get; set; }\n}\n```\n\n## How to contribute\n\n### Support on Open Collective\n\nPlease consider supporting [Catel on Open Collective](https://opencollective.com/catel).\n\n### Translating\n\nTo add translations to Catel, the Multilingual App Toolkit (MAT) is required. \n\n1. Download the [MAT Editor](https://developer.microsoft.com/en-us/windows/develop/multilingual-app-toolkit)\n2. Open your specific language (or create it) in the `MultilingualResources` folder, e.g. `./src/Catel.MVVM/MultilingualResources/Catel.MVVM.nl.xlf`\n3. Edit the xlf file and create a pull request (PR) with only this file\n\n## Building Catel\n\n**Prerequisites** \n\nCatel requires Visual Studio 2019 to compile successfully. You also need to ensure you have the following features installed:\n\nNote that the `.vsconfig` in the src root should notify about missing components when opening the solution.\n\n- .NET desktop development\n- Universal Windows Platform development\n- Mobile development with .NET\n- .NET Core cross-platform development\n- Select the following components from Individual components\n  - Windows 10 SDK (10.0.16299.0) \n  - MSVC v141 and v142 (ARM, ARM64 and x64/x86) \n  - C++ ATL v141 and v142 (ARM, ARM64 and x86 \u0026 x64)  build tools\n  - C++ MFC v141 and v142 (ARM, ARM64 and x86 \u0026 x64) build tools\n- [Latest Version of .NET Core 3.0 Preview SDK](https://dotnet.microsoft.com/download/dotnet-core/3.0)\n  - Ensure you enable **Use previews of the .NET Core SDK** under Tools -\u003e Options -\u003e Projects and Solutions -\u003e .NET Core\n\nNote that you should run these commands using powershell in the root of the repository.\n\n### Running a build\n\n`.\\build.ps1 -target build`\n\n### Running a build with unit tests\n\n`.\\build.ps1 -target buildandtest`\n\n### Running a build with local packages\n\nNote that this assumes a local packages directory at `C:\\Source\\_packages`, which can be added to the NuGet feeds:\n\n![](doc/nuget_local_packages.png)\n\n`.\\build.ps1 -target buildandpackagelocal`\n\n## Apps using Catel\n\nThere are a lot of (both free \u0026 commercial) apps using Catel. This list provides a few examples that are built \nwith Catel:\n\n// todo: add wpf\n\n// todo: add uwp\n\n## WPF components based on Catel\n\nIf you are planning on using WPF, there is a huge set (60+) of free open-source components \navailable based on Catel. All these open source are developed by a company called WildGums \n(see https://www.wildgums.com) and provided to the community for free. The components are well \nmaintained and being used in several commercial WPF applications.\n\nFor more information, see https://github.com/wildgums\n\n## Tools for Catel\n * **[Analogy.LogViewer.CatelProject](https://github.com/Analogy-LogViewer/Analogy.LogViewer.CatelProject)** - Catel Log parser for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer).\n \n## Contributors\n\nThis project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].\n\u003ca href=\"graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/Catel/contributors.svg?width=890\u0026button=false\" /\u003e\u003c/a\u003e\n\n## Backers\n\nThank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/Catel#backer)]\n\n\u003ca href=\"https://opencollective.com/Catel#backers\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/backers.svg?width=890\"\u003e\u003c/a\u003e\n\n## Sponsors\n\nSupport this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/Catel#sponsor)]\n\n\u003ca href=\"https://opencollective.com/Catel/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/Catel/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/Catel/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n","funding_links":["https://github.com/sponsors/Catel","https://github.com/sponsors/GeertvanHorrik","https://opencollective.com/Catel","https://opencollective.com/catel"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatel%2Fcatel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatel%2Fcatel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatel%2Fcatel/lists"}