<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>GitHub C# Daily Trending</title>
    <description>Daily Trending of C# in GitHub</description>
    <pubDate>Sat, 18 Apr 2026 01:32:51 GMT</pubDate>
    <link>http://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>Devolutions/UniGetUI</title>
      <link>https://github.com/Devolutions/UniGetUI</link>
      <description>&lt;p&gt;UniGetUI: The Graphical Interface for your package managers. Could be terribly described as a package manager manager to manage your package managers&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;WARNING: &lt;strong&gt;wingetui&lt;sub&gt;•&lt;/sub&gt;com&lt;/strong&gt; and &lt;strong&gt;unigetui&lt;sub&gt;•&lt;/sub&gt;com&lt;/strong&gt; are fake websites hosted by a third-party. please do NOT trust them&lt;/h1&gt; 
&lt;br /&gt; 
&lt;h2&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/icon.png&quot; height=&quot;40&quot; /&gt;Devolutions UniGetUI&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;Major announcement:&lt;/strong&gt; UniGetUI has entered its next chapter with Devolutions. Read the &lt;a href=&quot;https://devolutions.net/blog/2026/03/unigetui-enters-its-next-chapter-with-devolutions/&quot;&gt;blog post&lt;/a&gt; and the &lt;a href=&quot;https://www.globenewswire.com/news-release/2026/03/10/3253012/0/en/Devolutions-Acquires-UniGetUI-Strengthening-Security-and-Enterprise-Readiness.html&quot;&gt;official press release&lt;/a&gt;.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/Devolutions/UniGetUI/releases/latest/download/UniGetUI.Installer.exe&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/Devolutions/UniGetUI/total?style=for-the-badge&quot; alt=&quot;Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Devolutions/UniGetUI/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/Devolutions/UniGetUI?style=for-the-badge&quot; alt=&quot;Release Version Badge&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Devolutions/UniGetUI/issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/Devolutions/UniGetUI?style=for-the-badge&quot; alt=&quot;Issues Badge&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Devolutions/UniGetUI/issues?q=is%3Aissue+is%3Aclosed&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues-closed/Devolutions/UniGetUI?color=%238256d0&amp;amp;style=for-the-badge&quot; alt=&quot;Closed Issues Badge&quot; /&gt;&lt;/a&gt;&lt;br /&gt; UniGetUI is an intuitive GUI for the most common CLI package managers on Windows 10 and 11, including &lt;a href=&quot;https://learn.microsoft.com/en-us/windows/package-manager/&quot;&gt;WinGet&lt;/a&gt;, &lt;a href=&quot;https://scoop.sh/&quot;&gt;Scoop&lt;/a&gt;, &lt;a href=&quot;https://chocolatey.org/&quot;&gt;Chocolatey&lt;/a&gt;, &lt;a href=&quot;https://pypi.org/&quot;&gt;pip&lt;/a&gt;, &lt;a href=&quot;https://www.npmjs.com/&quot;&gt;npm&lt;/a&gt;, &lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-tool-install&quot;&gt;.NET Tool&lt;/a&gt;, &lt;a href=&quot;https://www.powershellgallery.com/&quot;&gt;PowerShell Gallery&lt;/a&gt;, and more. With UniGetUI, you can discover, install, update, and uninstall software from multiple package managers through one interface.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/7cb447ca-ee8b-4bce-8561-b9332fb0139a&quot; alt=&quot;image&quot; /&gt; View more screenshots &lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#screenshots&quot;&gt;here&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Check out the &lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#package-managers&quot;&gt;Package Managers&lt;/a&gt; section for more details!&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; UniGetUI is not affiliated with the package managers it integrates with. Packages are provided by third parties, so review sources and publishers before installation.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/Devolutions/UniGetUI/dotnet-test.yml?branch=main&amp;amp;style=for-the-badge&amp;amp;label=Tests&quot; alt=&quot;GitHub Actions Workflow Status&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-caution&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-stop mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Caution&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;The official website for UniGetUI is &lt;a href=&quot;https://devolutions.net/unigetui/&quot;&gt;https://devolutions.net/unigetui/&lt;/a&gt;.&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;The official source repository is &lt;a href=&quot;https://github.com/Devolutions/UniGetUI&quot;&gt;https://github.com/Devolutions/UniGetUI&lt;/a&gt;.&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;Any other website should be considered unofficial, despite what they may say.&lt;/strong&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;🔒 Found a security issue? Please report it via the &lt;a href=&quot;https://devolutions.net/security/&quot;&gt;Devolutions security page&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Project stewardship&lt;/h2&gt; 
&lt;p&gt;UniGetUI was created by Martí Climent and is now maintained by Devolutions. The project remains free, open source, and MIT-licensed. Devolutions&#39; stewardship brings long-term investment, structured governance, stronger security processes, and a roadmap for broader enterprise readiness while keeping UniGetUI standalone and community-driven.&lt;/p&gt; 
&lt;p&gt;Read more in the &lt;a href=&quot;https://devolutions.net/blog/2026/03/unigetui-enters-its-next-chapter-with-devolutions/&quot;&gt;Devolutions announcement&lt;/a&gt; and the &lt;a href=&quot;https://www.globenewswire.com/news-release/2026/03/10/3253012/0/en/Devolutions-Acquires-UniGetUI-Strengthening-Security-and-Enterprise-Readiness.html&quot;&gt;official press release&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Table of contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://devolutions.net/unigetui/&quot;&gt;UniGetUI Homepage&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#table-of-contents&quot;&gt;Table of contents&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#installation&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#update-unigetui&quot;&gt;Update UniGetUI&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#project-stewardship&quot;&gt;Project stewardship&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#features&quot;&gt;Features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#package-managers&quot;&gt;Package Managers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/TRANSLATION.md&quot;&gt;Translations&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#contributors&quot;&gt;Contributors&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#screenshots&quot;&gt;Screenshots&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/#frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/cli-arguments.md&quot;&gt;Command-line Arguments&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;There are multiple ways to install UniGetUI — choose whichever one you prefer!&lt;/p&gt; 
&lt;h3&gt;Microsoft Store installation (recommended)&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://apps.microsoft.com/detail/xpfftq032ptphf&quot;&gt;&lt;img alt=&quot;alt_text&quot; width=&quot;240px&quot; src=&quot;https://get.microsoft.com/images/en-us%20dark.svg?sanitize=true&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Download UniGetUI installer:&lt;/h3&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/Devolutions/UniGetUI?style=for-the-badge&quot; alt=&quot;GitHub Release&quot; /&gt;&lt;/p&gt; 
&lt;p align=&quot;left&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/Devolutions/UniGetUI/releases/latest/download/UniGetUI.Installer.exe&quot;&gt;Click here to download UniGetUI&lt;/a&gt;&lt;/b&gt;&lt;/p&gt; 
&lt;h3&gt;Install UniGetUI via WinGet:&lt;/h3&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/winget/v/Devolutions.UniGetUI?style=for-the-badge&quot; alt=&quot;WinGet Package Version&quot; /&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;winget install --exact --id Devolutions.UniGetUI --source winget
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Install UniGetUI via Scoop:&lt;/h3&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/scoop/v/unigetui?bucket=extras&amp;amp;style=for-the-badge&quot; alt=&quot;Scoop version&quot; /&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;scoop bucket add extras
scoop install extras/unigetui
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Install UniGetUI via Chocolatey:&lt;/h3&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/chocolatey/v/wingetui?style=for-the-badge&quot; alt=&quot;Chocolatey Version&quot; /&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;choco install wingetui
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Update UniGetUI&lt;/h2&gt; 
&lt;p&gt;UniGetUI has a built-in autoupdater. However, it can also be updated like any other package within UniGetUI (since UniGetUI is available from WinGet, Scoop and Chocolatey).&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Install, update, and remove software from your system easily at one click: UniGetUI combines the packages from the most used package managers for windows: Winget, Chocolatey, Scoop, Pip, Npm and .NET Tool.&lt;/li&gt; 
 &lt;li&gt;Discover new packages and filter them to easily find the package you want.&lt;/li&gt; 
 &lt;li&gt;View detailed metadata about any package before installing it. Get the direct download URL or the name of the publisher, as well as the size of the download.&lt;/li&gt; 
 &lt;li&gt;Easily bulk-install, update, or uninstall multiple packages at once selecting multiple packages before performing an operation&lt;/li&gt; 
 &lt;li&gt;Automatically update packages, or be notified when updates become available. Skip versions or completely ignore updates on a per-package basis.&lt;/li&gt; 
 &lt;li&gt;The system tray icon will also show the available updates and installed packages, to efficiently update a program or remove a package from your system.&lt;/li&gt; 
 &lt;li&gt;Easily customize how and where packages are installed. Select different installation options and switches for each package. Install an older version or force to install a 32 bit architecture. [But don&#39;t worry, those options will be saved for future updates for this package*]&lt;/li&gt; 
 &lt;li&gt;Share packages with your friends using generated package links.&lt;/li&gt; 
 &lt;li&gt;Export custom lists of packages to then import them to another machine and install those packages with previously specified, custom installation parameters. Setting up machines or configuring a specific software setup has never been easier.&lt;/li&gt; 
 &lt;li&gt;Backup your packages to a local file to easily recover your setup in a matter of seconds when migrating to a new machine*&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Package Managers&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; All package managers do support basic install, update, and uninstall processes, as well as checking for updates, finding new packages, and retrieving details from a package.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/supported-managers.svg?sanitize=true&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;✅: Supported on UniGetUI&lt;br /&gt; ☑️: Not directly supported but can be easily achieved&lt;br /&gt; ⚠️: May not work in some cases&lt;br /&gt; ❌: Not supported by the Package Manager&lt;br /&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;Translations&lt;/h2&gt; 
&lt;p&gt;UniGetUI translations are maintained directly in this repository. For the current language list, completion status, and per-language contributor attributions, see &lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/TRANSLATION.md&quot;&gt;TRANSLATION.md&lt;/a&gt;. If you spot a translation issue or want to improve a locale, please open an issue or submit a pull request.&lt;/p&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_1.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_2.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_3.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_4.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_5.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_6.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_7.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_8.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_9.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/media/UniGetUI_10.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Contributions&lt;/h2&gt; 
&lt;p&gt;UniGetUI continues to grow thanks to its community of contributors. Devolutions is grateful to everyone who contributes code, translations, documentation, testing, and feedback to the project.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/Devolutions/UniGetUI/graphs/contributors&quot;&gt;&lt;img src=&quot;https://contrib.rocks/image?repo=Devolutions/UniGetUI&quot; alt=&quot;Contributors&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;Frequently asked questions&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Q: I am unable to install or upgrade a specific Winget package! What should I do?&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;A: This is likely an issue with Winget rather than UniGetUI.&lt;/p&gt; 
&lt;p&gt;Please check if it&#39;s possible to install/upgrade the package through PowerShell or the Command Prompt by using the commands &lt;code&gt;winget upgrade&lt;/code&gt; or &lt;code&gt;winget install&lt;/code&gt;, depending on the situation (for example: &lt;code&gt;winget upgrade --id Microsoft.PowerToys&lt;/code&gt;).&lt;/p&gt; 
&lt;p&gt;If this doesn&#39;t work, consider asking for help at &lt;a href=&quot;https://github.com/microsoft/winget-cli&quot;&gt;Winget&#39;s project page&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;h1&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Q: The name of a package is trimmed with ellipsis — how do I see its full name/id?&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;A: This is a known limitation of Winget.&lt;/p&gt; 
&lt;p&gt;For more details, see this issue: &lt;a href=&quot;https://github.com/microsoft/winget-cli/issues/2603.&quot;&gt;https://github.com/microsoft/winget-cli/issues/2603.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h1&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Q: My antivirus is telling me that UniGetUI is a virus! / My browser is blocking the download of UniGetUI!&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;A: A common reason apps (i.e., executables) get blocked and/or detected as a virus — even when there&#39;s nothing malicious about them, like in the case of UniGetUI — is because a relatively large amount of people are not using them.&lt;/p&gt; 
&lt;p&gt;Combine that with the fact that you might be downloading something recently released, and blocking unknown apps is in many cases a good precaution to take to prevent actual malware.&lt;/p&gt; 
&lt;p&gt;Since UniGetUI is open source and safe to use, whitelist the app in the settings of your antivirus/browser.&lt;br /&gt;&lt;/p&gt; 
&lt;h1&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Q: Are Winget/Scoop packages safe?&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;A: UniGetUI, Microsoft, and Scoop aren&#39;t responsible for the packages available for download, which are provided by third parties and can theoretically be compromised.&lt;/p&gt; 
&lt;p&gt;Microsoft has implemented a few checks for the software available on Winget to mitigate the risks of downloading malware. Even so, it&#39;s recommended that you only download software from trusted publishers.&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;i&gt;Check out the &lt;a href=&quot;https://github.com/Devolutions/UniGetUI/wiki&quot;&gt;Wiki&lt;/a&gt; for more information!&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt; 
&lt;h2&gt;Command-line parameters:&lt;/h2&gt; 
&lt;p&gt;Check out the full list of parameters &lt;a href=&quot;https://raw.githubusercontent.com/Devolutions/UniGetUI/main/cli-arguments.md&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/377163326/3423f81d-7eee-4423-90cb-d8165a728798" medium="image" />
      
    </item>
    
    <item>
      <title>fullstackhero/dotnet-starter-kit</title>
      <link>https://github.com/fullstackhero/dotnet-starter-kit</link>
      <description>&lt;p&gt;Production Grade Cloud-Ready .NET 10 Starter Kit (Web API + Blazor Client) with Multitenancy Support, and Clean/Modular Architecture that saves roughly 200+ Development Hours! All Batteries Included.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;FullStackHero .NET 10 Starter Kit&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.nuget.org/packages/FullStackHero.CLI&quot;&gt;&lt;img src=&quot;https://img.shields.io/nuget/v/FullStackHero.CLI?label=fsh%20cli&quot; alt=&quot;NuGet&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.nuget.org/packages/FullStackHero.Framework.Web&quot;&gt;&lt;img src=&quot;https://img.shields.io/nuget/v/FullStackHero.Framework.Web?label=framework&quot; alt=&quot;NuGet&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-MIT-yellow.svg?sanitize=true&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;An opinionated, production-first starter for building multi-tenant SaaS and enterprise APIs on .NET 10. You get ready-to-ship Identity, Multitenancy, Auditing, Webhooks, caching, mailing, jobs, storage, health, OpenAPI, and OpenTelemetry — wired through Minimal APIs, Mediator, and EF Core.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;You get the complete source code — BuildingBlocks, Modules, and Playground — with full project references. No black-box NuGet packages; you own and can modify everything.&lt;/p&gt; 
&lt;h3&gt;Option 1: FSH CLI (recommended)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet tool install -g FullStackHero.CLI
fsh new MyApp
cd MyApp
dotnet run --project src/Playground/MyApp.AppHost
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The interactive wizard lets you pick your database provider and whether to include Aspire. Run &lt;code&gt;fsh doctor&lt;/code&gt; to verify your environment first.&lt;/p&gt; 
&lt;h3&gt;Option 2: dotnet new template&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet new install FullStackHero.NET.StarterKit
dotnet new fsh -n MyApp
cd MyApp
dotnet run --project src/Playground/MyApp.AppHost
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Option 3: Clone the repository&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/fullstackhero/dotnet-starter-kit.git MyApp
cd MyApp
dotnet restore src/FSH.Starter.slnx
dotnet run --project src/Playground/FSH.Starter.AppHost
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Option 4: GitHub Codespaces&lt;/h3&gt; 
&lt;p&gt;Click &lt;strong&gt;&quot;Use this template&quot;&lt;/strong&gt; on GitHub, or open in Codespaces for a zero-install experience with .NET 10, Docker, and Aspire pre-configured.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Prerequisites: &lt;a href=&quot;https://dotnet.microsoft.com/download&quot;&gt;.NET 10 SDK&lt;/a&gt;, &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt; (for Postgres/Redis via Aspire)&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;FSH CLI Commands&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;fsh new [name]&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create a new project with interactive wizard&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;fsh doctor&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Check your environment (SDK, Docker, Aspire, ports)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;fsh info&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Show CLI/template versions and available updates&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;fsh update&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Update CLI tool and template to latest&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Non-interactive with options
fsh new MyApp --db sqlserver --no-aspire --no-git

# Dry run (preview without creating)
fsh new MyApp --dry-run
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Why teams pick this&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Modular vertical slices: drop &lt;code&gt;Modules.Identity&lt;/code&gt;, &lt;code&gt;Modules.Multitenancy&lt;/code&gt;, &lt;code&gt;Modules.Auditing&lt;/code&gt;, &lt;code&gt;Modules.Webhooks&lt;/code&gt; into any API and let the module loader wire endpoints.&lt;/li&gt; 
 &lt;li&gt;Battle-tested building blocks: persistence + specifications, distributed caching, mailing, jobs via Hangfire, storage abstractions, and web host primitives (auth, rate limiting, versioning, CORS, exception handling).&lt;/li&gt; 
 &lt;li&gt;Cloud-ready out of the box: Aspire AppHost spins up Postgres + Redis + the Playground API with OTLP tracing enabled.&lt;/li&gt; 
 &lt;li&gt;Multi-tenant from day one: Finbuckle-powered tenancy across Identity and your module DbContexts; helpers to migrate and seed tenant databases on startup.&lt;/li&gt; 
 &lt;li&gt;Observability baked in: OpenTelemetry traces/metrics/logs, structured logging, health checks, and security/exception auditing.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Stack highlights&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;.NET 10, C# latest, Minimal APIs, Mediator for commands/queries, FluentValidation.&lt;/li&gt; 
 &lt;li&gt;EF Core 10 with domain events + specifications; Postgres by default, SQL Server ready.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Identity with JWT issuance/refresh, roles/permissions, rate-limited auth endpoints.&lt;/li&gt; 
 &lt;li&gt;Hangfire for background jobs; Redis-backed distributed cache; pluggable storage.&lt;/li&gt; 
 &lt;li&gt;API versioning, rate limiting, CORS, security headers, OpenAPI (Swagger) + Scalar docs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Repository map&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;src/BuildingBlocks&lt;/code&gt; — Core abstractions (DDD primitives, exceptions), Persistence, Caching, Mailing, Jobs, Storage, Web host wiring.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;src/Modules&lt;/code&gt; — &lt;code&gt;Identity&lt;/code&gt;, &lt;code&gt;Multitenancy&lt;/code&gt;, &lt;code&gt;Auditing&lt;/code&gt;, &lt;code&gt;Webhooks&lt;/code&gt; runtime + contracts projects.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;src/Playground&lt;/code&gt; — Reference host (&lt;code&gt;FSH.Starter.Api&lt;/code&gt;), Aspire app host (&lt;code&gt;FSH.Starter.AppHost&lt;/code&gt;), Postgres migrations.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;src/Tools/CLI&lt;/code&gt; — The &lt;code&gt;fsh&lt;/code&gt; CLI tool source code.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;src/Tests&lt;/code&gt; — Architecture tests that enforce layering and module boundaries.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;deploy&lt;/code&gt; — Docker, Dokploy, and Terraform deployment scaffolding.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Run it now (Aspire)&lt;/h2&gt; 
&lt;p&gt;Prereqs: .NET 10 SDK, Aspire workload, Docker running (for Postgres/Redis).&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Restore: &lt;code&gt;dotnet restore src/FSH.Starter.slnx&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Start everything: &lt;code&gt;dotnet run --project src/Playground/FSH.Starter.AppHost&lt;/code&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Aspire brings up Postgres + Redis containers, wires env vars, launches the Playground API, and enables OTLP export on &lt;a href=&quot;https://localhost:4317&quot;&gt;https://localhost:4317&lt;/a&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Hit the API: &lt;code&gt;https://localhost:5285&lt;/code&gt; (Swagger/Scalar and module endpoints under &lt;code&gt;/api/v1/...&lt;/code&gt;).&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Run the API only&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Set env vars or appsettings for &lt;code&gt;DatabaseOptions__Provider&lt;/code&gt;, &lt;code&gt;DatabaseOptions__ConnectionString&lt;/code&gt;, &lt;code&gt;DatabaseOptions__MigrationsAssembly&lt;/code&gt;, &lt;code&gt;CachingOptions__Redis&lt;/code&gt;, and JWT options.&lt;/li&gt; 
 &lt;li&gt;Run: &lt;code&gt;dotnet run --project src/Playground/FSH.Starter.Api&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;The host applies migrations/seeding via &lt;code&gt;UseHeroMultiTenantDatabases()&lt;/code&gt; and maps module endpoints via &lt;code&gt;UseHeroPlatform&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Bring the framework into your API&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Reference the building block and module projects you need.&lt;/li&gt; 
 &lt;li&gt;In &lt;code&gt;Program.cs&lt;/code&gt;: 
  &lt;ul&gt; 
   &lt;li&gt;Register Mediator with assemblies containing your commands/queries and module handlers.&lt;/li&gt; 
   &lt;li&gt;Call &lt;code&gt;builder.AddHeroPlatform(...)&lt;/code&gt; to enable auth, OpenAPI, caching, mailing, jobs, health, OTel, rate limiting.&lt;/li&gt; 
   &lt;li&gt;Call &lt;code&gt;builder.AddModules(moduleAssemblies)&lt;/code&gt; and &lt;code&gt;app.UseHeroPlatform(p =&amp;gt; p.MapModules = true);&lt;/code&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Configure connection strings, Redis, JWT, CORS, and OTel endpoints via configuration. Example wiring lives in &lt;code&gt;src/Playground/FSH.Starter.Api/Program.cs&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Included modules&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Identity&lt;/strong&gt; — &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Identity + JWT issuance/refresh, user/role/permission management, profile image storage, login/refresh auditing, health checks.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multitenancy&lt;/strong&gt; — Tenant provisioning, migrations, status/upgrade APIs, tenant-aware EF Core contexts, health checks.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Auditing&lt;/strong&gt; — Security/exception/activity auditing with queryable endpoints; plugs into global exception handling and Identity events.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Webhooks&lt;/strong&gt; — Tenant-scoped webhook subscriptions with HMAC-signed delivery, retry policies, and delivery logs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Development notes&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Target framework: &lt;code&gt;net10.0&lt;/code&gt;; nullable enabled; analyzers on.&lt;/li&gt; 
 &lt;li&gt;Tests: &lt;code&gt;dotnet test src/FSH.Starter.slnx&lt;/code&gt; (includes architecture guardrails).&lt;/li&gt; 
 &lt;li&gt;Want the deeper story? Start with &lt;code&gt;docs/framework/architecture.md&lt;/code&gt; and the developer cookbook in &lt;code&gt;docs/framework/developer-cookbook.md&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Built and maintained by Mukesh Murugan for teams that want to ship faster without sacrificing architecture discipline.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/398181340/56ba8c18-45c6-4242-afad-b684fd7c5bd1" medium="image" />
      
    </item>
    
    <item>
      <title>kgrzybek/modular-monolith-with-ddd</title>
      <link>https://github.com/kgrzybek/modular-monolith-with-ddd</link>
      <description>&lt;p&gt;Full Modular Monolith application with Domain-Driven Design approach.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Modular Monolith with DDD&lt;/h1&gt; 
&lt;p&gt;Full Modular Monolith .NET application with Domain-Driven Design approach.&lt;/p&gt; 
&lt;h2&gt;Announcement&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/glory_to_ukraine.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Learn, use and benefit from this project only if:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;You &lt;strong&gt;condemn Russia and its military aggression against Ukraine&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;You &lt;strong&gt;recognize that Russia is an occupant that unlawfully invaded a sovereign state&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;You &lt;strong&gt;support Ukraine&#39;s territorial integrity, including its claims over temporarily occupied territories of Crimea and Donbas&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;You &lt;strong&gt;reject false narratives perpetuated by Russian state propaganda&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Otherwise, leave this project immediately and educate yourself.&lt;/p&gt; 
&lt;p&gt;Putin, idi nachuj.&lt;/p&gt; 
&lt;h2&gt;CI&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/kgrzybek/modular-monolith-with-ddd/workflows/Build%20Pipeline/badge.svg?sanitize=true&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;FrontEnd application&lt;/h2&gt; 
&lt;p&gt;FrontEnd application : &lt;a href=&quot;https://github.com/kgrzybek/modular-monolith-with-ddd-fe-react&quot;&gt;Modular Monolith With DDD: FrontEnd React application&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Table of contents&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#1-introduction&quot;&gt;1. Introduction&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#11-purpose-of-this-repository&quot;&gt;1.1 Purpose of this Repository&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#12-out-of-scope&quot;&gt;1.2 Out of Scope&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#13-reason&quot;&gt;1.3 Reason&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#14-disclaimer&quot;&gt;1.4 Disclaimer&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#15-give-a-star&quot;&gt;1.5 Give a Star&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#16-share-it&quot;&gt;1.6 Share It&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#2-domain&quot;&gt;2. Domain&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#21-description&quot;&gt;2.1 Description&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#22-conceptual-model&quot;&gt;2.2 Conceptual Model&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#23-event-storming&quot;&gt;2.3 Event Storming&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#3-architecture&quot;&gt;3. Architecture&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#30-c4-model&quot;&gt;3.0 C4 Model&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#31-high-level-view&quot;&gt;3.1 High Level View&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#32-module-level-view&quot;&gt;3.2 Module Level View&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#33-api-and-module-communication&quot;&gt;3.3 API and Module Communication&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#34-module-requests-processing-via-cqrs&quot;&gt;3.4 Module Requests Processing via CQRS&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#35-domain-model-principles-and-attributes&quot;&gt;3.5 Domain Model Principles and Attributes&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#36-cross-cutting-concerns&quot;&gt;3.6 Cross-Cutting Concerns&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#37-modules-integration&quot;&gt;3.7 Modules Integration&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#38-internal-processing&quot;&gt;3.8 Internal Processing&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#39-security&quot;&gt;3.9 Security&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#310-unit-tests&quot;&gt;3.10 Unit Tests&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#311-architecture-decision-log&quot;&gt;3.11 Architecture Decision Log&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#312-architecture-unit-tests&quot;&gt;3.12 Architecture Unit Tests&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#313-integration-tests&quot;&gt;3.13 Integration Tests&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#314-system-integration-testing&quot;&gt;3.14 System Integration Testing&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#315-event-sourcing&quot;&gt;3.15 Event Sourcing&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#316-database-change-management&quot;&gt;3.16 Database change management&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#317-continuous-integration&quot;&gt;3.17 Continuous Integration&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#318-static-code-analysis&quot;&gt;3.18 Static code analysis&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#319-system-under-test-sut&quot;&gt;3.19 System Under Test SUT&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#320-mutation-testing&quot;&gt;3.20 Mutation Testing&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#4-technology&quot;&gt;4. Technology&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#5-how-to-run&quot;&gt;5. How to Run&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#6-contribution&quot;&gt;6. Contribution&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#7-roadmap&quot;&gt;7. Roadmap&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#8-authors&quot;&gt;8. Authors&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#9-license&quot;&gt;9. License&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#10-inspirations-and-recommendations&quot;&gt;10. Inspirations and Recommendations&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;1. Introduction&lt;/h2&gt; 
&lt;h3&gt;1.1 Purpose of this Repository&lt;/h3&gt; 
&lt;p&gt;This is a list of the main goals of this repository:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Showing how you can implement a &lt;strong&gt;monolith&lt;/strong&gt; application in a &lt;strong&gt;modular&lt;/strong&gt; way&lt;/li&gt; 
 &lt;li&gt;Presentation of the &lt;strong&gt;full implementation&lt;/strong&gt; of an application 
  &lt;ul&gt; 
   &lt;li&gt;This is not another simple application&lt;/li&gt; 
   &lt;li&gt;This is not another proof of concept (PoC)&lt;/li&gt; 
   &lt;li&gt;The goal is to present the implementation of an application that would be ready to run in production&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Showing the application of &lt;strong&gt;best practices&lt;/strong&gt; and &lt;strong&gt;object-oriented programming principles&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Presentation of the use of &lt;strong&gt;design patterns&lt;/strong&gt;. When, how and why they can be used&lt;/li&gt; 
 &lt;li&gt;Presentation of some &lt;strong&gt;architectural&lt;/strong&gt; considerations, decisions, approaches&lt;/li&gt; 
 &lt;li&gt;Presentation of the implementation using &lt;strong&gt;Domain-Driven Design&lt;/strong&gt; approach (&lt;strong&gt;tactical&lt;/strong&gt; patterns)&lt;/li&gt; 
 &lt;li&gt;Presentation of the implementation of &lt;strong&gt;Unit Tests&lt;/strong&gt; for Domain Model (Testable Design in mind)&lt;/li&gt; 
 &lt;li&gt;Presentation of the implementation of &lt;strong&gt;Integration Tests&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Presentation of the implementation of &lt;strong&gt;Event Sourcing&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Presentation of &lt;strong&gt;C4 Model&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Presentation of &lt;strong&gt;diagram as text&lt;/strong&gt; approach&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;1.2 Out of Scope&lt;/h3&gt; 
&lt;p&gt;This is a list of subjects which are out of scope for this repository:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Business requirements gathering and analysis&lt;/li&gt; 
 &lt;li&gt;System analysis&lt;/li&gt; 
 &lt;li&gt;Domain exploration&lt;/li&gt; 
 &lt;li&gt;Domain distillation&lt;/li&gt; 
 &lt;li&gt;Domain-Driven Design &lt;strong&gt;strategic&lt;/strong&gt; patterns&lt;/li&gt; 
 &lt;li&gt;Architecture evaluation, quality attributes analysis&lt;/li&gt; 
 &lt;li&gt;Integration, system tests&lt;/li&gt; 
 &lt;li&gt;Project management&lt;/li&gt; 
 &lt;li&gt;Infrastructure&lt;/li&gt; 
 &lt;li&gt;Containerization&lt;/li&gt; 
 &lt;li&gt;Software engineering process&lt;/li&gt; 
 &lt;li&gt;Deployment process&lt;/li&gt; 
 &lt;li&gt;Maintenance&lt;/li&gt; 
 &lt;li&gt;Documentation&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;1.3 Reason&lt;/h3&gt; 
&lt;p&gt;The reason for creating this repository is the lack of something similar. Most sample applications on GitHub have at least one of the following issues:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Very, very simple - few entities and use cases implemented&lt;/li&gt; 
 &lt;li&gt;Not finished (for example there is no authentication, logging, etc..)&lt;/li&gt; 
 &lt;li&gt;Poorly designed (in my opinion)&lt;/li&gt; 
 &lt;li&gt;Poorly implemented (in my opinion)&lt;/li&gt; 
 &lt;li&gt;Not well described&lt;/li&gt; 
 &lt;li&gt;Assumptions and decisions are not clearly explained&lt;/li&gt; 
 &lt;li&gt;Implements &quot;Orders&quot; domain - yes, everyone knows this domain, but something different is needed&lt;/li&gt; 
 &lt;li&gt;Implemented in old technology&lt;/li&gt; 
 &lt;li&gt;Not maintained&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To sum up, there are some very good examples, but there are far too few of them. This repository has the task of filling this gap at some level.&lt;/p&gt; 
&lt;h3&gt;1.4 Disclaimer&lt;/h3&gt; 
&lt;p&gt;Software architecture should always be created to resolve specific &lt;strong&gt;business problems&lt;/strong&gt;. Software architecture always supports some quality attributes and at the same time does not support others. A lot of other factors influence your software architecture - your team, opinions, preferences, experiences, technical constraints, time, budget, etc.&lt;/p&gt; 
&lt;p&gt;Always functional requirements, quality attributes, technical constraints and other factors should be considered before an architectural decision is made.&lt;/p&gt; 
&lt;p&gt;Because of the above, the architecture and implementation presented in this repository is &lt;strong&gt;one of the many ways&lt;/strong&gt; to solve some problems. Take from this repository as much as you want, use it as you like but remember to &lt;strong&gt;always pick the best solution which is appropriate to the problem class you have&lt;/strong&gt;.&lt;/p&gt; 
&lt;h3&gt;1.5 Give a Star&lt;/h3&gt; 
&lt;p&gt;My primary focus in this project is on quality. Creating a good quality product involves a lot of analysis, research and work. It takes a lot of time. If you like this project, learned something or you are using it in your applications, please give it a star ⭐. This is the best motivation for me to continue this work. Thanks!&lt;/p&gt; 
&lt;h3&gt;1.6 Share It&lt;/h3&gt; 
&lt;p&gt;There are very few really good examples of this type of application. If you think this repository makes a difference and is worth it, please share it with your friends and on social networks. I will be extremely grateful.&lt;/p&gt; 
&lt;h2&gt;2. Domain&lt;/h2&gt; 
&lt;h3&gt;2.1 Description&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Domain - A sphere of knowledge, influence, or activity. The subject area to which the user applies a program is the domain of the software. &lt;a href=&quot;http://domainlanguage.com/ddd/reference/&quot;&gt;Domain-Driven Design Reference&lt;/a&gt;, Eric Evans&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The &lt;strong&gt;Meeting Groups&lt;/strong&gt; domain was selected for the purposes of this project based on the &lt;a href=&quot;https://www.meetup.com/&quot;&gt;Meetup.com&lt;/a&gt; system.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Main reasons for selecting this domain:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;It is common, a lot of people use the Meetup site to organize or attend meetings&lt;/li&gt; 
 &lt;li&gt;There is a system for it, so everyone can check this implementation against a working site which supports this domain&lt;/li&gt; 
 &lt;li&gt;It is not complex so it is easy to understand&lt;/li&gt; 
 &lt;li&gt;It is not trivial - there are some business rules and logic and it is not just CRUD operations&lt;/li&gt; 
 &lt;li&gt;You don&#39;t need much specific domain knowledge unlike other domains like financing, banking, medical&lt;/li&gt; 
 &lt;li&gt;It is not big so it is easier to implement&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Meetings&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The main business entities are &lt;code&gt;Member&lt;/code&gt;, &lt;code&gt;Meeting Group&lt;/code&gt; and &lt;code&gt;Meeting&lt;/code&gt;. A &lt;code&gt;Member&lt;/code&gt; can create a &lt;code&gt;Meeting Group&lt;/code&gt;, be part of a &lt;code&gt;Meeting Group&lt;/code&gt; or can attend a &lt;code&gt;Meeting&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;A &lt;code&gt;Meeting Group Member&lt;/code&gt; can be an &lt;code&gt;Organizer&lt;/code&gt; of this group or a normal &lt;code&gt;Member&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Only an &lt;code&gt;Organizer&lt;/code&gt; of a &lt;code&gt;Meeting Group&lt;/code&gt; can create a new &lt;code&gt;Meeting&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;A &lt;code&gt;Meeting&lt;/code&gt; has attendees, not attendees (&lt;code&gt;Members&lt;/code&gt; which declare they will not attend the &lt;code&gt;Meeting&lt;/code&gt;) and &lt;code&gt;Members&lt;/code&gt; on the &lt;code&gt;Waitlist&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;A &lt;code&gt;Meeting&lt;/code&gt; can have an attendee limit. If the limit is reached, &lt;code&gt;Members&lt;/code&gt; can only sign up to the &lt;code&gt;Waitlist&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;A &lt;code&gt;Meeting Attendee&lt;/code&gt; can bring guests to the &lt;code&gt;Meeting&lt;/code&gt;. The number of guests allowed is an attribute of the &lt;code&gt;Meeting&lt;/code&gt;. Bringing guests can be unallowed.&lt;/p&gt; 
&lt;p&gt;A &lt;code&gt;Meeting Attendee&lt;/code&gt; can have one of two roles: &lt;code&gt;Attendee&lt;/code&gt; or &lt;code&gt;Host&lt;/code&gt;. A &lt;code&gt;Meeting&lt;/code&gt; must have at least one &lt;code&gt;Host&lt;/code&gt;. The &lt;code&gt;Host&lt;/code&gt; is a special role which grants permission to edit &lt;code&gt;Meeting&lt;/code&gt; information or change the attendees list.&lt;/p&gt; 
&lt;p&gt;A &lt;code&gt;Member&lt;/code&gt; can comment &lt;code&gt;Meetings&lt;/code&gt;. A &lt;code&gt;Member&lt;/code&gt; can reply to, like other &lt;code&gt;Comments&lt;/code&gt;. &lt;code&gt;Organizer&lt;/code&gt; manages commenting of &lt;code&gt;Meeting&lt;/code&gt; by &lt;code&gt;Meeting Commenting Configuration&lt;/code&gt;. &lt;code&gt;Organizer&lt;/code&gt; can delete any &lt;code&gt;Comment&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Each &lt;code&gt;Meeting Group&lt;/code&gt; must have an organizer with active &lt;code&gt;Subscription&lt;/code&gt;. One organizer can cover 3 &lt;code&gt;Meeting Groups&lt;/code&gt; by his &lt;code&gt;Subscription&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Additionally, Meeting organizer can set an &lt;code&gt;Event Fee&lt;/code&gt;. Each &lt;code&gt;Meeting Attendee&lt;/code&gt; is obliged to pay the fee. All guests should be paid by &lt;code&gt;Meeting Attendee&lt;/code&gt; too.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Administration&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;To create a new &lt;code&gt;Meeting Group&lt;/code&gt;, a &lt;code&gt;Member&lt;/code&gt; needs to propose the group. A &lt;code&gt;Meeting Group Proposal&lt;/code&gt; is sent to &lt;code&gt;Administrators&lt;/code&gt;. An &lt;code&gt;Administrator&lt;/code&gt; can accept or reject a &lt;code&gt;Meeting Group Proposal&lt;/code&gt;. If a &lt;code&gt;Meeting Group Proposal&lt;/code&gt; is accepted, a &lt;code&gt;Meeting Group&lt;/code&gt; is created.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Payments&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Each &lt;code&gt;Member&lt;/code&gt; who is the &lt;code&gt;Payer&lt;/code&gt; can buy the &lt;code&gt;Subscription&lt;/code&gt;. He needs to pay the &lt;code&gt;Subscription Payment&lt;/code&gt;. &lt;code&gt;Subscription&lt;/code&gt; can expire so &lt;code&gt;Subscription Renewal&lt;/code&gt; is required (by &lt;code&gt;Subscription Renewal Payment&lt;/code&gt; payment to keep &lt;code&gt;Subscription&lt;/code&gt; active).&lt;/p&gt; 
&lt;p&gt;When the &lt;code&gt;Meeting&lt;/code&gt; fee is required, the &lt;code&gt;Payer&lt;/code&gt; needs to pay &lt;code&gt;Meeting Fee&lt;/code&gt; (through &lt;code&gt;Meeting Fee Payment&lt;/code&gt;).&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Users&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Each &lt;code&gt;Administrator&lt;/code&gt;, &lt;code&gt;Member&lt;/code&gt; and &lt;code&gt;Payer&lt;/code&gt; is a &lt;code&gt;User&lt;/code&gt;. To be a &lt;code&gt;User&lt;/code&gt;, &lt;code&gt;User Registration&lt;/code&gt; is required and confirmed.&lt;/p&gt; 
&lt;p&gt;Each &lt;code&gt;User&lt;/code&gt; is assigned one or more &lt;code&gt;User Role&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Each &lt;code&gt;User Role&lt;/code&gt; has set of &lt;code&gt;Permissions&lt;/code&gt;. A &lt;code&gt;Permission&lt;/code&gt; defines whether &lt;code&gt;User&lt;/code&gt; can invoke a particular action.&lt;/p&gt; 
&lt;h3&gt;2.2 Conceptual Model&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Conceptual Model - A conceptual model is a representation of a system, made of the composition of concepts that are used to help people know, understand, or simulate a subject the model represents. &lt;a href=&quot;https://en.wikipedia.org/wiki/Conceptual_model&quot;&gt;Wikipedia - Conceptual model&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;Conceptual Model&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;PlantUML version: &lt;img src=&quot;https://www.plantuml.com/plantuml/proxy?cache=no&amp;amp;src=https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/PlantUML/Conceptual_Model.puml&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;VisualParadigm version (not maintained, only for demonstration): &lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/Conceptual_Model.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Conceptual Model of commenting feature&lt;/strong&gt; &lt;img src=&quot;https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/PlantUML/Commenting_Conceptual_Model.puml&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;2.3 Event Storming&lt;/h3&gt; 
&lt;p&gt;While a Conceptual Model focuses on structures and relationships between them, &lt;strong&gt;behavior&lt;/strong&gt; and &lt;strong&gt;events&lt;/strong&gt; that occur in our domain are more important.&lt;/p&gt; 
&lt;p&gt;There are many ways to show behavior and events. One of them is a light technique called &lt;a href=&quot;https://www.eventstorming.com/&quot;&gt;Event Storming&lt;/a&gt; which is becoming more popular. Below are presented 3 main business processes using this technique: user registration, meeting group creation and meeting organization.&lt;/p&gt; 
&lt;p&gt;Note: Event Storming is a light, live workshop. One of the possible outputs of this workshop is presented here. Even if you are not doing Event Storming workshops, this type of process presentation can be very valuable to you and your stakeholders.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;User Registration process&lt;/strong&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/User_Registration.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;strong&gt;Meeting Group creation&lt;/strong&gt; &lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/Meeting_Group_Creation.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;strong&gt;Meeting organization&lt;/strong&gt; &lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/Meeting_Organization.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;strong&gt;Payments&lt;/strong&gt; &lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/Payments_EventStorming_Design.jpg&quot; alt=&quot;&quot; /&gt; &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/Payments_EventStorming_Design_HighRes.jpg&quot;&gt;Download high resolution file&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;3. Architecture&lt;/h2&gt; 
&lt;h3&gt;3.0 C4 Model&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://c4model.com/&quot;&gt;C4 model&lt;/a&gt; is a lean graphical notation technique for modelling the architecture of software systems. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;As can be found on the website of the author of this model (&lt;a href=&quot;https://simonbrown.je/&quot;&gt;Simon Brown&lt;/a&gt;): &lt;em&gt;The C4 model was created as a way to help software development teams describe and communicate software architecture, both during up-front design sessions and when retrospectively documenting an existing codebase&lt;/em&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;Model C4&lt;/em&gt; defines 4 levels (views) of the system architecture: &lt;em&gt;System Context&lt;/em&gt;, &lt;em&gt;Container&lt;/em&gt;, &lt;em&gt;Component&lt;/em&gt; and &lt;em&gt;Code&lt;/em&gt;. Below are examples of each of these levels that describe the architecture of this system. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;Note: The &lt;a href=&quot;https://plantuml.com/&quot;&gt;PlantUML&lt;/a&gt; (diagram as text) component was used to describe all C4 model levels. Additionally, for levels C1-C3, a &lt;a href=&quot;https://github.com/plantuml-stdlib/C4-PlantUML&quot;&gt;C4-PlantUML&lt;/a&gt; plug-in connecting PlantUML with the C4 model was used&lt;/em&gt;.&lt;/p&gt; 
&lt;h4&gt;3.0.1 C1 System Context&lt;/h4&gt; 
&lt;p&gt;&lt;img src=&quot;http://www.plantuml.com/plantuml/png/7OrDgeD048JtxnGl1z0ca5LMGWuYutIZulIqz0_6d3vZDbLG5Dytc2VruF9tMsikWHHQ_XVttPu0cev-Nds9AOmqItMgtcTXs6Rzd1Djm89HadOiLKgxTiSLY0YSp4a19Hky7f3levrjuV77UNk_Nzg1AhR-0W00&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;3.0.2 C2 Container&lt;/h4&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/C4/C2_Containers.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;3.0.3 C3 Component (high-level)&lt;/h4&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/C4/C3_Components.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;3.0.4 C3 Component (module-level)&lt;/h4&gt; 
&lt;p&gt;&lt;img src=&quot;http://www.plantuml.com/plantuml/png/jLHFRzCm5B_dKsI1GojjBOKn5QH9wxeTAgrem7QUdEGrjHJRaVqCgX3V7QVUl7XkbnA2BusUVt_y_7xrXK8YKRCoEi8rC8Yhab0U7L6UbJg7U8rOgS_ZiIG_HmN5jKwr0fa9Zi1nb0asDWHU2vmep4kQZkUd9xTrwNvvCsP48KXJUfWBLWbUSwhQB9hbkIlTaMAGC02al539SVmsBUQY5F8yUNEQmRkpZyamn9ESKKuLIe9KS9y57zBfsNGN2twOBtMfNzYy_pIPJ4bTMmcEJzNLTXcPwFj68R27Iw5vJkHca4sEusIvYPUFXuuj81d6lwBOB0TacoV8hA8lEBFRXIFKovrqGBROUj_yZBvStvaz2PRWuFR3CtjKNefSbs2epifMd5lWwAWBlf94eTGPQjcK6Faxxc0tD9N6kxuw98KwVvxZiCLgLbKbpRRJQ_eqoZsON0b6gATlApr8BpX2OTDtlKrLqoNOx6vubJvtGv0qnveJ9BMmojR0oAkIlwCmB_vVoALcvfNRi-FB10dovGxEaQ-Q30yoRsOgS6vizcnhCnKwsdhFPc7k0jy0qlq8BeC-i4vYu1laiSN4fTBp-gf1my0zr4REzX3RLpjPy9W14yqc7DXA6raZ77s3qhwaUn-tUmM64W8RIV5HkvLw8Be4XHnVj3CXZCtV7P0WEOpXXk7WZL7uIMWTY0_VUxklg_u7aLstlzUcLt8unkvD42JjxFR1-gn_2L-tlY-0vvgLVm00&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;3.0.5 C4 Code (meeting group aggregate)&lt;/h4&gt; 
&lt;p&gt;&lt;img src=&quot;http://www.plantuml.com/plantuml/png/5OqxheD0303xTugN0x1kg58XvI3HObk0yAwHFqB9wGFDJ3FIJ1xL8flyFRQEaiHfyhz67Fu4i7gMPOirvtGsr1xSew0ss1VxVcRUeIcbL1kQTfKh7SuRH0IjUh01AJgyHi3nZLBTot7V9kvq-GS0&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;3.1 High Level View&lt;/h3&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/Architecture_high_level.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Module descriptions:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;API&lt;/strong&gt; - Very thin &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; MVC Core REST API application. Main responsibilities are: 
  &lt;ol&gt; 
   &lt;li&gt;Accept request&lt;/li&gt; 
   &lt;li&gt;Authenticate and authorize request (using User Access module)&lt;/li&gt; 
   &lt;li&gt;Delegate work to specific module sending Command or Query&lt;/li&gt; 
   &lt;li&gt;Return response&lt;/li&gt; 
  &lt;/ol&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;User Access&lt;/strong&gt; - responsible for user authentication and authorization&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Registrations&lt;/strong&gt; - responsible for user registration&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Meetings&lt;/strong&gt; - implements Meetings Bounded Context: creating meeting groups, meetings&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Administration&lt;/strong&gt; - implements Administration Bounded Context: implements administrative tasks like meeting group proposal verification&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Payments&lt;/strong&gt; - implements Payments Bounded Context: implements all functionalities associated with payments&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;In Memory Events Bus&lt;/strong&gt; - Publish/Subscribe implementation to asynchronously integrate all modules using events (&lt;a href=&quot;https://en.wikipedia.org/wiki/Event-driven_architecture&quot;&gt;Event Driven Architecture&lt;/a&gt;).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Key assumptions:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;API contains no application logic&lt;/li&gt; 
 &lt;li&gt;API communicates with Modules using a small interface to send Queries and Commands&lt;/li&gt; 
 &lt;li&gt;Each Module has its own interface which is used by API&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Modules communicate each other only asynchronously using Events Bus&lt;/strong&gt; - direct method calls are not allowed&lt;/li&gt; 
 &lt;li&gt;Each Module &lt;strong&gt;has it&#39;s own data&lt;/strong&gt; in a separate schema - shared data is not allowed 
  &lt;ul&gt; 
   &lt;li&gt;Module data could be moved into separate databases if desired&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Modules can only have a dependency on the integration events assembly of other Module (see &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#32-module-level-view&quot;&gt;Module level view&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Each Module has its own &lt;a href=&quot;https://freecontent.manning.com/dependency-injection-in-net-2nd-edition-understanding-the-composition-root/&quot;&gt;Composition Root&lt;/a&gt;, which implies that each Module has its own Inversion-of-Control container&lt;/li&gt; 
 &lt;li&gt;API as a host needs to initialize each module and each module has an initialization method&lt;/li&gt; 
 &lt;li&gt;Each Module is &lt;strong&gt;highly encapsulated&lt;/strong&gt; - only required types and members are public, the rest are internal or private&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;3.2 Module Level View&lt;/h3&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/Module_level_diagram.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Each Module has &lt;a href=&quot;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&quot;&gt;Clean Architecture&lt;/a&gt; and consists of the following submodules (assemblies):&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Application&lt;/strong&gt; - the application logic submodule which is responsible for requests processing: use cases, domain events, integration events, internal commands.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Domain&lt;/strong&gt; - Domain Model in Domain-Driven Design terms implements the applicable &lt;a href=&quot;https://martinfowler.com/bliki/BoundedContext.html&quot;&gt;Bounded Context&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Infrastructure&lt;/strong&gt; - infrastructural code responsible for module initialization, background processing, data access, communication with Events Bus and other external components or systems&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;IntegrationEvents&lt;/strong&gt; - &lt;strong&gt;Contracts&lt;/strong&gt; published to the Events Bus; only this assembly can be called by other modules&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/VSSolution.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Application, Domain and Infrastructure assemblies could be merged into one assembly. Some people like horizontal layering or more decomposition, some don&#39;t. Implementing the Domain Model or Infrastructure in separate assembly allows encapsulation using the &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/internal&quot;&gt;&lt;code&gt;internal&lt;/code&gt;&lt;/a&gt; keyword. Sometimes Bounded Context logic is not worth it because it is too simple. As always, be pragmatic and take whatever approach you like.&lt;/p&gt; 
&lt;h3&gt;3.3 API and Module Communication&lt;/h3&gt; 
&lt;p&gt;The API only communicates with Modules in two ways: during module initialization and request processing.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Module initialization&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Each module has a static &lt;code&gt;Initialize&lt;/code&gt; method which is invoked in the API &lt;code&gt;Startup&lt;/code&gt; class. All configuration needed by this module should be provided as arguments to this method. All services are configured during initialization and the Composition Root is created using the Inversion-of-Control Container.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public static void Initialize(
    string connectionString,
    IExecutionContextAccessor executionContextAccessor,
    ILogger logger,
    EmailsConfiguration emailsConfiguration)
{
    var moduleLogger = logger.ForContext(&quot;Module&quot;, &quot;Meetings&quot;);

    ConfigureCompositionRoot(connectionString, executionContextAccessor, moduleLogger, emailsConfiguration);

    QuartzStartup.Initialize(moduleLogger);

    EventsBusStartup.Initialize(moduleLogger);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Request processing&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Each module has the same interface signature exposed to the API. It contains 3 methods: command with result, command without result and query.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IMeetingsModule
{
    Task&amp;lt;TResult&amp;gt; ExecuteCommandAsync&amp;lt;TResult&amp;gt;(ICommand&amp;lt;TResult&amp;gt; command);

    Task ExecuteCommandAsync(ICommand command);

    Task&amp;lt;TResult&amp;gt; ExecuteQueryAsync&amp;lt;TResult&amp;gt;(IQuery&amp;lt;TResult&amp;gt; query);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Some people say that processing a command should not return a result. This is an understandable approach but sometimes impractical, especially when you want to immediately return the ID of a newly created resource. Sometimes the boundary between Command and Query is blurry. One example is &lt;code&gt;AuthenticateCommand&lt;/code&gt; - it returns a token but it is not a query because it has a side effect.&lt;/p&gt; 
&lt;h3&gt;3.4 Module Requests Processing via CQRS&lt;/h3&gt; 
&lt;p&gt;Processing of Commands and Queries is separated by applying the architectural style/pattern &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs&quot;&gt;Command Query Responsibility Segregation (CQRS)&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/CQRS.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Commands are processed using &lt;em&gt;Write Model&lt;/em&gt; which is implemented using DDD tactical patterns:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;internal class CreateNewMeetingGroupCommandHandler : ICommandHandler&amp;lt;CreateNewMeetingGroupCommand&amp;gt;
{
    private readonly IMeetingGroupRepository _meetingGroupRepository;
    private readonly IMeetingGroupProposalRepository _meetingGroupProposalRepository;

    internal CreateNewMeetingGroupCommandHandler(
        IMeetingGroupRepository meetingGroupRepository,
        IMeetingGroupProposalRepository meetingGroupProposalRepository)
    {
        _meetingGroupRepository = meetingGroupRepository;
        _meetingGroupProposalRepository = meetingGroupProposalRepository;
    }

    public async Task Handle(CreateNewMeetingGroupCommand request, CancellationToken cancellationToken)
    {
        var meetingGroupProposal = await _meetingGroupProposalRepository.GetByIdAsync(request.MeetingGroupProposalId);

        var meetingGroup = meetingGroupProposal.CreateMeetingGroup();

        await _meetingGroupRepository.AddAsync(meetingGroup);

        
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Queries are processed using &lt;em&gt;Read Model&lt;/em&gt; which is implemented by executing raw SQL statements on database views:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;internal class GetAllMeetingGroupsQueryHandler : IQueryHandler&amp;lt;GetAllMeetingGroupsQuery, List&amp;lt;MeetingGroupDto&amp;gt;&amp;gt;
{
    private readonly ISqlConnectionFactory _sqlConnectionFactory;

    internal GetAllMeetingGroupsQueryHandler(ISqlConnectionFactory sqlConnectionFactory)
    {
        _sqlConnectionFactory = sqlConnectionFactory;
    }

    public async Task&amp;lt;List&amp;lt;MeetingGroupDto&amp;gt;&amp;gt; Handle(GetAllMeetingGroupsQuery request, CancellationToken cancellationToken)
    {
        var connection = _sqlConnectionFactory.GetOpenConnection();

        const string sql = $&quot;&quot;&quot;
                           SELECT 
                                [MeetingGroup].[Id] as [{nameof(MeetingGroupDto.Id)}] , 
                                [MeetingGroup].[Name] as [{nameof(MeetingGroupDto.Name)}], 
                                [MeetingGroup].[Description] as [{nameof(MeetingGroupDto.Description)}] 
                                [MeetingGroup].[LocationCountryCode] as [{nameof(MeetingGroupDto.LocationCountryCode)}],
                                [MeetingGroup].[LocationCity] as [{nameof(MeetingGroupDto.LocationCity)}]
                           FROM [meetings].[v_MeetingGroups] AS [MeetingGroup]
                           &quot;&quot;&quot;;
        var meetingGroups = await connection.QueryAsync&amp;lt;MeetingGroupDto&amp;gt;(sql);

        return meetingGroups.AsList();
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Key advantages:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Solution is appropriate to the problem - reading and writing needs are usually different&lt;/li&gt; 
 &lt;li&gt;Supports &lt;a href=&quot;https://en.wikipedia.org/wiki/Single_responsibility_principle&quot;&gt;Single Responsibility Principle&lt;/a&gt; (SRP) - one handler does one thing&lt;/li&gt; 
 &lt;li&gt;Supports &lt;a href=&quot;https://en.wikipedia.org/wiki/Interface_segregation_principle&quot;&gt;Interface Segregation Principle&lt;/a&gt; (ISP) - each handler implements interface with exactly one method&lt;/li&gt; 
 &lt;li&gt;Supports &lt;a href=&quot;https://refactoring.com/catalog/introduceParameterObject.html&quot;&gt;Parameter Object pattern&lt;/a&gt; - Commands and Queries are objects which are easy to serialize/deserialize&lt;/li&gt; 
 &lt;li&gt;Easy way to apply &lt;a href=&quot;https://en.wikipedia.org/wiki/Decorator_pattern&quot;&gt;Decorator pattern&lt;/a&gt; to handle cross-cutting concerns&lt;/li&gt; 
 &lt;li&gt;Supports Loose Coupling by use of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Mediator_pattern&quot;&gt;Mediator pattern&lt;/a&gt; - separates invoker of request from handler of request&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Disadvantage:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Mediator pattern introduces extra indirection and is harder to reason about which class handles the request&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For more information: &lt;a href=&quot;https://www.kamilgrzybek.com/design/simple-cqrs-implementation-with-raw-sql-and-ddd/&quot;&gt;Simple CQRS implementation with raw SQL and DDD&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;3.5 Domain Model Principles and Attributes&lt;/h3&gt; 
&lt;p&gt;The Domain Model, which is the central and most critical part in the system, should be designed with special attention. Here are some key principles and attributes which are applied to Domain Models of each module:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;High level of encapsulation&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;All members are &lt;code&gt;private&lt;/code&gt; by default, then &lt;code&gt;internal&lt;/code&gt; - only &lt;code&gt;public&lt;/code&gt; at the very edge.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;High level of PI (Persistence Ignorance)&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;No dependencies to infrastructure, databases, etc. All classes are &lt;a href=&quot;https://en.wikipedia.org/wiki/Plain_old_CLR_object&quot;&gt;POCOs&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Rich in behavior&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;All business logic is located in the Domain Model. No leaks to the application layer or elsewhere.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Low level of Primitive Obsession&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Primitive attributes of Entites grouped together using ValueObjects.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Business language&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;All classes, methods and other members are named in business language used in this Bounded Context.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Testable&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The Domain Model is a critical part of the system so it should be easy to test (Testable Design).&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class MeetingGroup : Entity, IAggregateRoot
{
    public MeetingGroupId Id { get; private set; }

    private string _name;

    private string _description;

    private MeetingGroupLocation _location;

    private MemberId _creatorId;

    private List&amp;lt;MeetingGroupMember&amp;gt; _members;

    private DateTime _createDate;

    private DateTime? _paymentDateTo;

    internal static MeetingGroup CreateBasedOnProposal(
        MeetingGroupProposalId meetingGroupProposalId,
        string name,
        string description,
        MeetingGroupLocation location, MemberId creatorId)
    {
        return new MeetingGroup(meetingGroupProposalId, name, description, location, creatorId);
    }

     public Meeting CreateMeeting(
            string title,
            MeetingTerm term,
            string description,
            MeetingLocation location,
            int? attendeesLimit,
            int guestsLimit,
            Term rsvpTerm,
            MoneyValue eventFee,
            List&amp;lt;MemberId&amp;gt; hostsMembersIds,
            MemberId creatorId)
        {
            this.CheckRule(new MeetingCanBeOrganizedOnlyByPayedGroupRule(_paymentDateTo));

            this.CheckRule(new MeetingHostMustBeAMeetingGroupMemberRule(creatorId, hostsMembersIds, _members));

            return new Meeting(this.Id,
                title,
                term,
                description,
                location,
                attendeesLimit,
                guestsLimit,
                rsvpTerm,
                eventFee,
                hostsMembersIds,
                creatorId);
        }
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3.6 Cross-Cutting Concerns&lt;/h3&gt; 
&lt;p&gt;To support &lt;a href=&quot;https://en.wikipedia.org/wiki/Single_responsibility_principle&quot;&gt;Single Responsibility Principle&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Don%27t_repeat_yourself&quot;&gt;Don&#39;t Repeat Yourself&lt;/a&gt; principles, the implementation of cross-cutting concerns is done using the &lt;a href=&quot;https://en.wikipedia.org/wiki/Decorator_pattern&quot;&gt;Decorator Pattern&lt;/a&gt;. Each Command processor is decorated by 3 decorators: logging, validation and unit of work.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/Decorator.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Logging&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The Logging decorator logs execution, arguments and processing of each Command. This way each log inside a processor has the log context of the processing command.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;internal class LoggingCommandHandlerDecorator&amp;lt;T&amp;gt; : ICommandHandler&amp;lt;T&amp;gt; where T:ICommand
{
    private readonly ILogger _logger;
    private readonly IExecutionContextAccessor _executionContextAccessor;
    private readonly ICommandHandler&amp;lt;T&amp;gt; _decorated;

    public LoggingCommandHandlerDecorator(
        ILogger logger,
        IExecutionContextAccessor executionContextAccessor,
        ICommandHandler&amp;lt;T&amp;gt; decorated)
    {
        _logger = logger;
        _executionContextAccessor = executionContextAccessor;
        _decorated = decorated;
    }
    public async Task Handle(T command, CancellationToken cancellationToken)
    {
        if (command is IRecurringCommand)
        {
            return await _decorated.Handle(command, cancellationToken);
        }
        using (
            LogContext.Push(
                new RequestLogEnricher(_executionContextAccessor),
                new CommandLogEnricher(command)))
        {
            try
            {
                this._logger.Information(
                    &quot;Executing command {Command}&quot;,
                    command.GetType().Name);

                var result = await _decorated.Handle(command, cancellationToken);

                this._logger.Information(&quot;Command {Command} processed successful&quot;, command.GetType().Name);

                return result;
            }
            catch (Exception exception)
            {
                this._logger.Error(exception, &quot;Command {Command} processing failed&quot;, command.GetType().Name);
                throw;
            }
        }
    }

    private class CommandLogEnricher : ILogEventEnricher
    {
        private readonly ICommand _command;

        public CommandLogEnricher(ICommand command)
        {
            _command = command;
        }
        public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
        {
            logEvent.AddOrUpdateProperty(new LogEventProperty(&quot;Context&quot;, new ScalarValue($&quot;Command:{_command.Id.ToString()}&quot;)));
        }
    }

    private class RequestLogEnricher : ILogEventEnricher
    {
        private readonly IExecutionContextAccessor _executionContextAccessor;
        public RequestLogEnricher(IExecutionContextAccessor executionContextAccessor)
        {
            _executionContextAccessor = executionContextAccessor;
        }
        public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
        {
            if (_executionContextAccessor.IsAvailable)
            {
                logEvent.AddOrUpdateProperty(new LogEventProperty(&quot;CorrelationId&quot;, new ScalarValue(_executionContextAccessor.CorrelationId)));
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Validation&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The Validation decorator performs Command data validation. It checks rules against Command arguments using the FluentValidation library.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;internal class ValidationCommandHandlerDecorator&amp;lt;T&amp;gt; : ICommandHandler&amp;lt;T&amp;gt; where T:ICommand
{
    private readonly IList&amp;lt;IValidator&amp;lt;T&amp;gt;&amp;gt; _validators;
    private readonly ICommandHandler&amp;lt;T&amp;gt; _decorated;

    public ValidationCommandHandlerDecorator(
        IList&amp;lt;IValidator&amp;lt;T&amp;gt;&amp;gt; validators,
        ICommandHandler&amp;lt;T&amp;gt; decorated)
    {
        this._validators = validators;
        _decorated = decorated;
    }

    public Task&amp;lt;Unit&amp;gt; Handle(T command, CancellationToken cancellationToken)
    {
        var errors = _validators
            .Select(v =&amp;gt; v.Validate(command))
            .SelectMany(result =&amp;gt; result.Errors)
            .Where(error =&amp;gt; error != null)
            .ToList();

        if (errors.Any())
        {
            var errorBuilder = new StringBuilder();

            errorBuilder.AppendLine(&quot;Invalid command, reason: &quot;);

            foreach (var error in errors)
            {
                errorBuilder.AppendLine(error.ErrorMessage);
            }

            throw new InvalidCommandException(errorBuilder.ToString(), null);
        }

        return _decorated.Handle(command, cancellationToken);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Unit Of Work&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;All Command processing has side effects. To avoid calling commit on every handler, &lt;code&gt;UnitOfWorkCommandHandlerDecorator&lt;/code&gt; is used. It additionally marks &lt;code&gt;InternalCommand&lt;/code&gt; as processed (if it is Internal Command) and dispatches all Domain Events (as part of &lt;a href=&quot;https://martinfowler.com/eaaCatalog/unitOfWork.html&quot;&gt;Unit Of Work&lt;/a&gt;).&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class UnitOfWorkCommandHandlerDecorator&amp;lt;T&amp;gt; : ICommandHandler&amp;lt;T&amp;gt; where T:ICommand
{
    private readonly ICommandHandler&amp;lt;T&amp;gt; _decorated;
    private readonly IUnitOfWork _unitOfWork;
    private readonly MeetingsContext _meetingContext;

    public UnitOfWorkCommandHandlerDecorator(
        ICommandHandler&amp;lt;T&amp;gt; decorated,
        IUnitOfWork unitOfWork,
        MeetingsContext meetingContext)
    {
        _decorated = decorated;
        _unitOfWork = unitOfWork;
        _meetingContext = meetingContext;
    }

    public async Task Handle(T command, CancellationToken cancellationToken)
    {
        await this._decorated.Handle(command, cancellationToken);

        if (command is InternalCommandBase)
        {
            var internalCommand =
                await _meetingContext.InternalCommands.FirstOrDefaultAsync(x =&amp;gt; x.Id == command.Id,
                    cancellationToken: cancellationToken);

            if (internalCommand != null)
            {
                internalCommand.ProcessedDate = DateTime.UtcNow;
            }
        }

        await this._unitOfWork.CommitAsync(cancellationToken);

        
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3.7 Modules Integration&lt;/h3&gt; 
&lt;p&gt;Integration between modules is strictly &lt;strong&gt;asynchronous&lt;/strong&gt; using Integration Events and the In Memory Event Bus as broker. In this way coupling between modules is minimal and exists only on the structure of Integration Events.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Modules don&#39;t share data&lt;/strong&gt; so it is not possible nor desirable to create a transaction which spans more than one module. To ensure maximum reliability, the &lt;a href=&quot;http://www.kamilgrzybek.com/design/the-outbox-pattern/&quot;&gt;Outbox / Inbox pattern&lt;/a&gt; is used. This pattern provides accordingly &lt;em&gt;&quot;At-Least-Once delivery&quot;&lt;/em&gt; and &lt;em&gt;&quot;At-Least-Once processing&quot;&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/OutboxInbox.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;The Outbox and Inbox is implemented using two SQL tables and a background worker for each module. The background worker is implemented using the &lt;a href=&quot;http://Quartz.NET&quot;&gt;Quartz.NET&lt;/a&gt; library.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Saving to Outbox:&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/OutboxSave.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Processing Outbox:&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/OutboxProcessing.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;3.8 Internal Processing&lt;/h3&gt; 
&lt;p&gt;The main principle of this system is that you can change its state only by calling a specific Command.&lt;/p&gt; 
&lt;p&gt;Commands can be called not only by the API, but by the processing module itself. The main use case which implements this mechanism is data processing in eventual consistency mode when we want to process something in a different process and transaction. This applies, for example, to Inbox processing because we want to do something (calling a Command) based on an Integration Event from the Inbox.&lt;/p&gt; 
&lt;p&gt;This idea is taken from Alberto&#39;s Brandolini&#39;s Event Storming picture called &quot;The picture that explains “almost” everything&quot; which shows that every side effect (domain event) is created by invoking a Command on Aggregate. See &lt;a href=&quot;https://xebia.com/blog/eventstorming-cheat-sheet/&quot;&gt;EventStorming cheat sheet&lt;/a&gt; article for more details.&lt;/p&gt; 
&lt;p&gt;Implementation of internal processing is very similar to implementation of the Outbox and Inbox. One SQL table and one background worker for processing. Each internally processing Command must inherit from &lt;code&gt;InternalCommandBase&lt;/code&gt; class:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;internal abstract class InternalCommandBase : ICommand
{
    public Guid Id { get; }

    protected InternalCommandBase(Guid id)
    {
        this.Id = id;
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This is important because the &lt;code&gt;UnitOfWorkCommandHandlerDecorator&lt;/code&gt; must mark an internal Command as processed during committing:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task Handle(T command, CancellationToken cancellationToken)
{
    await this._decorated.Handle(command, cancellationToken);

    if (command is InternalCommandBase)
    {
        var internalCommand =
            await _meetingContext.InternalCommands.FirstOrDefaultAsync(x =&amp;gt; x.Id == command.Id,
                cancellationToken: cancellationToken);

        if (internalCommand != null)
        {
            internalCommand.ProcessedDate = DateTime.UtcNow;
        }
    }

    await this._unitOfWork.CommitAsync(cancellationToken);

    
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3.9 Security&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Authentication is implemented using JWT Token and Bearer scheme using IdentityServer. For now, only one authentication method is implemented: forms style authentication (username and password) via the OAuth2 &lt;a href=&quot;https://www.oauth.com/oauth2-servers/access-tokens/password-grant/&quot;&gt;Resource Owner Password Grant Type&lt;/a&gt;. It requires implementation of the &lt;code&gt;IResourceOwnerPasswordValidator&lt;/code&gt; interface:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class ResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
{
    private readonly IUserAccessModule _userAccessModule;

    public ResourceOwnerPasswordValidator(IUserAccessModule userAccessModule)
    {
        _userAccessModule = userAccessModule;
    }

    public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
    {
        var authenticationResult = await _userAccessModule.ExecuteCommandAsync(new AuthenticateCommand(context.UserName, context.Password));
        if (!authenticationResult.IsAuthenticated)
        {
            context.Result = new GrantValidationResult(
                TokenRequestErrors.InvalidGrant,
                authenticationResult.AuthenticationError);
            return;
        }
        context.Result = new GrantValidationResult(
            authenticationResult.User.Id.ToString(),
            &quot;forms&quot;,
            authenticationResult.User.Claims);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Authorization&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Authorization is achieved by implementing &lt;a href=&quot;https://en.wikipedia.org/wiki/Role-based_access_control&quot;&gt;RBAC (Role Based Access Control)&lt;/a&gt; using Permissions. Permissions are more granular and a much better way to secure your application than Roles alone. Each User has a set of Roles and each Role contains one or more Permission. The User&#39;s set of Permissions is extracted from all Roles the User belongs to. Permissions are always checked on &lt;code&gt;Controller&lt;/code&gt; level - never Roles:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;[HttpPost]
[Route(&quot;&quot;)]
[HasPermission(MeetingsPermissions.ProposeMeetingGroup)]
public async Task&amp;lt;IActionResult&amp;gt; ProposeMeetingGroup(ProposeMeetingGroupRequest request)
{
    await _meetingsModule.ExecuteCommandAsync(
        new ProposeMeetingGroupCommand(
            request.Name,
            request.Description,
            request.LocationCity,
            request.LocationCountryCode));

    return Ok();
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3.10 Unit Tests&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;A unit test is an automated piece of code that invokes the unit of work being tested, and then checks some assumptions about a single end result of that unit. A unit test is almost always written using a unit testing framework. It can be written easily and runs quickly. It’s trustworthy, readable, and maintainable. It’s consistent in its results as long as production code hasn’t changed. &lt;a href=&quot;https://www.manning.com/books/the-art-of-unit-testing-second-edition&quot;&gt;Art of Unit Testing 2nd Edition&lt;/a&gt; Roy Osherove&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;Attributes of good unit test&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Automated&lt;/li&gt; 
 &lt;li&gt;Maintainable&lt;/li&gt; 
 &lt;li&gt;Runs very fast (in ms)&lt;/li&gt; 
 &lt;li&gt;Consistent, Deterministic (always the same result)&lt;/li&gt; 
 &lt;li&gt;Isolated from other tests&lt;/li&gt; 
 &lt;li&gt;Readable&lt;/li&gt; 
 &lt;li&gt;Can be executed by anyone&lt;/li&gt; 
 &lt;li&gt;Testing public API, not internal behavior (overspecification)&lt;/li&gt; 
 &lt;li&gt;Looks like production code&lt;/li&gt; 
 &lt;li&gt;Treated as production code&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Implementation&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Unit tests should mainly test business logic (domain model): &lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/unit_tests.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Each unit test has 3 standard sections: Arrange, Act and Assert:&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/UnitTestsGeneral.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;1. Arrange&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The Arrange section is responsible for preparing the Aggregate for testing the public method that we want to test. This public method is often called (from the unit tests perspective) the SUT (system under test).&lt;/p&gt; 
&lt;p&gt;Creating an Aggregate ready for testing involves &lt;strong&gt;calling one or more other public constructors/methods&lt;/strong&gt; on the Domain Model. At first it may seem that we are testing too many things at the same time, but this is not true. We need to be one hundred percent sure that the Aggregate is in a state exactly as it will be in production. This can only be ensured when we:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Use only public API of Domain Model&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Don&#39;t use &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.internalsvisibletoattribute?view=netframework-4.8&quot;&gt;InternalsVisibleToAttribute&lt;/a&gt; class 
  &lt;ul&gt; 
   &lt;li&gt;This exposes the Domain Model to the Unit Tests library, removing encapsulation so our tests and production code are treated differently and it is a very bad thing&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Don&#39;t use &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.conditionalattribute?view=netframework-4.8&quot;&gt;ConditionalAttribute&lt;/a&gt; classes - it reduces readability and increases complexity&lt;/li&gt; 
 &lt;li&gt;Don&#39;t create any special constructors/factory methods for tests (even with conditional compilation symbols) 
  &lt;ul&gt; 
   &lt;li&gt;Special constructor/factory method only for unit tests causes duplication of business logic in the test itself and focuses on state - this kind of approach causes the test to be very sensitive to changes and hard to maintain&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Don&#39;t remove encapsulation from Domain Model (for example: change keywords from &lt;code&gt;internal&lt;/code&gt;/&lt;code&gt;private&lt;/code&gt; to &lt;code&gt;public&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Don&#39;t make methods &lt;code&gt;protected&lt;/code&gt; to inherit from tested class and in this way provide access to internal methods/properties&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Isolation of external dependencies&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;There are 2 main concepts - stubs and mocks:&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;A stub is a controllable replacement for an existing dependency (or collaborator) in the system. By using a stub, you can test your code without dealing with the dependency directly.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;A mock object is a fake object in the system that decides whether the unit test has passed or failed. It does so by verifying whether the object under test called the fake object as expected. There’s usually no more than one mock per test. &lt;a href=&quot;https://www.manning.com/books/the-art-of-unit-testing-second-edition&quot;&gt;Art of Unit Testing 2nd Edition&lt;/a&gt; Roy Osherove&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Good advice: use stubs if you need to, but try to avoid mocks. Mocking causes us to test too many internal things and leads to overspecification.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2. Act&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;This section is very easy - we execute &lt;strong&gt;exactly one&lt;/strong&gt; public method on aggregate (SUT).&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3. Assert&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;In this section we check expectations. There are only 2 possible outcomes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Method completed and Domain Event(s) published&lt;/li&gt; 
 &lt;li&gt;Business rule was broken&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Simple example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;[Test]
public void NewUserRegistration_WithUniqueLogin_IsSuccessful()
{
    // Arrange
    var usersCounter = Substitute.For&amp;lt;IUsersCounter&amp;gt;();

    // Act
    var userRegistration =
        UserRegistration.RegisterNewUser(
            &quot;login&quot;, &quot;password&quot;, &quot;test@email&quot;,
            &quot;firstName&quot;, &quot;lastName&quot;, usersCounter);

    // Assert
    var newUserRegisteredDomainEvent = AssertPublishedDomainEvent&amp;lt;NewUserRegisteredDomainEvent&amp;gt;(userRegistration);
    Assert.That(newUserRegisteredDomainEvent.UserRegistrationId, Is.EqualTo(userRegistration.Id));
}

[Test]
public void NewUserRegistration_WithoutUniqueLogin_BreaksUserLoginMustBeUniqueRule()
{
    // Arrange
    var usersCounter = Substitute.For&amp;lt;IUsersCounter&amp;gt;();
    usersCounter.CountUsersWithLogin(&quot;login&quot;).Returns(x =&amp;gt; 1);

    // Assert
    AssertBrokenRule&amp;lt;UserLoginMustBeUniqueRule&amp;gt;(() =&amp;gt;
    {
        // Act
        UserRegistration.RegisterNewUser(
            &quot;login&quot;, &quot;password&quot;, &quot;test@email&quot;,
            &quot;firstName&quot;, &quot;lastName&quot;, usersCounter);
    });
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Advanced example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;[Test]
public void AddAttendee_WhenMemberIsAlreadyAttendeeOfMeeting_IsNotPossible()
{
    // Arrange
    var creatorId = new MemberId(Guid.NewGuid());
    var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions
    {
        CreatorId = creatorId
    });
    var newMemberId = new MemberId(Guid.NewGuid());
    meetingTestData.MeetingGroup.JoinToGroupMember(newMemberId);
    meetingTestData.Meeting.AddAttendee(meetingTestData.MeetingGroup, newMemberId, 0);

    // Assert
    AssertBrokenRule&amp;lt;MemberCannotBeAnAttendeeOfMeetingMoreThanOnceRule&amp;gt;(() =&amp;gt;
    {
        // Act
        meetingTestData.Meeting.AddAttendee(meetingTestData.MeetingGroup, newMemberId, 0);
    });
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;CreateMeetingTestData&lt;/code&gt; method is an implementation of &lt;a href=&quot;https://blog.ploeh.dk/2009/02/13/SUTFactory/&quot;&gt;SUT Factory&lt;/a&gt; described by Mark Seemann which allows keeping common creation logic in one place:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;protected MeetingTestData CreateMeetingTestData(MeetingTestDataOptions options)
{
    var proposalMemberId = options.CreatorId ?? new MemberId(Guid.NewGuid());
    var meetingProposal = MeetingGroupProposal.ProposeNew(
        &quot;name&quot;, &quot;description&quot;,
        new MeetingGroupLocation(&quot;Warsaw&quot;, &quot;PL&quot;), proposalMemberId);

    meetingProposal.Accept();

    var meetingGroup = meetingProposal.CreateMeetingGroup();

    meetingGroup.UpdatePaymentInfo(DateTime.Now.AddDays(1));

    var meetingTerm = options.MeetingTerm ??
                      new MeetingTerm(DateTime.UtcNow.AddDays(1), DateTime.UtcNow.AddDays(2));

    var rsvpTerm = options.RvspTerm ?? Term.NoTerm;
    var meeting = meetingGroup.CreateMeeting(&quot;title&quot;,
        meetingTerm,
        &quot;description&quot;,
        new MeetingLocation(&quot;Name&quot;, &quot;Address&quot;, &quot;PostalCode&quot;, &quot;City&quot;),
        options.AttendeesLimit,
        options.GuestsLimit,
        rsvpTerm,
        MoneyValue.Zero,
        new List&amp;lt;MemberId&amp;gt;(),
        proposalMemberId);

    DomainEventsTestHelper.ClearAllDomainEvents(meetingGroup);

    return new MeetingTestData(meetingGroup, meeting);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3.11 Architecture Decision Log&lt;/h3&gt; 
&lt;p&gt;All Architectural Decisions (AD) are documented in the &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/architecture-decision-log&quot;&gt;Architecture Decision Log (ADL)&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;More information about documenting architecture-related decisions in this way : &lt;a href=&quot;https://github.com/joelparkerhenderson/architecture_decision_record&quot;&gt;https://github.com/joelparkerhenderson/architecture_decision_record&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;3.12 Architecture Unit Tests&lt;/h3&gt; 
&lt;p&gt;In some cases it is not possible to enforce the application architecture, design or established conventions using compiler (compile-time). For this reason, code implementations can diverge from the original design and architecture. We want to minimize this behavior, not only by code review.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;To do this, unit tests of system architecture, design, major conventions and assumptions have been written. In .NET there is special library for this task: &lt;a href=&quot;https://github.com/BenMorris/NetArchTest&quot;&gt;NetArchTest&lt;/a&gt;. This library has been written based on the very popular JAVA architecture unit tests library - &lt;a href=&quot;https://www.archunit.org/&quot;&gt;ArchUnit&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Using this kind of tests we can test proper layering of our application, dependencies, encapsulation, immutability, DDD correct implementation, naming, conventions and so on - everything what we need to test. Example:&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/architecture_unit_tests.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;More information about architecture unit tests here: &lt;a href=&quot;https://blogs.oracle.com/javamagazine/unit-test-your-architecture-with-archunit&quot;&gt;https://blogs.oracle.com/javamagazine/unit-test-your-architecture-with-archunit&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;3.13 Integration Tests&lt;/h3&gt; 
&lt;h4&gt;Definition&lt;/h4&gt; 
&lt;p&gt;&quot;Integration Test&quot; term is blurred. It can mean test between classes, modules, services, even systems - see &lt;a href=&quot;https://martinfowler.com/bliki/IntegrationTest.html&quot;&gt;this&lt;/a&gt; article (by Martin Fowler). &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;For this reason, the definition of integration test in this project is as follows:&lt;br /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;it verifies how system works in integration with &quot;out-of-process&quot; dependencies - database, messaging system, file system or external API&lt;/li&gt; 
 &lt;li&gt;it tests particular use case&lt;/li&gt; 
 &lt;li&gt;it can be slow (as opposed to Unit Test)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Approach&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Do not mock dependencies over which you have full control&lt;/strong&gt; (like database). Full control dependency means you can always revert all changes (remove side-effects) and no one can notice it. They are not visible to others. See next point, please.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Use &quot;production&quot;, normal, real database version&lt;/strong&gt;. Some use e.g. in memory repository, some use light databases instead &quot;production&quot; version. This is still mocking. Testing makes sense if we have full confidence in testing. You can&#39;t trust the test if you know that the infrastructure in the production environment will vary. Be always as close to production environment as possible.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Mock dependencies over which you don&#39;t have control&lt;/strong&gt;. No control dependency means you can&#39;t remove side-effects after interaction with this dependency (external API, messaging system, SMTP server etc.). They can be visible to others.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Implementation&lt;/h4&gt; 
&lt;p&gt;Integration test should test exactly one use case. One use case is represented by one Command/Query processing so CommandHandler/QueryHandler in Application layer is perfect starting point for running the Integration Test:&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/integration_tests.jpg&quot; alt=&quot;&quot; /&gt; For each test, the following preparation steps must be performed:&lt;br /&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Clear database&lt;/li&gt; 
 &lt;li&gt;Prepare mocks&lt;/li&gt; 
 &lt;li&gt;Initialize testing module&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;[SetUp]
public async Task BeforeEachTest()
{
    const string connectionStringEnvironmentVariable =
        &quot;ASPNETCORE_MyMeetings_IntegrationTests_ConnectionString&quot;;
    ConnectionString = Environment.GetEnvironmentVariable(connectionStringEnvironmentVariable, EnvironmentVariableTarget.Machine);
    if (ConnectionString == null)
    {
        throw new ApplicationException(
            $&quot;Define connection string to integration tests database using environment variable: {connectionStringEnvironmentVariable}&quot;);
    }

    using (var sqlConnection = new SqlConnection(ConnectionString))
    {
        await ClearDatabase(sqlConnection);
    }

    Logger = Substitute.For&amp;lt;ILogger&amp;gt;();
    EmailSender = Substitute.For&amp;lt;IEmailSender&amp;gt;();
    EventsBus = new EventsBusMock();
    ExecutionContext = new ExecutionContextMock(Guid.NewGuid());
    
    PaymentsStartup.Initialize(
        ConnectionString,
        ExecutionContext,
        Logger,
        EventsBus,
        false);

    PaymentsModule = new PaymentsModule();
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;After preparation, test is performed on clear database. Usually, it is the execution of some (or many) Commands and: &lt;br /&gt; a) running a Query or/and &lt;br /&gt; b) verifying mocks &lt;br /&gt; to check the result.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;[TestFixture]
public class MeetingPaymentTests : TestBase
{
    [Test]
    public async Task CreateMeetingPayment_Test()
    {
        PayerId payerId = new PayerId(Guid.NewGuid());
        MeetingId meetingId = new MeetingId(Guid.NewGuid());
        decimal value = 100;
        string currency = &quot;EUR&quot;;
        await PaymentsModule.ExecuteCommandAsync(new CreateMeetingPaymentCommand(Guid.NewGuid(),
            payerId, meetingId, value, currency));

        var payment = await PaymentsModule.ExecuteQueryAsync(new GetMeetingPaymentQuery(meetingId.Value, payerId.Value));

        Assert.That(payment.PayerId, Is.EqualTo(payerId.Value));
        Assert.That(payment.MeetingId, Is.EqualTo(meetingId.Value));
        Assert.That(payment.FeeValue, Is.EqualTo(value));
        Assert.That(payment.FeeCurrency, Is.EqualTo(currency));
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Each Command/Query processing is a separate execution (with different object graph resolution, context, database connection etc.) thanks to Composition Root of each module. This behavior is important and desirable.&lt;/p&gt; 
&lt;h3&gt;3.14 System Integration Testing&lt;/h3&gt; 
&lt;h4&gt;Definition&lt;/h4&gt; 
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/System_integration_testing&quot;&gt;System Integration Testing (SIT)&lt;/a&gt; is performed to verify the interactions between the modules of a software system. It involves the overall testing of a complete system of many subsystem components or elements.&lt;/p&gt; 
&lt;h4&gt;Implementation&lt;/h4&gt; 
&lt;p&gt;Implementation of system integration tests is based on approach of integration testing of modules in isolation (invoking commands and queries) described in the previous section.&lt;/p&gt; 
&lt;p&gt;The problem is that in this case we are dealing with &lt;strong&gt;asynchronous communication&lt;/strong&gt;. Due to asynchrony, our &lt;strong&gt;test must wait for the result&lt;/strong&gt; at certain times.&lt;/p&gt; 
&lt;p&gt;To correctly implement such tests, the &lt;strong&gt;Sampling&lt;/strong&gt; technique and implementation described in the &lt;a href=&quot;https://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627&quot;&gt;Growing Object-Oriented Software, Guided by Tests&lt;/a&gt; book was used:&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;An asynchronous test must wait for success and use timeouts to detect failure. This implies that every tested activity must have an observable effect: a test must affect the system so that its observable state becomes different. This sounds obvious but it drives how we think about writing asynchronous tests. If an activity has no observable effect, there is nothing the test can wait for, and therefore no way for the test to synchronize with the system it is testing. There are two ways a test can observe the system: by sampling its observable state or by listening for events that it sends out.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/SystemIntegrationTests.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Test below:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Creates Meeting Group Proposal in Meetings module&lt;/li&gt; 
 &lt;li&gt;Waits until Meeting Group Proposal to verification will be available in Administration module with 10 seconds timeout&lt;/li&gt; 
 &lt;li&gt;Accepts Meeting Group Proposal in Administration module&lt;/li&gt; 
 &lt;li&gt;Waits until Meeting Group is created in Meetings module with 15 seconds timeout&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class CreateMeetingGroupTests : TestBase
{
    [Test]
    public async Task CreateMeetingGroupScenario_WhenProposalIsAccepted()
    {
        var meetingGroupId = await MeetingsModule.ExecuteCommandAsync(
            new ProposeMeetingGroupCommand(&quot;Name&quot;,
            &quot;Description&quot;,
            &quot;Location&quot;,
            &quot;PL&quot;));

        AssertEventually(
            new GetMeetingGroupProposalFromAdministrationProbe(meetingGroupId, AdministrationModule), 
            10000);

        await AdministrationModule.ExecuteCommandAsync(new AcceptMeetingGroupProposalCommand(meetingGroupId));

        AssertEventually(
            new GetCreatedMeetingGroupFromMeetingsProbe(meetingGroupId, MeetingsModule),
            15000);
    }

    private class GetCreatedMeetingGroupFromMeetingsProbe : IProbe
    {
        private readonly Guid _expectedMeetingGroupId;

        private readonly IMeetingsModule _meetingsModule;

        private List&amp;lt;MeetingGroupDto&amp;gt; _allMeetingGroups;

        public GetCreatedMeetingGroupFromMeetingsProbe(
            Guid expectedMeetingGroupId, 
            IMeetingsModule meetingsModule)
        {
            _expectedMeetingGroupId = expectedMeetingGroupId;
            _meetingsModule = meetingsModule;
        }

        public bool IsSatisfied()
        {
            return _allMeetingGroups != null &amp;amp;&amp;amp; 
                   _allMeetingGroups.Any(x =&amp;gt; x.Id == _expectedMeetingGroupId);
        }

        public async Task SampleAsync()
        {
            _allMeetingGroups = await _meetingsModule.ExecuteQueryAsync(new GetAllMeetingGroupsQuery());
        }

        public string DescribeFailureTo() 
            =&amp;gt; $&quot;Meeting group with ID: {_expectedMeetingGroupId} is not created&quot;;
    }

    private class GetMeetingGroupProposalFromAdministrationProbe : IProbe
    {
        private readonly Guid _expectedMeetingGroupProposalId;

        private MeetingGroupProposalDto _meetingGroupProposal;

        private readonly IAdministrationModule _administrationModule;

        public GetMeetingGroupProposalFromAdministrationProbe(Guid expectedMeetingGroupProposalId, IAdministrationModule administrationModule)
        {
            _expectedMeetingGroupProposalId = expectedMeetingGroupProposalId;
            _administrationModule = administrationModule;
        }

        public bool IsSatisfied()
        {
            if (_meetingGroupProposal == null)
            {
                return false;
            }

            if (_meetingGroupProposal.Id == _expectedMeetingGroupProposalId &amp;amp;&amp;amp;
                _meetingGroupProposal.StatusCode == MeetingGroupProposalStatus.ToVerify.Value)
            {
                return true;
            }

            return false;
        }

        public async Task SampleAsync()
        {
            try
            {
                _meetingGroupProposal =
                    await _administrationModule.ExecuteQueryAsync(
                        new GetMeetingGroupProposalQuery(_expectedMeetingGroupProposalId));
            }
            catch
            {
                // ignored
            }
        }

        public string DescribeFailureTo()
            =&amp;gt; $&quot;Meeting group proposal with ID: {_expectedMeetingGroupProposalId} to verification not created&quot;;
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Poller class implementation (based on example in the book):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class Poller
{
    private readonly int _timeoutMillis;

    private readonly int _pollDelayMillis;

    public Poller(int timeoutMillis)
    {
        _timeoutMillis = timeoutMillis;
        _pollDelayMillis = 1000;
    }

    public void Check(IProbe probe)
    {
        var timeout = new Timeout(_timeoutMillis);
        while (!probe.IsSatisfied())
        {
            if (timeout.HasTimedOut())
            {
                throw new AssertErrorException(DescribeFailureOf(probe));
            }

            Thread.Sleep(_pollDelayMillis);
            probe.SampleAsync();
        }
    }

    private static string DescribeFailureOf(IProbe probe)
    {
        return probe.DescribeFailureTo();
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3.15 Event Sourcing&lt;/h3&gt; 
&lt;h4&gt;Theory&lt;/h4&gt; 
&lt;p&gt;During the implementation of the Payment module, &lt;em&gt;Event Sourcing&lt;/em&gt; was used. &lt;em&gt;Event Sourcing&lt;/em&gt; is a way of preserving the state of our system by recording a sequence of events. No less, no more.&lt;/p&gt; 
&lt;p&gt;It is important here to really restore the state of our application from events. If we collect events only for auditing purposes, it is an &lt;a href=&quot;https://en.wikipedia.org/wiki/Audit_trail&quot;&gt;Audit Log/Trail&lt;/a&gt; - not the &lt;em&gt;Event Sourcing&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;The main elements of &lt;em&gt;Event Sourcing&lt;/em&gt; are as follows:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Events Stream&lt;/li&gt; 
 &lt;li&gt;Objects that are restored based on events. There are 2 types of such objects depending on the purpose: -- Objects responsible for the change of state. In Domain-Driven Design they will be &lt;em&gt;Aggregates&lt;/em&gt;. -- &lt;em&gt;Projections&lt;/em&gt;: read models prepared for a specific purpose&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Subscriptions&lt;/em&gt; : a way to receive information about new events&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Snapshots&lt;/em&gt;: from time to time, objects saved in the traditional way for performance purposes. Mainly used if there are many events to restore the object from the entire event history. (Note: there is currently no snapshot implementation in the project)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/ES_elements.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;Tool&lt;/h4&gt; 
&lt;p&gt;In order not to reinvent the wheel, the &lt;em&gt;SQL Stream Store&lt;/em&gt; library was used. As the &lt;a href=&quot;https://sqlstreamstore.readthedocs.io/en/latest/&quot;&gt;documentation&lt;/a&gt; says:&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;SQL Stream Store is a .NET library to assist with developing applications that use event sourcing or wish to use stream based patterns over a relational database and existing operational infrastructure.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Like every library, it has its limitations and assumptions (I recommend the linked documentation chapter &quot;Things you need to know before adopting&quot;). For me, the most important 2 points from this chapter are:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;em&gt;&quot;Subscriptions (and thus projections) are &lt;strong&gt;eventually consistent&lt;/strong&gt; and always will be.&quot;&lt;/em&gt; This means that there will always be an inconsistency time from saving the event to the stream and processing the event by the projector(s).&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;&quot;No support for ambient System.Transaction scopes enforcing the concept of the stream as the consistency and transactional boundary.&quot;&lt;/em&gt; This means that if we save the event to a events stream and want to save something &lt;strong&gt;in the same transaction&lt;/strong&gt;, we must use &lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/api/system.transactions.transactionscope?view=net-8.0&quot;&gt;TransactionScope&lt;/a&gt;. If we cannot use &lt;em&gt;TransactionScope&lt;/em&gt; for some reason, we must accept the Eventual Consistency also in this case.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Other popular tools:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://eventstore.com/&quot;&gt;EventStore&lt;/a&gt; &lt;em&gt;&quot;An industrial-strength database solution built from the ground up for event sourcing.&quot;&lt;/em&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://martendb.io/&quot;&gt;Marten&lt;/a&gt; &lt;em&gt;&quot;.NET Transactional Document DB and Event Store on PostgreSQL&quot;&lt;/em&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Implementation&lt;/h4&gt; 
&lt;p&gt;There are 2 main &quot;flows&quot; to handle:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Command handling: change of state - adding new events to stream (writing)&lt;/li&gt; 
 &lt;li&gt;Projection of events to create read models&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h5&gt;Command Handling&lt;/h5&gt; 
&lt;p&gt;The whole process looks like this:&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/ES_command_handling.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;We create / update an aggregate by creating an event&lt;/li&gt; 
 &lt;li&gt;We add changes to the Aggregate Store. This is the class responsible for writing / loading our aggregates. We are not saving changes yet.&lt;/li&gt; 
 &lt;li&gt;As part of Unit Of Work a) Aggregate Store adds events to the stream b) messages are added to the Outbox&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Command Handler:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class BuySubscriptionCommandHandler : ICommandHandler&amp;lt;BuySubscriptionCommand, Guid&amp;gt;
{
    private readonly IAggregateStore _aggregateStore;

    private readonly IPayerContext _payerContext;

    private readonly ISqlConnectionFactory _sqlConnectionFactory;

    public BuySubscriptionCommandHandler(
        IAggregateStore aggregateStore, 
        IPayerContext payerContext, 
        ISqlConnectionFactory sqlConnectionFactory)
    {
        _aggregateStore = aggregateStore;
        _payerContext = payerContext;
        _sqlConnectionFactory = sqlConnectionFactory;
    }

    public async Task&amp;lt;Guid&amp;gt; Handle(BuySubscriptionCommand command, CancellationToken cancellationToken)
    {
        var priceList = await PriceListProvider.GetPriceList(_sqlConnectionFactory.GetOpenConnection());

        var subscriptionPayment = SubscriptionPayment.Buy(
            _payerContext.PayerId,
            SubscriptionPeriod.Of(command.SubscriptionTypeCode),
            command.CountryCode,
            MoneyValue.Of(command.Value, command.Currency),
            priceList);
        
        _aggregateStore.AppendChanges(subscriptionPayment);

        return subscriptionPayment.Id;
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;SubscriptionPayment&lt;/code&gt; Aggregate:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class SubscriptionPayment : AggregateRoot
{
    private PayerId _payerId;

    private SubscriptionPeriod _subscriptionPeriod;

    private string _countryCode;

    private SubscriptionPaymentStatus _subscriptionPaymentStatus;

    private MoneyValue _value;

    protected override void Apply(IDomainEvent @event)
    {
        this.When((dynamic)@event);
    }

    public static SubscriptionPayment Buy(
        PayerId payerId,
        SubscriptionPeriod period,
        string countryCode,
        MoneyValue priceOffer,
        PriceList priceList)
    {
        var priceInPriceList = priceList.GetPrice(countryCode, period, PriceListItemCategory.New);
        CheckRule(new PriceOfferMustMatchPriceInPriceListRule(priceOffer, priceInPriceList));

        var subscriptionPayment = new SubscriptionPayment();

        var subscriptionPaymentCreated = new SubscriptionPaymentCreatedDomainEvent(
            Guid.NewGuid(),
            payerId.Value,
            period.Code,
            countryCode,
            SubscriptionPaymentStatus.WaitingForPayment.Code,
            priceOffer.Value,
            priceOffer.Currency);

        subscriptionPayment.Apply(subscriptionPaymentCreated);
        subscriptionPayment.AddDomainEvent(subscriptionPaymentCreated);

        return subscriptionPayment;
    }

    private void When(SubscriptionPaymentCreatedDomainEvent @event)
    {
        this.Id = @event.SubscriptionPaymentId;
        _payerId = new PayerId(@event.PayerId);
        _subscriptionPeriod = SubscriptionPeriod.Of(@event.SubscriptionPeriodCode);
        _countryCode = @event.CountryCode;
        _subscriptionPaymentStatus = SubscriptionPaymentStatus.Of(@event.Status);
        _value = MoneyValue.Of(@event.Value, @event.Currency);
    }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;AggregateRoot&lt;/code&gt; base class:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public abstract class AggregateRoot
{
    public Guid Id { get; protected set; }

    public int Version { get; private set; }

    private readonly List&amp;lt;IDomainEvent&amp;gt; _domainEvents;

    protected AggregateRoot()
    {
        _domainEvents = new List&amp;lt;IDomainEvent&amp;gt;();

        Version = -1;
    }

    protected void AddDomainEvent(IDomainEvent @event)
    {
        _domainEvents.Add(@event);
    }

    public IReadOnlyCollection&amp;lt;IDomainEvent&amp;gt; GetDomainEvents() =&amp;gt; _domainEvents.AsReadOnly();

    public void Load(IEnumerable&amp;lt;IDomainEvent&amp;gt; history)
    {
        foreach (var e in history)
        {
            Apply(e);
            Version++;
        }
    }

    protected abstract void Apply(IDomainEvent @event);

    protected static void CheckRule(IBusinessRule rule)
    {
        if (rule.IsBroken())
        {
            throw new BusinessRuleValidationException(rule);
        }
    }
}

&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Aggregate Store implementation with SQL Stream Store library usage:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class SqlStreamAggregateStore : IAggregateStore
{
    private readonly IStreamStore _streamStore;

    private readonly List&amp;lt;IDomainEvent&amp;gt; _appendedChanges;

    private readonly List&amp;lt;AggregateToSave&amp;gt; _aggregatesToSave;

    public SqlStreamAggregateStore(
        ISqlConnectionFactory sqlConnectionFactory)
    {
        _appendedChanges = new List&amp;lt;IDomainEvent&amp;gt;();

        _streamStore =
            new MsSqlStreamStore(
                new MsSqlStreamStoreSettings(sqlConnectionFactory.GetConnectionString())
                    {
                        Schema = DatabaseSchema.Name
                });

        _aggregatesToSave = new List&amp;lt;AggregateToSave&amp;gt;();
    }

    public async Task Save()
    {
        foreach (var aggregateToSave in _aggregatesToSave)
        {
            await _streamStore.AppendToStream(
                GetStreamId(aggregateToSave.Aggregate),
                aggregateToSave.Aggregate.Version,
                aggregateToSave.Messages.ToArray());
        }

        _aggregatesToSave.Clear();
    }

    public async Task&amp;lt;T&amp;gt; Load&amp;lt;T&amp;gt;(AggregateId&amp;lt;T&amp;gt; aggregateId) where T : AggregateRoot
    {
        var streamId = GetStreamId(aggregateId);

        IList&amp;lt;IDomainEvent&amp;gt; domainEvents = new List&amp;lt;IDomainEvent&amp;gt;();
        ReadStreamPage readStreamPage;
        do
        {
            readStreamPage = await _streamStore.ReadStreamForwards(streamId, StreamVersion.Start, maxCount: 100);
            var messages = readStreamPage.Messages;
            foreach (var streamMessage in messages)
            {
                Type type = DomainEventTypeMappings.Dictionary[streamMessage.Type];
                var jsonData = await streamMessage.GetJsonData();
                var domainEvent = JsonConvert.DeserializeObject(jsonData, type) as IDomainEvent;

                domainEvents.Add(domainEvent);
            }
        } while (!readStreamPage.IsEnd);

        var aggregate = (T)Activator.CreateInstance(typeof(T), true);

        aggregate.Load(domainEvents);

        return aggregate;
    }

&lt;/code&gt;&lt;/pre&gt; 
&lt;h5&gt;Events Projection&lt;/h5&gt; 
&lt;p&gt;The whole process looks like this:&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/ES_events_projection.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Special class &lt;code&gt;Subscriptions Manager&lt;/code&gt; subscribes to Events Store (using SQL Store Stream library)&lt;/li&gt; 
 &lt;li&gt;Events Store raises &lt;code&gt;StreamMessageRecievedEvent&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;Subscriptions Manager&lt;/code&gt; invokes all projectors&lt;/li&gt; 
 &lt;li&gt;If projector know how to handle given event, it updates particular read model. In current implementation it updates special table in SQL database.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;SubscriptionsManager&lt;/code&gt; class implementation:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class SubscriptionsManager
{
    private readonly IStreamStore _streamStore;

    public SubscriptionsManager(
        IStreamStore streamStore)
    {
        _streamStore = streamStore;
    }

    public void Start()
    {
        long? actualPosition;

        using (var scope = PaymentsCompositionRoot.BeginLifetimeScope())
        {
            var checkpointStore = scope.Resolve&amp;lt;ICheckpointStore&amp;gt;();

            actualPosition = checkpointStore.GetCheckpoint(SubscriptionCode.All);
        }

        _streamStore.SubscribeToAll(actualPosition, StreamMessageReceived);
    }

    public void Stop()
    {
        _streamStore.Dispose();
    }

    private static async Task StreamMessageReceived(
        IAllStreamSubscription subscription, StreamMessage streamMessage, CancellationToken cancellationToken)
    {
        var type = DomainEventTypeMappings.Dictionary[streamMessage.Type];
        var jsonData = await streamMessage.GetJsonData(cancellationToken);
        var domainEvent = JsonConvert.DeserializeObject(jsonData, type) as IDomainEvent;

        using var scope = PaymentsCompositionRoot.BeginLifetimeScope();

        var projectors = scope.Resolve&amp;lt;IList&amp;lt;IProjector&amp;gt;&amp;gt;();

        var tasks = projectors
            .Select(async projector =&amp;gt;
            {
                await projector.Project(domainEvent);
            });

        await Task.WhenAll(tasks);

        var checkpointStore = scope.Resolve&amp;lt;ICheckpointStore&amp;gt;();
        await checkpointStore.StoreCheckpoint(SubscriptionCode.All, streamMessage.Position);
    }
}

&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Example projector:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;internal class SubscriptionDetailsProjector : ProjectorBase, IProjector
{
    private readonly IDbConnection _connection;

    public SubscriptionDetailsProjector(ISqlConnectionFactory sqlConnectionFactory)
    {
        _connection = sqlConnectionFactory.GetOpenConnection();
    }

    public async Task Project(IDomainEvent @event)
    {
        await When((dynamic) @event);
    }

    private async Task When(SubscriptionRenewedDomainEvent subscriptionRenewed)
    {
        var period = SubscriptionPeriod.GetName(subscriptionRenewed.SubscriptionPeriodCode);
        
        await _connection.ExecuteScalarAsync(&quot;UPDATE payments.SubscriptionDetails &quot; +
                                                &quot;SET &quot; +
                                                    &quot;[Status] = @Status, &quot; +
                                                    &quot;[ExpirationDate] = @ExpirationDate, &quot; +
                                                    &quot;[Period] = @Period &quot; +
                                                &quot;WHERE [Id] = @SubscriptionId&quot;,
            new
            {
                subscriptionRenewed.SubscriptionId,
                subscriptionRenewed.Status,
                subscriptionRenewed.ExpirationDate,
                period
            });
    }

    private async Task When(SubscriptionExpiredDomainEvent subscriptionExpired)
    {
        await _connection.ExecuteScalarAsync(&quot;UPDATE payments.SubscriptionDetails &quot; +
                                             &quot;SET &quot; +
                                             &quot;[Status] = @Status &quot; +
                                             &quot;WHERE [Id] = @SubscriptionId&quot;,
            new
            {
                subscriptionExpired.SubscriptionId,
                subscriptionExpired.Status
            });
    }

    private async Task When(SubscriptionCreatedDomainEvent subscriptionCreated)
    {
        var period = SubscriptionPeriod.GetName(subscriptionCreated.SubscriptionPeriodCode);
        
        await _connection.ExecuteScalarAsync(&quot;INSERT INTO payments.SubscriptionDetails &quot; +
                                       &quot;([Id], [Period], [Status], [CountryCode], [ExpirationDate]) &quot; +
                                       &quot;VALUES (@SubscriptionId, @Period, @Status, @CountryCode, @ExpirationDate)&quot;,
            new
            {
                subscriptionCreated.SubscriptionId,
                period,
                subscriptionCreated.Status,
                subscriptionCreated.CountryCode,
                subscriptionCreated.ExpirationDate
            });
    }
}

&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Sample view of Event Store&lt;/h4&gt; 
&lt;p&gt;Sample &lt;em&gt;Event Store&lt;/em&gt; view after execution of SubscriptionLifecycleTests Integration Test which includes following steps:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Creating Price List&lt;/li&gt; 
 &lt;li&gt;Buying Subscription&lt;/li&gt; 
 &lt;li&gt;Renewing Subscription&lt;/li&gt; 
 &lt;li&gt;Expiring Subscription&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;looks like this (&lt;em&gt;SQL Stream Store&lt;/em&gt; table - &lt;em&gt;payments.Messages&lt;/em&gt;):&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/ES_event_store_db_sample.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;3.16 Database Change Management&lt;/h3&gt; 
&lt;p&gt;Database change management is accomplished by &lt;em&gt;migrations/transitions&lt;/em&gt; versioning. Additionally, the current state of the database structure is also versioned.&lt;/p&gt; 
&lt;p&gt;Migrations are applied using a simple &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/src/Database/DatabaseMigrator&quot;&gt;DatabaseMigrator&lt;/a&gt; console application that uses the &lt;a href=&quot;https://dbup.readthedocs.io/en/latest/&quot;&gt;DbUp&lt;/a&gt; library. The current state of the database structure is kept in the &lt;a href=&quot;https://docs.microsoft.com/en-us/sql/ssdt/how-to-create-a-new-database-project&quot;&gt;SSDT Database Project&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The database update is performed by running the following command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;dotnet DatabaseMigrator.dll &quot;connection_string&quot; &quot;scripts_directory_path&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The entire solution is described in detail in the following articles:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.kamilgrzybek.com/database/database-change-management/&quot;&gt;Database change management&lt;/a&gt; (theory)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.kamilgrzybek.com/database/using-database-project-and-dbup-for-database-management/&quot;&gt;Using database project and DbUp for database management&lt;/a&gt; (implementation)&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;3.17 Continuous Integration&lt;/h3&gt; 
&lt;h4&gt;Definition&lt;/h4&gt; 
&lt;p&gt;As defined on &lt;a href=&quot;https://martinfowler.com/articles/continuousIntegration.html&quot;&gt;Martin Fowler&#39;s website&lt;/a&gt;:&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;em&gt;Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.&lt;/em&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;YAML Implementation [OBSOLETE]&lt;/h4&gt; 
&lt;p&gt;&lt;em&gt;Originally the build was implemented using yaml and GitHub Actions functionality. Currently, the build is implemented with NUKE (see next section). See &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/.github/workflows/buildPipeline.yml&quot;&gt;buildPipeline.yml&lt;/a&gt;&lt;/em&gt; file history.&lt;/p&gt; 
&lt;h5&gt;Pipeline description&lt;/h5&gt; 
&lt;p&gt;CI was implemented using &lt;a href=&quot;https://docs.github.com/en/actions/getting-started-with-github-actions/about-github-actions&quot;&gt;GitHub Actions&lt;/a&gt;. For this purpose, one workflow, which triggers on Pull Request to &lt;em&gt;master&lt;/em&gt; branch or Push to &lt;em&gt;master&lt;/em&gt; branch was created. It contains 2 jobs:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;build test, execute Unit Tests and Architecture Tests&lt;/li&gt; 
 &lt;li&gt;execute Integration Tests&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/ci.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Steps description&lt;/strong&gt;&lt;br /&gt; a) Checkout repository - clean checkout of git repository &lt;br /&gt; b) Setup .NET - install .NET 8.0 SDK&lt;br /&gt; c) Install dependencies - resolve NuGet packages&lt;br /&gt; d) Build - build solution&lt;br /&gt; e) Run Unit Tests - run automated Unit Tests (see section 3.10)&lt;br /&gt; f) Run Architecture Tests - run automated Architecture Tests (see section 3.12)&lt;br /&gt; g) Initialize containers - setup Docker container for MS SQL Server&lt;br /&gt; h) Wait for SQL Server initialization - after container initialization MS SQL Server is not ready, initialization of server itself takes some time so 30 seconds timeout before execution of next step is needed&lt;br /&gt; i) Create Database - create and initialize database&lt;br /&gt; j) Migrate Database - execute database upgrade using &lt;em&gt;DatabaseMigrator&lt;/em&gt; application (see 3.16 section)&lt;br /&gt; k) Run Integration Tests - perform Integration and System Integration Testing (see section 3.13 and 3.14)&lt;br /&gt;&lt;/p&gt; 
&lt;h5&gt;Workflow definition&lt;/h5&gt; 
&lt;p&gt;Workflow definition: &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/.github/workflows/buildPipeline.yml&quot;&gt;buildPipeline.yml&lt;/a&gt;&lt;/p&gt; 
&lt;h5&gt;Example workflow execution&lt;/h5&gt; 
&lt;p&gt;Example workflow output:&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/ci_job1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/ci_job2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;NUKE&lt;/h4&gt; 
&lt;p&gt;&lt;a href=&quot;https://nuke.build/&quot;&gt;Nuke&lt;/a&gt; is &lt;em&gt;the cross-platform build automation solution for .NET with C# DSL.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;The 2 main advantages of its use over pure yaml defined in GitHub actions are as follows:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;You run the same code on local machine and in the build server. See &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/.github/workflows/buildPipeline.yml&quot;&gt;buildPipeline.yml&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;You use C# with all the goodness (debugging, compilation, packages, refactoring and so on)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This is how one of the stage definition looks like (execute Build, Unit Tests, Architecture Tests) &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/build/Build.cs&quot;&gt;Build.cs&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;partial class Build : NukeBuild
{
    /// Support plugins are available for:
    ///   - JetBrains ReSharper        https://nuke.build/resharper
    ///   - JetBrains Rider            https://nuke.build/rider
    ///   - Microsoft VisualStudio     https://nuke.build/visualstudio
    ///   - Microsoft VSCode           https://nuke.build/vscode

    public static int Main () =&amp;gt; Execute&amp;lt;Build&amp;gt;(x =&amp;gt; x.Compile);

    [Parameter(&quot;Configuration to build - Default is &#39;Debug&#39; (local) or &#39;Release&#39; (server)&quot;)]
    readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;

    [Solution] readonly Solution Solution;

    Target Clean =&amp;gt; _ =&amp;gt; _
        .Before(Restore)
        .Executes(() =&amp;gt;
        {
            EnsureCleanDirectory(WorkingDirectory);
        });

    Target Restore =&amp;gt; _ =&amp;gt; _
        .Executes(() =&amp;gt;
        {
            DotNetRestore(s =&amp;gt; s
                .SetProjectFile(Solution));
        });

    Target Compile =&amp;gt; _ =&amp;gt; _
        .DependsOn(Restore)
        .Executes(() =&amp;gt;
        {
            DotNetBuild(s =&amp;gt; s
                .SetProjectFile(Solution)
                .SetConfiguration(Configuration)
                .EnableNoRestore());
        });

    Target UnitTests =&amp;gt; _ =&amp;gt; _
        .DependsOn(Compile)
        .Executes(() =&amp;gt;
        {
            DotNetTest(s =&amp;gt; s
                .SetProjectFile(Solution)
                .SetFilter(&quot;UnitTests&quot;)
                .SetConfiguration(Configuration)
                .EnableNoRestore()
                .EnableNoBuild());
        });

    Target ArchitectureTests =&amp;gt; _ =&amp;gt; _
        .DependsOn(UnitTests)
        .Executes(() =&amp;gt;
        {
            DotNetTest(s =&amp;gt; s
                .SetProjectFile(Solution)
                .SetFilter(&quot;ArchTests&quot;)
                .SetConfiguration(Configuration)
                .EnableNoRestore()
                .EnableNoBuild());
        });

    Target BuildAndUnitTests =&amp;gt; _ =&amp;gt; _
        .Triggers(ArchitectureTests)
        .Executes(() =&amp;gt;
        {
        });
}

&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you want to see more complex scenario when integration tests are executed (with SQL Server database creation using docker) see &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/build/BuildIntegrationTests.cs&quot;&gt;BuildIntegrationTests.cs&lt;/a&gt; file.&lt;/p&gt; 
&lt;h4&gt;SQL Server database project build&lt;/h4&gt; 
&lt;p&gt;Currently, compilation of database projects is not supported by the .NET Core and dotnet tool. For this reason, the &lt;a href=&quot;https://github.com/rr-wfm/MSBuild.Sdk.SqlProj/&quot;&gt;MSBuild.Sdk.SqlProj&lt;/a&gt; library was used. In order to do that, you need to create .NET standard library, change SDK and create links to scripts folders. Final &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/src/Database/CompanyName.MyMeetings.Database.Build/CompanyName.MyMeetings.Database.Build.csproj&quot;&gt;database project&lt;/a&gt; looks as follows:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;Project Sdk=&quot;MSBuild.Sdk.SqlProj/1.6.0&quot;&amp;gt;
    &amp;lt;PropertyGroup&amp;gt;
        &amp;lt;TargetFramework&amp;gt;netstandard2.0&amp;lt;/TargetFramework&amp;gt;
    &amp;lt;/PropertyGroup&amp;gt;
    &amp;lt;ItemGroup&amp;gt;
        &amp;lt;Content Include=&quot;..\CompanyName.MyMeetings.Database\administration\**\*.sql&quot; /&amp;gt;
        &amp;lt;Content Include=&quot;..\CompanyName.MyMeetings.Database\app\**\*.sql&quot; /&amp;gt;
        &amp;lt;Content Include=&quot;..\CompanyName.MyMeetings.Database\meetings\**\*.sql&quot; /&amp;gt;
        &amp;lt;Content Include=&quot;..\CompanyName.MyMeetings.Database\payments\**\*.sql&quot; /&amp;gt;
        &amp;lt;Content Include=&quot;..\CompanyName.MyMeetings.Database\users\**\*.sql&quot; /&amp;gt;
        &amp;lt;Content Include=&quot;..\CompanyName.MyMeetings.Database\Security\**\*.sql&quot; /&amp;gt;
    &amp;lt;/ItemGroup&amp;gt;
&amp;lt;/Project&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3.18 Static code analysis&lt;/h3&gt; 
&lt;p&gt;In order to standardize the appearance of the code and increase its readability, the &lt;a href=&quot;https://github.com/DotNetAnalyzers/StyleCopAnalyzers&quot;&gt;StyleCopAnalyzers&lt;/a&gt; library was used. This library implements StyleCop rules using the .NET Compiler Platform and is responsible for the static code analysis.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Using this library is trivial - it is just added as a NuGet package to all projects. There are many ways to configure rules, but currently the best way to do this is to edit the &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/src/.editorconfig&quot;&gt;.editorconfig&lt;/a&gt; file. More information can be found at the link above.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note! Static code analysis works best when the following points are met:&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Each developer has an IDE that respects the rules and helps to follow them&lt;/li&gt; 
 &lt;li&gt;The rules are checked during the project build process as part of Continuous Integration&lt;/li&gt; 
 &lt;li&gt;The rules are set to &lt;em&gt;help your system grow&lt;/em&gt;. &lt;strong&gt;Static analysis is not a value in itself.&lt;/strong&gt; Some rules may not make complete sense and should be turned off. Other rules may have higher priority. It all depends on the project, company standards and people involved in the project. Be pragmatic.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;3.19 System Under Test SUT&lt;/h3&gt; 
&lt;p&gt;There is always a need to prepare the entire system in a specific state, e.g. for manual, exploratory, UX / UI tests. The fact that the tests are performed manually does not mean that we cannot automate the preparation phase (Given / Arrange). Thanks to the automation of system state preparation (&lt;a href=&quot;https://en.wikipedia.org/wiki/System_under_test&quot;&gt;System Under Test&lt;/a&gt;), we are able to recreate exactly the same state in any environment. In addition, such automation can be used later to automate the entire test (e.g. through an &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/#313-integration-tests&quot;&gt;3.13 Integration Tests&lt;/a&gt;).&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;The implementation of such automation based on the use of NUKE and the test framework is presented below. As in the case of integration testing, we use the public API of modules.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/sut-preparation.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Below is a SUT whose task is to go through the whole process - from setting up a &lt;em&gt;Meeting Group&lt;/em&gt;, through its &lt;em&gt;Payment&lt;/em&gt;, adding a new &lt;em&gt;Meeting&lt;/em&gt; and signing up for it by another user.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class CreateMeeting : TestBase
{
    protected override bool PerformDatabaseCleanup =&amp;gt; true;

    [Test]
    public async Task Prepare()
    {
        await UsersFactory.GivenAdmin(
            UserAccessModule,
            &quot;testAdmin@mail.com&quot;,
            &quot;testAdminPass&quot;,
            &quot;Jane Doe&quot;,
            &quot;Jane&quot;,
            &quot;Doe&quot;,
            &quot;testAdmin@mail.com&quot;);

        var userId = await UsersFactory.GivenUser(
            UserAccessModule,
            ConnectionString,
            &quot;adamSmith@mail.com&quot;,
            &quot;adamSmithPass&quot;,
            &quot;Adam&quot;,
            &quot;Smith&quot;,
            &quot;adamSmith@mail.com&quot;);

        ExecutionContextAccessor.SetUserId(userId);

        var meetingGroupId = await MeetingGroupsFactory.GivenMeetingGroup(
            MeetingsModule,
            AdministrationModule,
            ConnectionString,
            &quot;Software Craft&quot;,
            &quot;Group for software craft passionates&quot;,
            &quot;Warsaw&quot;,
            &quot;PL&quot;);

        await TestPriceListManager.AddPriceListItems(PaymentsModule, ConnectionString);

        await TestPaymentsManager.BuySubscription(
            PaymentsModule,
            ExecutionContextAccessor);
        
        SetDate(new DateTime(2022, 7, 1, 10, 0, 0));

        var meetingId = await TestMeetingFactory.GivenMeeting(
            MeetingsModule,
            meetingGroupId,
            &quot;Tactical DDD&quot;,
            new DateTime(2022, 7, 10, 18, 0, 0),
            new DateTime(2022, 7, 10, 20, 0, 0),
            &quot;Meeting about Tactical DDD patterns&quot;,
            &quot;Location Name&quot;,
            &quot;Location Address&quot;,
            &quot;01-755&quot;,
            &quot;Warsaw&quot;,
            50,
            0,
            null,
            null,
            0,
            null,
            new List&amp;lt;Guid&amp;gt;()
        );
        
        var attendeeUserId = await UsersFactory.GivenUser(
            UserAccessModule,
            ConnectionString,
            &quot;rickmorty@mail.com&quot;,
            &quot;rickmortyPass&quot;,
            &quot;Rick&quot;,
            &quot;Morty&quot;,
            &quot;rickmorty@mail.com&quot;);
        
        ExecutionContextAccessor.SetUserId(attendeeUserId);

        await TestMeetingGroupManager.JoinToGroup(MeetingsModule, meetingGroupId);

        await TestMeetingManager.AddAttendee(MeetingsModule, meetingId, guestsNumber: 1);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can create this SUT using following &lt;em&gt;NUKE&lt;/em&gt; target providing connection string and particular test name:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt; .\build PrepareSUT --DatabaseConnectionString &quot;connection_string&quot; --SUTTestName CreateMeeting
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3.20 Mutation Testing&lt;/h3&gt; 
&lt;h4&gt;Description&lt;/h4&gt; 
&lt;p&gt;Mutation testing is an approach to test and evaluate our existing tests. During mutation testing a special framework modifies pieces of our code and runs our tests. These modifications are called &lt;em&gt;mutations&lt;/em&gt; or &lt;em&gt;mutants&lt;/em&gt;. If a given &lt;em&gt;mutation&lt;/em&gt; does not cause a failure of at least once test, it means that the mutant has &lt;em&gt;survived&lt;/em&gt; so our tests are probably not sufficient.&lt;/p&gt; 
&lt;h4&gt;Example&lt;/h4&gt; 
&lt;p&gt;In this repository, the &lt;a href=&quot;https://stryker-mutator.io/docs/stryker-net/Introduction&quot;&gt;Stryker.NET&lt;/a&gt; framework was used for mutation testing. In the simplest use, after installation, all you need to do is enter the directory of tests that you want to mutate and run the following command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;dotnet stryker
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The result of this command is the &lt;em&gt;mutation report file&lt;/em&gt;. Assuming we want to test the unit tests of the Meetings module, such a &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/mutation-tests-reports/mutation-report.html&quot;&gt;report&lt;/a&gt; has been generated. This is its first page:&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/mutation_testing_report.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Let us analyze one of the places where the mutant survived. This is the &lt;em&gt;AddNotAttendee&lt;/em&gt; method of the &lt;em&gt;Meeting&lt;/em&gt; class. This method is used to add a &lt;em&gt;Member&lt;/em&gt; to the list of people who have decided not to attend the meeting. According to the logic, if the same person previously indicated that he was going to the &lt;em&gt;Meeting&lt;/em&gt; and later changed his mind, then if there is someone on the &lt;em&gt;Waiting List&lt;/em&gt;, he should be added to the attendees. Based on requirements, this should be the person who signed up on the &lt;em&gt;Waiting List&lt;/em&gt; &lt;strong&gt;first&lt;/strong&gt; (based on &lt;strong&gt;SignUpDate&lt;/strong&gt;).&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/docs/Images/mutation_testing_example.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;As you can see, the mutation framework changed our sorting in linq query (from default ascending to descending). However, each test was successful, so it means that mutant survived so we don&#39;t have a test that checks the correct sort based on &lt;em&gt;SignUpDate&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;From the example above, one more important thing can be deduced - &lt;strong&gt;code coverage is insufficient&lt;/strong&gt;. In the given example, this code is covered, but our tests do not check the given requirement, therefore our code may have errors. Mutation testing allow to detect such situations. Of course, as with any tool, we should use it wisely, as not every case requires our attention.&lt;/p&gt; 
&lt;h2&gt;4. Technology&lt;/h2&gt; 
&lt;p&gt;List of technologies, frameworks and libraries used for implementation:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dotnet.microsoft.com/download&quot;&gt;.NET 8.0&lt;/a&gt; (platform). Note for Visual Studio users: &lt;strong&gt;VS 2019&lt;/strong&gt; is required.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.microsoft.com/en-us/sql-server/sql-server-editions-express&quot;&gt;MS SQL Server Express&lt;/a&gt; (database)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/ef/core/&quot;&gt;Entity Framework Core 8.0&lt;/a&gt; (ORM Write Model implementation for DDD)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://autofac.org/&quot;&gt;Autofac&lt;/a&gt; (Inversion of Control Container)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://docs.identityserver.io&quot;&gt;IdentityServer4&lt;/a&gt; (Authentication and Authorization)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://serilog.net/&quot;&gt;Serilog&lt;/a&gt; (structured logging)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/khellang/Middleware/tree/master/src/ProblemDetails&quot;&gt;Hellang.Middleware.ProblemDetails&lt;/a&gt; (API Problem Details support)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/domaindrivendev/Swashbuckle&quot;&gt;Swashbuckle&lt;/a&gt; (Swagger automated documentation)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/StackExchange/Dapper&quot;&gt;Dapper&lt;/a&gt; (micro ORM for Read Model)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.newtonsoft.com/json&quot;&gt;Newtonsoft.Json&lt;/a&gt; (serialization/deserialization to/from JSON)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.quartz-scheduler.net/&quot;&gt;Quartz.NET&lt;/a&gt; (background processing)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://fluentvalidation.net/&quot;&gt;FluentValidation&lt;/a&gt; (data validation)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jbogard/MediatR&quot;&gt;MediatR&lt;/a&gt; (mediator implementation)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.getpostman.com/&quot;&gt;Postman&lt;/a&gt; (API tests)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://nunit.org/&quot;&gt;NUnit&lt;/a&gt; (Testing framework)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://nsubstitute.github.io/&quot;&gt;NSubstitute&lt;/a&gt; (Testing isolation framework)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.visual-paradigm.com/download/community.jsp&quot;&gt;Visual Paradigm Community Edition&lt;/a&gt; (CASE tool for modeling and documentation)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/BenMorris/NetArchTest&quot;&gt;NetArchTest&lt;/a&gt; (Architecture Unit Tests library)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/App-vNext/Polly&quot;&gt;Polly&lt;/a&gt; (Resilience and transient-fault-handling library)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/SQLStreamStore&quot;&gt;SQL Stream Store&lt;/a&gt; (Library to assist with Event Sourcing)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dbup.readthedocs.io/en/latest/&quot;&gt;DbUp&lt;/a&gt; (Database migrations deployment)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/sql/ssdt/how-to-create-a-new-database-project&quot;&gt;SSDT Database Project&lt;/a&gt; (Database structure versioning)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/actions&quot;&gt;GitHub Actions&lt;/a&gt; (Continuous Integration workflows implementation)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/DotNetAnalyzers/StyleCopAnalyzers&quot;&gt;StyleCopAnalyzers&lt;/a&gt; (Static code analysis library)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://plantuml.com&quot;&gt;PlantUML&lt;/a&gt; (UML diagrams from textual description, diagrams as text)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://c4model.com/&quot;&gt;C4 Model&lt;/a&gt; (Model for visualising software architecture)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/plantuml-stdlib/C4-PlantUML&quot;&gt;C4-PlantUML&lt;/a&gt; (C4 Model for PlantUML plugin)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://nuke.build/&quot;&gt;NUKE&lt;/a&gt; (Build automation system)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rr-wfm/MSBuild.Sdk.SqlProj/&quot;&gt;MSBuild.Sdk.SqlProj&lt;/a&gt; (Database project compilation)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://stryker-mutator.io/docs/stryker-net/Introduction&quot;&gt;Stryker.NET&lt;/a&gt; (Mutation Testing framework)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;5. How to Run&lt;/h2&gt; 
&lt;h3&gt;Install .NET 8.0 SDK&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dotnet.microsoft.com/en-us/download/dotnet/8.0&quot;&gt;Download&lt;/a&gt; and install .NET 8.0 SDK&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Create database&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Download and install MS SQL Server Express or other&lt;/li&gt; 
 &lt;li&gt;Create an empty database using &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/src/Database/CompanyName.MyMeetings.Database/Scripts/CreateDatabase_Windows.sql&quot;&gt;CreateDatabase_Windows.sql&lt;/a&gt; or &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/src/Database/CompanyName.MyMeetings.Database/Scripts/CreateDatabase_Linux.sql&quot;&gt;CreateDatabase_Linux.sql&lt;/a&gt;. Script adds &lt;strong&gt;app&lt;/strong&gt; schema which is needed for migrations journal table. Change database file path if needed.&lt;/li&gt; 
 &lt;li&gt;Run database migrations using &lt;strong&gt;MigrateDatabase&lt;/strong&gt; NUKE target by executing the &lt;a href=&quot;http://build.sh&quot;&gt;build.sh&lt;/a&gt; script present in the root folder:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;.\build MigrateDatabase --DatabaseConnectionString &quot;connection_string&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;&quot;connection_string&quot;&lt;/em&gt; - connection string to your database&lt;/p&gt; 
&lt;h3&gt;Seed database&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Execute &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/src/Database/CompanyName.MyMeetings.Database/Scripts/SeedDatabase.sql&quot;&gt;SeedDatabase.sql&lt;/a&gt; script&lt;/li&gt; 
 &lt;li&gt;2 test users will be created - check the script for usernames and passwords&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Configure connection string&lt;/h3&gt; 
&lt;p&gt;Set a database connection string called &lt;code&gt;MeetingsConnectionString&lt;/code&gt; in the root of the API project&#39;s appsettings.json or use &lt;a href=&quot;https://blogs.msdn.microsoft.com/mihansen/2017/09/10/managing-secrets-in-net-core-2-0-apps/&quot;&gt;Secrets&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Example config setting in appsettings.json for a database called &lt;code&gt;MyMeetings&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
 &quot;MeetingsConnectionString&quot;: &quot;Server=(localdb)\\mssqllocaldb;Database=MyMeetings;Trusted_Connection=True;&quot;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Configure startup in IDE&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Set the Startup Item in your IDE to the API Project, not IIS Express&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Authenticate&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Once it is running you&#39;ll need a token to make API calls. This is done via OAuth2 &lt;a href=&quot;https://www.oauth.com/oauth2-servers/access-tokens/password-grant/&quot;&gt;Resource Owner Password Grant Type&lt;/a&gt;. By default IdentityServer is configured with the following:&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;client_id = ro.client&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;client_secret = secret&lt;/code&gt; &lt;strong&gt;(this is literally the value - not a statement that this value is secret!)&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;scope = myMeetingsAPI openid profile&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;grant_type = password&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Include the credentials of a test user created in the &lt;a href=&quot;https://raw.githubusercontent.com/kgrzybek/modular-monolith-with-ddd/master/src/Database/CompanyName.MyMeetings.Database/Scripts/SeedDatabase.sql&quot;&gt;SeedDatabase.sql&lt;/a&gt; script - for example:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;username = testMember@mail.com&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;password = testMemberPass&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Example HTTP Request for an Access Token:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-http&quot;&gt;POST /connect/token HTTP/1.1
Host: localhost:5000
 
grant_type=password
&amp;amp;username=testMember@mail.com
&amp;amp;password=testMemberPass
&amp;amp;client_id=ro.client
&amp;amp;client_secret=secret
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This will fetch an access token for this user to make authorized API requests using the HTTP request header &lt;code&gt;Authorization: Bearer &amp;lt;access_token&amp;gt;&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;If you use a tool such as Postman to test your API, the token can be fetched and stored within the tool itself and appended to all API calls. Check your tool documentation for instructions.&lt;/p&gt; 
&lt;h3&gt;Run using Docker Compose&lt;/h3&gt; 
&lt;p&gt;You can run whole application using &lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;docker compose&lt;/a&gt; from root folder:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;docker-compose up
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It will create following services: &lt;br /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;MS SQL Server Database&lt;/li&gt; 
 &lt;li&gt;Database Migrator&lt;/li&gt; 
 &lt;li&gt;Application&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Run Integration Tests in Docker&lt;/h3&gt; 
&lt;p&gt;You can run all Integration Tests in Docker (exactly the same process is executed on CI) using &lt;strong&gt;RunAllIntegrationTests&lt;/strong&gt; NUKE target:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;.\build RunAllIntegrationTests
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;6. Contribution&lt;/h2&gt; 
&lt;p&gt;This project is still under analysis and development. I assume its maintenance for a long time and I would appreciate your contribution to it. Please let me know by creating an Issue or Pull Request.&lt;/p&gt; 
&lt;h2&gt;7. Roadmap&lt;/h2&gt; 
&lt;p&gt;List of features/tasks/approaches to add:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Name&lt;/th&gt; 
   &lt;th&gt;Status&lt;/th&gt; 
   &lt;th&gt;Release date&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Domain Model Unit Tests&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2019-09-10&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Architecture Decision Log update&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2019-11-09&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Integration automated tests&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-02-24&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Migration to .NET Core 3.1&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-03-04&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;System Integration Testing&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-03-28&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;More advanced Payments module&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-07-11&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Event Sourcing implementation&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-07-11&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Database Change Management&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-08-23&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Continuous Integration&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-09-01&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;StyleCop Static Code Analysis&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-09-05&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;FrontEnd SPA application&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-11-08&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Docker support&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2020-11-26&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;PlantUML Conceptual Model&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2021-03-22&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;C4 Model&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2021-03-29&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Meeting comments feature&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2021-03-30&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;NUKE build automation&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2021-06-15&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Database project compilation on CI&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2021-06-15&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;System Under Test implementation&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2022-07-17&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Mutation Testing&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2022-08-23&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Migration to .NET 8.0&lt;/td&gt; 
   &lt;td&gt;Completed&lt;/td&gt; 
   &lt;td&gt;2023-12-09&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;NOTE: Please don&#39;t hesitate to suggest something else or a change to the existing code. All proposals will be considered.&lt;/p&gt; 
&lt;h2&gt;8. Authors&lt;/h2&gt; 
&lt;p&gt;Kamil Grzybek&lt;/p&gt; 
&lt;p&gt;Blog: &lt;a href=&quot;https://kamilgrzybek.com&quot;&gt;https://kamilgrzybek.com&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Twitter: &lt;a href=&quot;https://twitter.com/kamgrzybek&quot;&gt;https://twitter.com/kamgrzybek&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;LinkedIn: &lt;a href=&quot;https://www.linkedin.com/in/kamilgrzybek/&quot;&gt;https://www.linkedin.com/in/kamilgrzybek/&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;GitHub: &lt;a href=&quot;https://github.com/kgrzybek&quot;&gt;https://github.com/kgrzybek&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;8.1 Main contributors&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/AndreiGanichev&quot;&gt;Andrei Ganichev&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bistok&quot;&gt;Bela Istok&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/AlmarAubel&quot;&gt;Almar Aubel&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;9. License&lt;/h2&gt; 
&lt;p&gt;The project is under &lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;MIT license&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;10. Inspirations and Recommendations&lt;/h2&gt; 
&lt;h3&gt;Modular Monolith&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.kamilgrzybek.com/design/modular-monolith-primer/&quot;&gt;&quot;Modular Monolith: A Primer&quot;&lt;/a&gt; Modular Monolith architecture article series, Kamil Grzybek&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=njDSXUWeik0&quot;&gt;&quot;Modular Monolith Architecture: One to rule them all&quot;&lt;/a&gt; presentation, Kamil Grzybek&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=5OjqD-ow8GE&quot;&gt;&quot;Modular Monoliths&quot;&lt;/a&gt; presentation, Simon Brown&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=BOvxJaklcr0&quot;&gt;&quot;Majestic Modular Monoliths&quot;&lt;/a&gt; presentation, Axel Fontaine&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://speakerdeck.com/olivergierke/building-better-monoliths-modulithic-applications-with-spring-boot-cd16e6ec-d334-497d-b9f6-3f92d5db035a&quot;&gt;&quot;Building Better Monoliths – Modulithic Applications with Spring Boot&quot;&lt;/a&gt; slides, Oliver Drotbohm&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://martinfowler.com/bliki/MonolithFirst.html&quot;&gt;&quot;MonolithFirst&quot;&lt;/a&gt; article, Martin Fowler&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://microservices.io/patterns/monolithic.html&quot;&gt;&quot;Pattern: Monolithic Architecture&quot;&lt;/a&gt; pattern description, Chris Richardson&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Domain-Driven Design&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215&quot;&gt;&quot;Domain-Driven Design: Tackling Complexity in the Heart of Software&quot;&lt;/a&gt; book, Eric Evans&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577&quot;&gt;&quot;Implementing Domain-Driven Design&quot;&lt;/a&gt; book, Vaughn Vernon&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/dp/0134434420&quot;&gt;&quot;Domain-Driven Design Distilled&quot;&lt;/a&gt; book, Vaughn Vernon&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Patterns-Principles-Practices-Domain-Driven-Design-ebook/dp/B00XLYUA0W&quot;&gt;&quot;Patterns, Principles, and Practices of Domain-Driven Design&quot;&lt;/a&gt; book, Scott Millett, Nick Tune&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Secure-Design-Daniel-Deogun/dp/1617294357&quot;&gt;&quot;Secure By Design&quot;&lt;/a&gt; book, Daniel Deogun, Dan Bergh Johnsson, Daniel Sawano&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Hands-Domain-Driven-Design-NET-ebook/dp/B07C5WSR9B&quot;&gt;&quot;Hands-On Domain-Driven Design with .NET Core: Tackling complexity in the heart of software by putting DDD principles into practice&quot;&lt;/a&gt; book, Alexey Zimarev&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Domain-Modeling-Made-Functional-Domain-Driven-ebook/dp/B07B44BPFB&quot;&gt;&quot;Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#&quot;&lt;/a&gt; book, Scott Wlaschin&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ddd-by-examples/library&quot;&gt;&quot;DDD by examples - library&quot;&lt;/a&gt; GH repository, Jakub Pilimon, Bartłomiej Słota&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/VaughnVernon/IDDD_Samples&quot;&gt;&quot;IDDD_Samples&quot;&lt;/a&gt; GH repository, Vaughn Vernon&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/VaughnVernon/IDDD_Samples_NET&quot;&gt;&quot;IDDD_Samples_NET&quot;&lt;/a&gt; GH repository, Vaughn Vernon&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/heynickc/awesome-ddd&quot;&gt;&quot;Awesome Domain-Driven Design&quot;&lt;/a&gt; GH repository, Nick Chamberlain&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Application Architecture&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://martinfowler.com/books/eaa.html&quot;&gt;&quot;Patterns of Enterprise Application Architecture&quot;&lt;/a&gt; book, Martin Fowler&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.manning.com/books/dependency-injection-principles-practices-patterns&quot;&gt;&quot;Dependency Injection Principles, Practices, and Patterns&quot;&lt;/a&gt; book, Steven van Deursen, Mark Seemann&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164&quot;&gt;&quot;Clean Architecture: A Craftsman&#39;s Guide to Software Structure and Design (Robert C. Martin Series&quot;&lt;/a&gt; book, Robert C. Martin&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&quot;&gt;&quot;The Clean Architecture&quot;&lt;/a&gt; article, Robert C. Martin&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/&quot;&gt;&quot;The Onion Architecture&quot;&lt;/a&gt; article series, Jeffrey Palermo&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20180822100852/http://alistair.cockburn.us/Hexagonal+architecture&quot;&gt;&quot;Hexagonal/Ports &amp;amp; Adapters Architecture&quot;&lt;/a&gt; article, Alistair Cockburn&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/&quot;&gt;&quot;DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together&quot;&lt;/a&gt; article, Herberto Graca&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Software Architecture&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Software-Architecture-Practice-3rd-Engineering/dp/0321815734&quot;&gt;&quot;Software Architecture in Practice (3rd Edition)&quot;&lt;/a&gt; book, Len Bass, Paul Clements, Rick Kazman&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://softwarearchitecturefordevelopers.com/&quot;&gt;&quot;Software Architecture for Developers Vol 1 &amp;amp; 2&quot;&lt;/a&gt; book, Simon Brown&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Just-Enough-Software-Architecture-Risk-Driven/dp/0984618104&quot;&gt;&quot;Just Enough Software Architecture: A Risk-Driven Approach&quot;&lt;/a&gt; book, George H. Fairbanks&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Software-Systems-Architecture-Stakeholders-Perspectives/dp/032171833X/&quot;&gt;&quot;Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives (2nd Edition)&quot;&lt;/a&gt; book, Nick Rozanski, Eóin Woods&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Design-Programmer-Architect-Pragmatic-Programmers/dp/1680502093&quot;&gt;&quot;Design It!: From Programmer to Software Architect (The Pragmatic Programmers)&quot;&lt;/a&gt; book, Michael Keeling&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;System Architecture&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.enterpriseintegrationpatterns.com/&quot;&gt;&quot;Enterprise Integration Patterns : Designing, Building, and Deploying Messaging Solutions&quot;&lt;/a&gt; book and catalogue, Gregor Hohpe, Bobby Woolf&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321&quot;&gt;&quot;Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems &quot;&lt;/a&gt; book, Martin Kleppman&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Building-Evolutionary-Architectures-Support-Constant/dp/1491986360&quot;&gt;&quot;Building Evolutionary Architectures: Support Constant Change&quot;&lt;/a&gt; book, Neal Ford&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Building-Microservices-Designing-Fine-Grained-Systems/dp/1491950358&quot;&gt;&quot;Building Microservices: Designing Fine-Grained Systems&quot;&lt;/a&gt; book, Sam Newman&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Design&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672&quot;&gt;&quot;Refactoring: Improving the Design of Existing Code&quot;&lt;/a&gt; book, Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882&quot;&gt;&quot;Clean Code: A Handbook of Agile Software Craftsmanship&quot;&lt;/a&gt; book, Robert C. Martin&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258&quot;&gt;&quot;Agile Principles, Patterns, and Practices in C#&quot;&lt;/a&gt; book, Robert C. Martin&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062&quot;&gt;&quot;Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition)&quot;&lt;/a&gt; book, Craig Larman&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052&quot;&gt;&quot;Working Effectively with Legacy Code&quot;&lt;/a&gt; book, Michael Feathers&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670&quot;&gt;&quot;Code Complete: A Practical Handbook of Software Construction, Second Edition&quot;&lt;/a&gt; book, Steve McConnell&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612&quot;&gt;&quot;Design Patterns: Elements of Reusable Object-Oriented Software&quot;&lt;/a&gt; book, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Craftsmanship&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Clean-Coder-Conduct-Professional-Programmers/dp/0137081073&quot;&gt;&quot;The Clean Coder: A Code of Conduct for Professional Programmers&quot;&lt;/a&gt; book, Robert C. Martin&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X&quot;&gt;&quot;The Pragmatic Programmer: From Journeyman to Master&quot;&lt;/a&gt; book, Andrew Hunt&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Testing&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Art-Unit-Testing-examples/dp/1617290890&quot;&gt;&quot;The Art of Unit Testing: with examples in C#&quot;&lt;/a&gt; book, Roy Osherove&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://blogs.oracle.com/javamagazine/unit-test-your-architecture-with-archunit&quot;&gt;&quot;Unit Test Your Architecture with ArchUnit&quot;&lt;/a&gt; article, Jonas Havers&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Unit-Testing-Principles-Practices-Patterns/dp/1617296279&quot;&gt;&quot;Unit Testing Principles, Practices, and Patterns&quot;&lt;/a&gt; book, Vladimir Khorikov&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627&quot;&gt;&quot;Growing Object-Oriented Software, Guided by Tests&quot;&lt;/a&gt; book, Steve Freeman, Nat Pryce&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.kamilgrzybek.com/blog/series/automated-tests&quot;&gt;Automated Tests&lt;/a&gt; article series, Kamil Grzybek&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;UML&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/UML-Distilled-Standard-Modeling-Language/dp/0321193687&quot;&gt;&quot;UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)&quot;&lt;/a&gt; book, Martin Fowler&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Event Storming&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://leanpub.com/introducing_eventstorming&quot;&gt;&quot;Introducing EventStorming&quot;&lt;/a&gt; book, Alberto Brandolini&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mariuszgil/awesome-eventstorming&quot;&gt;&quot;Awesome EventStorming&quot;&lt;/a&gt; GH repository, Mariusz Gil&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Event Sourcing&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Hands-Domain-Driven-Design-NET-ebook/dp/B07C5WSR9B&quot;&gt;&quot;Hands-On Domain-Driven Design with .NET Core: Tackling complexity in the heart of software by putting DDD principles into practice&quot;&lt;/a&gt; book, Alexey Zimarev&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://leanpub.com/esversioning&quot;&gt;&quot;Versioning in an Event Sourced System&quot;&lt;/a&gt; book, Greg Young&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/PacktPublishing/Hands-On-Domain-Driven-Design-with-.NET-Core&quot;&gt;Hands-On-Domain-Driven-Design-with-.NET-Core&lt;/a&gt; GH repository, Alexey Zimarev&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oskardudycz/EventSourcing.NetCore&quot;&gt;EventSourcing.NetCore&lt;/a&gt; GH repository, Oskar Dudycz&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/196703f48229221b91b7b85b35fc47e369ca93901c94b4cf9c96cf02384cc35d/kgrzybek/modular-monolith-with-ddd" medium="image" />
      
    </item>
    
    <item>
      <title>dotnet/aspnetcore</title>
      <link>https://github.com/dotnet/aspnetcore</link>
      <description>&lt;p&gt;ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;&lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.dotnetfoundation.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/.NET%20Foundation-blueviolet.svg?sanitize=true&quot; alt=&quot;.NET Foundation&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/dotnet/aspnetcore?color=%230b0&amp;amp;style=flat-square&quot; alt=&quot;MIT License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/dotnet/aspnetcore/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/dotnet/aspnetcore/help%20wanted?color=%232EA043&amp;amp;label=help%20wanted&amp;amp;style=flat-square&quot; alt=&quot;Help Wanted&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/dotnet/aspnetcore/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/dotnet/aspnetcore/good%20first%20issue?color=%23512BD4&amp;amp;label=good%20first%20issue&amp;amp;style=flat-square&quot; alt=&quot;Good First Issues&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://aka.ms/dotnet-discord&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/732297728826277939?style=flat-square&amp;amp;label=Discord&amp;amp;logo=discord&amp;amp;logoColor=white&amp;amp;color=7289DA&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core is an open-source and cross-platform framework for building modern cloud-based internet-connected applications, such as web apps, IoT apps, and mobile backends. &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core apps run on &lt;a href=&quot;https://dot.net&quot;&gt;.NET&lt;/a&gt;, a free, cross-platform, and open-source application runtime. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core apps cross-platform on Windows, Mac, and Linux. &lt;a href=&quot;https://learn.microsoft.com/aspnet/core/&quot;&gt;Learn more about ASP.NET Core&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Get started&lt;/h2&gt; 
&lt;p&gt;Follow the &lt;a href=&quot;https://learn.microsoft.com/aspnet/core/getting-started&quot;&gt;Getting Started&lt;/a&gt; instructions.&lt;/p&gt; 
&lt;p&gt;Also check out the &lt;a href=&quot;https://www.microsoft.com/net&quot;&gt;.NET Homepage&lt;/a&gt; for released versions of .NET, getting started guides, and learning resources.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://github.com/dotnet/aspnetcore/raw/main/docs/TriageProcess.md&quot;&gt;Triage Process&lt;/a&gt; document for more information on how we handle incoming issues.&lt;/p&gt; 
&lt;h2&gt;How to engage, contribute, and give feedback&lt;/h2&gt; 
&lt;p&gt;Some of the best ways to contribute are to try things out, file issues, join in design conversations, and make pull-requests.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dotnet/aspnetcore/main/docs/DailyBuilds.md&quot;&gt;Download our latest daily builds&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Follow along with the development of &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://live.asp.net&quot;&gt;Community Standup&lt;/a&gt;: The community standup is held every week and streamed live on YouTube. You can view past standups in the linked playlist.&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://aka.ms/aspnet/roadmap&quot;&gt;Roadmap&lt;/a&gt;: The schedule and milestone themes for &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dotnet/aspnetcore/main/docs/BuildFromSource.md&quot;&gt;Build ASP.NET Core source code&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Check out the &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/aspnetcore/main/CONTRIBUTING.md&quot;&gt;contributing&lt;/a&gt; page to see the best places to log issues and start discussions.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Reporting security issues and bugs&lt;/h2&gt; 
&lt;p&gt;Security issues and bugs should be reported privately to the Microsoft Security Response Center (MSRC) via the &lt;a href=&quot;https://msrc.microsoft.com/report/vulnerability/new&quot;&gt;MSRC Researcher Portal&lt;/a&gt;. You should receive a response within 24 hours. Further information can be found in the &lt;a href=&quot;https://www.microsoft.com/msrc/faqs-report-an-issue&quot;&gt;MSRC Report an Issue FAQ&lt;/a&gt;. You can also find these instructions in this repo&#39;s &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/aspnetcore/main/SECURITY.md&quot;&gt;Security doc&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Also see info about related &lt;a href=&quot;https://www.microsoft.com/msrc/bounty-dot-net-core&quot;&gt;Microsoft .NET Bounty Program&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Related projects&lt;/h2&gt; 
&lt;p&gt;These are some other repos for related projects:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aspnet/Docs&quot;&gt;Documentation&lt;/a&gt; - documentation sources for &lt;a href=&quot;https://learn.microsoft.com/aspnet/core/&quot;&gt;https://learn.microsoft.com/aspnet/core/&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dotnet/efcore&quot;&gt;Entity Framework Core&lt;/a&gt; - data access technology&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dotnet/runtime&quot;&gt;Runtime&lt;/a&gt; - cross-platform runtime for cloud, mobile, desktop, and IoT apps&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dotnet/razor&quot;&gt;Razor&lt;/a&gt; - the Razor compiler and tooling for working with Razor syntax (.cshtml, .razor)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Code of conduct&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/aspnetcore/main/CODE-OF-CONDUCT.md&quot;&gt;CODE-OF-CONDUCT&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Nightly builds&lt;/h2&gt; 
&lt;p&gt;This table includes links to download the latest builds of the &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core Shared Framework. Also included are links to download the Windows Hosting Bundle, which includes the &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core Shared Framework, the .NET Runtime Shared Framework, and the IIS plugin (&lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core Module). You can download the latest .NET Runtime builds &lt;a href=&quot;https://github.com/dotnet/runtime/raw/main/docs/project/dogfooding.md#nightly-builds-table&quot;&gt;here&lt;/a&gt;, and the latest .NET SDK builds &lt;a href=&quot;https://github.com/dotnet/dotnet/raw/main/docs/builds-table.md&quot;&gt;here&lt;/a&gt;. &lt;strong&gt;If you&#39;re unsure what you need, then install the SDK; it has everything except the IIS plugin.&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Platform&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Shared Framework (Installer)&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Shared Framework (Binaries)&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Hosting Bundle (Installer)&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Windows x64&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-win-x64.exe&quot;&gt;Installer&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-win-x64.zip&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/dotnet-hosting-win.exe&quot;&gt;Installer&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Windows x86&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-win-x86.exe&quot;&gt;Installer&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-win-x86.zip&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/dotnet-hosting-win.exe&quot;&gt;Installer&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Windows arm64&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-win-arm64.exe&quot;&gt;Installer&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-win-arm64.zip&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/dotnet-hosting-win.exe&quot;&gt;Installer&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;macOS x64&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-osx-x64.tar.gz&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;macOS arm64&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-osx-arm64.tar.gz&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Linux x64&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-x64.deb&quot;&gt;Deb Installer&lt;/a&gt; - &lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-x64.rpm&quot;&gt;RPM Installer&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-linux-x64.tar.gz&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Linux arm&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-linux-arm.tar.gz&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Linux arm64&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-aarch64.rpm&quot;&gt;RPM Installer&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-linux-arm64.tar.gz&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Linux-musl-x64&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-linux-musl-x64.tar.gz&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Linux-musl-arm&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-linux-musl-arm.tar.gz&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Linux-musl-arm64&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aka.ms/dotnet/11.0/daily/aspnetcore-runtime-linux-musl-arm64.tar.gz&quot;&gt;Binaries&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;N/A&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/4a79f484e8e83e739ddb06343dc2a954294686ce1ed86a146d8a0514308e4424/dotnet/aspnetcore" medium="image" />
      
    </item>
    
    <item>
      <title>Klocman/Bulk-Crap-Uninstaller</title>
      <link>https://github.com/Klocman/Bulk-Crap-Uninstaller</link>
      <description>&lt;p&gt;Remove large amounts of unwanted applications quickly.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;http://klocmansoftware.weebly.com/donate.html&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/donate-paypal-brightgreen.svg?sanitize=true&quot; alt=&quot;Donate&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Klocman/Bulk-Crap-Uninstaller/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/klocman/Bulk-Crap-Uninstaller.svg?sanitize=true&quot; alt=&quot;GitHub release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Klocman/Bulk-Crap-Uninstaller/raw/master/Licence.txt&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/klocman/Bulk-Crap-Uninstaller.svg?sanitize=true&quot; alt=&quot;license&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://github.com/Klocman/Bulk-Crap-Uninstaller/discussions/289&quot;&gt;⚠️ Looking for maintainers ⚠️&lt;/a&gt;&lt;/h3&gt; 
&lt;h1&gt;Bulk Crap Uninstaller&lt;/h1&gt; 
&lt;p&gt;Bulk Crap Uninstaller (or BCUninstaller) is a free (as in speech) program uninstaller. It excels at removing large amounts of applications with minimal user input. It can clean up leftovers, detect orphaned applications, run uninstallers according to premade lists, and much more! Even though BCU was made with IT pros in mind, it can be used by anyone with a basic understanding of how applications are installed/uninstalled in Windows.&lt;/p&gt; 
&lt;p&gt;BCU is fully compatible with Windows Store Apps, Steam, Windows Features and has special support for many uninstalling systems (NSIS, InnoSetup, Msiexec, and many other). Check below for a full list of functions.&lt;/p&gt; 
&lt;p&gt;Bulk Crap Uninstaller is licensed under Apache 2.0 open source license, and can be used in both private and commercial settings for free and with no obligations, as long as no conditions of the license are broken.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.bcuninstaller.com/&quot;&gt;Visit the official homepage&lt;/a&gt; to see the full list of quirks and features!&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://htmlpreview.github.io/?https://github.com/Klocman/Bulk-Crap-Uninstaller/raw/master/doc/BCU_manual.html&quot;&gt;Read the online documentation&lt;/a&gt; if you have any questions or issues (the help file included with all releases). If you didn&#39;t find an answer to your question, feel free to &lt;a href=&quot;https://github.com/Klocman/Bulk-Crap-Uninstaller/issues/new&quot;&gt;open a new issue&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;p&gt;You can get the latest version from the releases page. Alternatively you can download it from one of these hosts:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dappcdn.com/download/utilities/bulk-crap-uninstaller&quot;&gt;Download from dAppCDN&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.fosshub.com/Bulk-Crap-Uninstaller.html&quot;&gt;Download from FossHub&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://sourceforge.net/projects/bulk-crap-uninstaller/&quot;&gt;Download from SourceForge&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;What are the different variants?&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Setup - Installs BCU as a normal application. If your system is missing the required .NET runtime, it is automatically installed as well.&lt;/li&gt; 
 &lt;li&gt;Portable - Self-contained version that does not require the .NET runtime to run. It includes a runtime which is why the file size is so large.&lt;/li&gt; 
 &lt;li&gt;net - Stand-alone portable version that requires the .NET runtime to be installed. Much smaller file size than the full Portable version.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Nightly builds&lt;/h4&gt; 
&lt;p&gt;If you want to get the latest features and fixes as soon as they are available, you can download a nightly build from the &lt;a href=&quot;https://github.com/Klocman/Bulk-Crap-Uninstaller/actions/workflows/ci.yaml&quot;&gt;actions page&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;System requirements&lt;/h2&gt; 
&lt;h4&gt;BCUninstaller v6&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Earliest supported OS: Windows 10 (may work on Windows 7)&lt;/li&gt; 
 &lt;li&gt;Requirements: .NET 8 desktop runtime (not needed for portable)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To get this version download the latest release from the links below.&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;*Note: Since none of the supported systems have x86 versions, v6 releases no longer include an x86 build. If you need one you can still compile it yourself, or you can use the AnyCPU build instead.&lt;/em&gt;&lt;/p&gt; 
&lt;h4&gt;BCUninstaller v5&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Earliest supported OS: Windows 7 SP1 with all Platform Updates (KB2670838, KB2533623, etc.)&lt;/li&gt; 
 &lt;li&gt;Requirements: .NET 6 desktop runtime (not needed for portable)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you get a DLL error on startup then try running Windows Update. If you get a framework error, install .NET6 either manually or through Windows Update.&lt;/p&gt; 
&lt;p&gt;To get this version download the &lt;a href=&quot;https://github.com/Klocman/Bulk-Crap-Uninstaller/releases/tag/v5.9&quot;&gt;latest available 5.x release&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;*Note: The Portable version does not require the .NET6 runtime to be installed, since it is included (that&#39;s why the portable version is so large).&lt;/em&gt;&lt;/p&gt; 
&lt;h4&gt;BCUninstaller v1 - v4&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Earliest supported OS: Windows XP (XP support may be dodgy in later releases)&lt;/li&gt; 
 &lt;li&gt;Requirements: .Net Framework 4.5 (some versions can run on .Net Framework 3.5 with reduced functionality)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Make sure you have .Net Framework 4.5 installed with all available updates for your system (it is not installed on XP by default).&lt;/p&gt; 
&lt;p&gt;To get this version compile the &lt;a href=&quot;https://github.com/Klocman/Bulk-Crap-Uninstaller/tree/legacy-4.x&quot;&gt;legacy 4.x branch&lt;/a&gt; or download the &lt;a href=&quot;https://github.com/Klocman/Bulk-Crap-Uninstaller/releases/tag/v4.16&quot;&gt;latest available 4.x release&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;How can I help?&lt;/h2&gt; 
&lt;p&gt;Please check the &lt;a href=&quot;https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/master/CONTRIBUTING.md&quot;&gt;contribution&lt;/a&gt; notes!&lt;/p&gt; 
&lt;h2&gt;Compiling&lt;/h2&gt; 
&lt;p&gt;Development is done on Visual Studio 2022. The solution should just load and build without doing anything extra, provided necessary VS features are installed. The installer is compiled with InnoSetup v6.4. To make a release you have to first run the &lt;code&gt;publish.bat&lt;/code&gt; script.&lt;/p&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/gh-pages/assets/1.png&quot; alt=&quot;preview&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/gh-pages/assets/4.png&quot; alt=&quot;preview&quot; /&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/babc18e8c61e52cc23389d7a00506f48e6770a67ffda4b10f2434bbd08770255/Klocman/Bulk-Crap-Uninstaller" medium="image" />
      
    </item>
    
    <item>
      <title>QL-Win/QuickLook</title>
      <link>https://github.com/QL-Win/QuickLook</link>
      <description>&lt;p&gt;Bring macOS “Quick Look” feature to Windows&lt;/p&gt;&lt;hr&gt;&lt;picture&gt; 
 &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://user-images.githubusercontent.com/1687847/82130498-8c3eac80-97d4-11ea-9e88-372ab9c50295.png&quot; /&gt; 
 &lt;img src=&quot;https://user-images.githubusercontent.com/1687847/82130498-8c3eac80-97d4-11ea-9e88-372ab9c50295.png&quot; width=&quot;140&quot; alt=&quot;QuickLook Logo&quot; /&gt; 
&lt;/picture&gt; 
&lt;h1&gt;QuickLook&lt;/h1&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/refs/heads/master/Emojis/Activities/Magic%20Wand.png&quot; width=&quot;25&quot; height=&quot;25&quot; /&gt; &lt;i&gt;Instant File Previews, Just Press Space&lt;/i&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/refs/heads/master/Emojis/Activities/Magic%20Wand.png&quot; width=&quot;25&quot; height=&quot;25&quot; /&gt; &lt;/h3&gt; 
 &lt;p&gt;&lt;strong&gt;The most powerful Quick Look implementation for Windows&lt;/strong&gt;&lt;/p&gt; 
 &lt;a href=&quot;https://trendshift.io/repositories/3258&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/repositories/3258&quot; alt=&quot;Trending&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt; &lt;/a&gt; 
 &lt;br /&gt; 
 &lt;!-- Animated Badges --&gt; 
 &lt;p&gt; &lt;a href=&quot;https://quicklookapp.vercel.app&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/🌐_Official_Website-Visit_Now-00D9FF?style=for-the-badge&amp;amp;labelColor=000000&quot; alt=&quot;Official Website&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/QL-Win/QuickLook?style=for-the-badge&amp;amp;logo=github&amp;amp;color=00C853&amp;amp;labelColor=000000&quot; alt=&quot;Release&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/QL-Win/QuickLook/total?style=for-the-badge&amp;amp;logo=download&amp;amp;color=FF6D00&amp;amp;labelColor=000000&quot; alt=&quot;Downloads&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook/stargazers&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/stars/QL-Win/QuickLook?style=for-the-badge&amp;amp;logo=starship&amp;amp;color=FFD700&amp;amp;labelColor=000000&quot; alt=&quot;Stars&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.en.html&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/License-GPL_v3-blue?style=for-the-badge&amp;amp;logo=opensourceinitiative&amp;amp;color=3DA639&amp;amp;labelColor=000000&quot; alt=&quot;License&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook/actions/workflows/msbuild.yml&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/QL-Win/QuickLook/msbuild.yml?style=for-the-badge&amp;amp;logo=github&amp;amp;label=Build&amp;amp;labelColor=000000&quot; alt=&quot;Build Status&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://dotnet.microsoft.com/en-us/download/dotnet/latest/runtime&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Platform-Windows-0078D4?style=for-the-badge&amp;amp;logo=windows&amp;amp;labelColor=000000&quot; alt=&quot;Platform&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
 &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
 &lt;!-- Hero Image with Modern Styling --&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/QL-Win/QuickLook/refs/heads/master/Build/Assets/Branding/01.png&quot; width=&quot;800&quot; alt=&quot;QuickLook Preview&quot; style=&quot;border-radius: 20px;&quot; /&gt; 
 &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
 &lt;!-- Quick Navigation with Icons --&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;20%&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/QL-Win/QuickLook/master/#-the-problem&quot;&gt; &lt;img src=&quot;https://github.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/raw/master/Emojis/Objects/Light%20Bulb.png?raw=true&quot; width=&quot;30&quot; /&gt;&lt;br /&gt; &lt;b&gt;The Problem&lt;/b&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;20%&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/QL-Win/QuickLook/master/#-superpowers&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Rocket.png&quot; width=&quot;30&quot; /&gt;&lt;br /&gt; &lt;b&gt;Superpowers&lt;/b&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;20%&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/QL-Win/QuickLook/master/#-get-started&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Package.png&quot; width=&quot;30&quot; /&gt;&lt;br /&gt; &lt;b&gt;Get Started&lt;/b&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;20%&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/QL-Win/QuickLook/master/#-extend&quot;&gt; &lt;img src=&quot;https://github.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/raw/master/Emojis/Activities/Puzzle%20Piece.png?raw=true&quot; width=&quot;30&quot; /&gt;&lt;br /&gt; &lt;b&gt;Extend&lt;/b&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;20%&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/QL-Win/QuickLook/master/#-community&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Smilies/Beating%20Heart.png&quot; width=&quot;30&quot; /&gt;&lt;br /&gt; &lt;b&gt;Community&lt;/b&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;💡 The Problem&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;60%&quot;&gt; &lt;h3&gt;Ever wished Windows had macOS&#39;s Quick Look?&lt;/h3&gt; &lt;p&gt;You know the drill: you want to peek at a file, so you double-click, wait for an app to launch, view the file, close the app... &lt;strong&gt;exhausting&lt;/strong&gt;, right?&lt;/p&gt; &lt;p&gt;macOS users? They just press &lt;kbd&gt;Space&lt;/kbd&gt;. Instant preview. &lt;strong&gt;Any file&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Now Windows has it too.&lt;/strong&gt; 🎉&lt;/p&gt; &lt;p&gt;QuickLook brings that buttery-smooth, instant-preview experience to Windows. No more waiting. No more opening heavy applications just to peek at a document.&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;40%&quot;&gt; &lt;pre&gt;&lt;code&gt;WITHOUT QuickLook:
┌─────────────────┐
│ 1. Double click │
│ 2. Wait...      │
│ 3. App loads    │
│ 4. View file    │
│ 5. Close app    │
└─────────────────┘
   ⏱️ ~10 seconds

WITH QuickLook:
┌─────────────────┐
│ 1. Press SPACE  │
│ 2. Done! ✨     │
└─────────────────┘
   ⚡ ~0.2 seconds
&lt;/code&gt;&lt;/pre&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚀 Superpowers&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;What Makes QuickLook Extraordinary&lt;/h3&gt; 
&lt;/div&gt; 
&lt;table align=&quot;center&quot;&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;h3&gt;⚡️ &lt;strong&gt;Lightning Speed&lt;/strong&gt;&lt;/h3&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/High%20Voltage.png&quot; width=&quot;60&quot; /&gt; &lt;p&gt;&lt;strong&gt;Instant previews&lt;/strong&gt; with zero lag&lt;/p&gt; &lt;p&gt;Native performance that feels like magic&lt;/p&gt; &lt;p&gt;Hardware-accelerated rendering&lt;/p&gt; &lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;h3&gt;🎨 &lt;strong&gt;Gorgeous Design&lt;/strong&gt;&lt;/h3&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Activities/Artist%20Palette.png&quot; width=&quot;60&quot; /&gt; &lt;p&gt;&lt;strong&gt;Fluent Design System&lt;/strong&gt; integration&lt;/p&gt; &lt;p&gt;Beautiful on 4K displays&lt;/p&gt; &lt;p&gt;Touch-optimized interface&lt;/p&gt; &lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;h3&gt;🌈 &lt;strong&gt;100+ Formats&lt;/strong&gt;&lt;/h3&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Rainbow.png&quot; width=&quot;60&quot; /&gt; &lt;p&gt;Images, videos, documents, code&lt;/p&gt; &lt;p&gt;&lt;strong&gt;3D models&lt;/strong&gt;, archives, fonts&lt;/p&gt; &lt;p&gt;Extensible with plugins&lt;/p&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;br /&gt; 
&lt;!-- Feature Grid with Modern Cards --&gt; 
&lt;table align=&quot;center&quot;&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;h4&gt;📸 &lt;strong&gt;Visual Files&lt;/strong&gt;&lt;/h4&gt; 
    &lt;ul&gt; 
     &lt;li&gt;🖼️ Images (JPEG, PNG, GIF, WebP, RAW)&lt;/li&gt; 
     &lt;li&gt;🎬 Videos (MP4, AVI, MKV, MOV)&lt;/li&gt; 
     &lt;li&gt;🎨 Photoshop (PSD), Illustrator (AI)&lt;/li&gt; 
     &lt;li&gt;📐 3D Models (OBJ, STL, FBX)&lt;/li&gt; 
     &lt;li&gt;🎭 Animated GIFs &amp;amp; APNGs&lt;/li&gt; 
    &lt;/ul&gt; &lt;h4&gt;📄 &lt;strong&gt;Documents&lt;/strong&gt;&lt;/h4&gt; 
    &lt;ul&gt; 
     &lt;li&gt;📝 PDF, Word, Excel, PowerPoint&lt;/li&gt; 
     &lt;li&gt;📋 Text files with syntax highlighting&lt;/li&gt; 
     &lt;li&gt;📊 Markdown with live rendering&lt;/li&gt; 
     &lt;li&gt;📜 E-books (EPUB, MOBI)&lt;/li&gt; 
     &lt;li&gt;📑 Comics (CBZ, CBR)&lt;/li&gt; 
    &lt;/ul&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;h4&gt;💻 &lt;strong&gt;Developer Files&lt;/strong&gt;&lt;/h4&gt; 
    &lt;ul&gt; 
     &lt;li&gt;🐍 Python, JavaScript, C++, Rust&lt;/li&gt; 
     &lt;li&gt;🌐 HTML, CSS, JSON, XML&lt;/li&gt; 
     &lt;li&gt;⚙️ Config files (YAML, TOML, INI)&lt;/li&gt; 
     &lt;li&gt;📦 Archives (ZIP, RAR, 7Z, TAR)&lt;/li&gt; 
     &lt;li&gt;🔧 Binary files with hex view&lt;/li&gt; 
    &lt;/ul&gt; &lt;h4&gt;🎵 &lt;strong&gt;Media&lt;/strong&gt;&lt;/h4&gt; 
    &lt;ul&gt; 
     &lt;li&gt;🎵 Audio (MP3, FLAC, WAV, AAC)&lt;/li&gt; 
     &lt;li&gt;🎼 Sheet music&lt;/li&gt; 
     &lt;li&gt;🎨 Fonts (TTF, OTF, WOFF)&lt;/li&gt; 
     &lt;li&gt;🖌️ Vector graphics (SVG, EPS)&lt;/li&gt; 
     &lt;li&gt;📹 Subtitles (SRT, ASS)&lt;/li&gt; 
    &lt;/ul&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;🎯 &lt;strong&gt;Works Everywhere&lt;/strong&gt;&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;p&gt;&lt;strong&gt;File Explorer&lt;/strong&gt;&lt;/p&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/File%20Folder.png&quot; width=&quot;50&quot; /&gt; &lt;p&gt;Native integration&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;p&gt;&lt;strong&gt;Open/Save Dialogs&lt;/strong&gt;&lt;/p&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Desktop%20Computer.png&quot; width=&quot;50&quot; /&gt; &lt;p&gt;System-wide support&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;p&gt;&lt;strong&gt;3rd Party Managers&lt;/strong&gt;&lt;/p&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Toolbox.png&quot; width=&quot;50&quot; /&gt; &lt;p&gt;Total Commander, xplorer²&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;p&gt;&lt;strong&gt;Cloud Storage&lt;/strong&gt;&lt;/p&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Cloud.png&quot; width=&quot;50&quot; /&gt; &lt;p&gt;OneDrive, Dropbox ready&lt;/p&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📦 Get Started&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;Choose Your Adventure&lt;/h3&gt; 
 &lt;br /&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Mobile%20Phone.png&quot; width=&quot;70&quot; /&gt; &lt;h3&gt;&lt;strong&gt;Microsoft Store&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;strong&gt;Recommended for most users&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;✅ Automatic updates ✅ Sandboxed security ✅ One-click install&lt;/p&gt; &lt;br /&gt; &lt;a href=&quot;https://www.microsoft.com/store/apps/9nv4bs3l1h4s&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Get_it_from-Microsoft_Store-0078D4?style=for-the-badge&amp;amp;logo=microsoft&amp;amp;logoColor=white&quot; alt=&quot;Microsoft Store&quot; /&gt; &lt;/a&gt; &lt;p&gt;&lt;sub&gt;⚠️ Limited Open/Save dialog support&lt;/sub&gt;&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Package.png&quot; width=&quot;70&quot; /&gt; &lt;h3&gt;&lt;strong&gt;Installer&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;strong&gt;Full-featured experience&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;✅ Complete functionality ✅ Open/Save dialog support ✅ Portable option available&lt;/p&gt; &lt;br /&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Download-Latest_Release-00C853?style=for-the-badge&amp;amp;logo=github&amp;amp;logoColor=white&quot; alt=&quot;Latest Release&quot; /&gt; &lt;/a&gt; &lt;p&gt;&lt;sub&gt;💎 Get the full power&lt;/sub&gt;&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Food/Beer%20Mug.png&quot; width=&quot;70&quot; /&gt; &lt;h3&gt;&lt;strong&gt;Scoop&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;strong&gt;For command-line lovers&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;✅ Easy updates ✅ Reproducible installs ✅ Version management&lt;/p&gt; &lt;br /&gt; &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;scoop bucket add extras
scoop install quicklook
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;sub&gt;🤓 Power user choice&lt;/sub&gt;&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Crescent%20Moon.png&quot; width=&quot;70&quot; /&gt; &lt;h3&gt;&lt;strong&gt;Nightly&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;strong&gt;Live on the edge&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;✅ Latest features ✅ Bug fixes first ⚠️ May be unstable&lt;/p&gt; &lt;br /&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook/releases/&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Try-Nightly_Builds-FF6D00?style=for-the-badge&amp;amp;logo=github-actions&amp;amp;logoColor=white&quot; alt=&quot;Nightly Builds&quot; /&gt; &lt;/a&gt; &lt;p&gt;&lt;sub&gt;🌙 Experimental builds&lt;/sub&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;br /&gt; 
 &lt;details&gt; 
  &lt;summary&gt;&lt;b&gt;🤔 Not sure which version to choose?&lt;/b&gt;&lt;/summary&gt; 
  &lt;br /&gt; 
  &lt;table&gt; 
   &lt;thead&gt; 
    &lt;tr&gt; 
     &lt;th&gt;Feature&lt;/th&gt; 
     &lt;th&gt;Store&lt;/th&gt; 
     &lt;th&gt;Installer&lt;/th&gt; 
     &lt;th&gt;Scoop&lt;/th&gt; 
     &lt;th&gt;Nightly&lt;/th&gt; 
    &lt;/tr&gt; 
   &lt;/thead&gt; 
   &lt;tbody&gt; 
    &lt;tr&gt; 
     &lt;td&gt;Auto-updates&lt;/td&gt; 
     &lt;td&gt;✅&lt;/td&gt; 
     &lt;td&gt;⚠️&lt;/td&gt; 
     &lt;td&gt;✅&lt;/td&gt; 
     &lt;td&gt;⚠️&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;Open/Save dialogs&lt;/td&gt; 
     &lt;td&gt;❌&lt;/td&gt; 
     &lt;td&gt;✅&lt;/td&gt; 
     &lt;td&gt;✅&lt;/td&gt; 
     &lt;td&gt;✅&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;Portable mode&lt;/td&gt; 
     &lt;td&gt;❌&lt;/td&gt; 
     &lt;td&gt;✅&lt;/td&gt; 
     &lt;td&gt;❌&lt;/td&gt; 
     &lt;td&gt;✅&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;Stability&lt;/td&gt; 
     &lt;td&gt;✅✅✅&lt;/td&gt; 
     &lt;td&gt;✅✅✅&lt;/td&gt; 
     &lt;td&gt;✅✅✅&lt;/td&gt; 
     &lt;td&gt;✅✅&lt;/td&gt; 
    &lt;/tr&gt; 
   &lt;/tbody&gt; 
  &lt;/table&gt; 
  &lt;p&gt;📖 &lt;a href=&quot;https://github.com/QL-Win/QuickLook/wiki/Differences-Between-Distributions&quot;&gt;Read the full comparison&lt;/a&gt;&lt;/p&gt; 
 &lt;/details&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;h3&gt;⚡ Quick Start in 10 Seconds&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;pre&gt;&lt;code&gt;Step 1️⃣  Install QuickLook
         ↓
Step 2️⃣  It runs automatically
         ↓
Step 3️⃣  Select any file
         ↓
Step 4️⃣  Press SPACE
         ↓
Step 5️⃣  🎉 Magic happens!
&lt;/code&gt;&lt;/pre&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;p&gt;&lt;strong&gt;💡 Pro Tips:&lt;/strong&gt;&lt;/p&gt; 
    &lt;ul&gt; 
     &lt;li&gt;QuickLook lives in your system tray&lt;/li&gt; 
     &lt;li&gt;Works with &lt;strong&gt;any file&lt;/strong&gt; in File Explorer&lt;/li&gt; 
     &lt;li&gt;Use arrow keys to preview multiple files&lt;/li&gt; 
     &lt;li&gt;Press &lt;code&gt;Esc&lt;/code&gt; or &lt;code&gt;Space&lt;/code&gt; again to close&lt;/li&gt; 
     &lt;li&gt;Drag files directly from the preview!&lt;/li&gt; 
    &lt;/ul&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;⌨️ Master the Shortcuts&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;Your New Superpowers&lt;/h3&gt; 
 &lt;br /&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;h3&gt;🎮 &lt;strong&gt;Basic Controls&lt;/strong&gt;&lt;/h3&gt; 
     &lt;table&gt; 
      &lt;thead&gt; 
       &lt;tr&gt; 
        &lt;th&gt;Key&lt;/th&gt; 
        &lt;th&gt;Action&lt;/th&gt; 
       &lt;/tr&gt; 
      &lt;/thead&gt; 
      &lt;tbody&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;Space&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Toggle preview&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;Esc&lt;/kbd&gt; &lt;kbd&gt;Space&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Close window&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;Enter&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Open file&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;↑&lt;/kbd&gt; &lt;kbd&gt;↓&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Next/Previous&lt;/td&gt; 
       &lt;/tr&gt; 
      &lt;/tbody&gt; 
     &lt;/table&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;h3&gt;🔍 &lt;strong&gt;Navigation&lt;/strong&gt;&lt;/h3&gt; 
     &lt;table&gt; 
      &lt;thead&gt; 
       &lt;tr&gt; 
        &lt;th&gt;Key&lt;/th&gt; 
        &lt;th&gt;Action&lt;/th&gt; 
       &lt;/tr&gt; 
      &lt;/thead&gt; 
      &lt;tbody&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;←&lt;/kbd&gt; &lt;kbd&gt;→&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Navigate files&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;Mouse Click&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Select file&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;Page Up&lt;/kbd&gt; &lt;kbd&gt;Down&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Scroll content&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;Home&lt;/kbd&gt; &lt;kbd&gt;End&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Jump to start/end&lt;/td&gt; 
       &lt;/tr&gt; 
      &lt;/tbody&gt; 
     &lt;/table&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;h3&gt;🎨 &lt;strong&gt;Advanced&lt;/strong&gt;&lt;/h3&gt; 
     &lt;table&gt; 
      &lt;thead&gt; 
       &lt;tr&gt; 
        &lt;th&gt;Key&lt;/th&gt; 
        &lt;th&gt;Action&lt;/th&gt; 
       &lt;/tr&gt; 
      &lt;/thead&gt; 
      &lt;tbody&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;Wheel&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Zoom (images)&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt;+&lt;kbd&gt;Wheel&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Zoom (PDFs)&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;L-Click Drag&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Rotate 3D&lt;/td&gt; 
       &lt;/tr&gt; 
       &lt;tr&gt; 
        &lt;td&gt;&lt;kbd&gt;M-Click Drag&lt;/kbd&gt;&lt;/td&gt; 
        &lt;td&gt;Pan 3D&lt;/td&gt; 
       &lt;/tr&gt; 
      &lt;/tbody&gt; 
     &lt;/table&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;br /&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;&lt;strong&gt;💡 Pro Tip:&lt;/strong&gt; You can navigate files using arrow keys even when the preview window isn&#39;t focused!&lt;/p&gt; 
 &lt;/blockquote&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🧩 Extend&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;Supercharge QuickLook with Plugins&lt;/h3&gt; 
 &lt;p&gt;&lt;em&gt;Transform QuickLook into a universal file viewer&lt;/em&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;!-- Featured Plugins Grid --&gt; 
 &lt;table align=&quot;center&quot;&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;50%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Clipboard.png&quot; width=&quot;80&quot; /&gt; &lt;h3&gt;&lt;strong&gt;OfficeViewer&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Preview &lt;strong&gt;Word, Excel &amp;amp; PowerPoint&lt;/strong&gt; files&lt;/p&gt; &lt;p&gt;&lt;strong&gt;No Microsoft Office required!&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;✅ Native Office formats
✅ Standalone viewer
✅ Fast rendering
&lt;/code&gt;&lt;/pre&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook.Plugin.OfficeViewer/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Download-Plugin-FF6D00?style=for-the-badge&quot; alt=&quot;Download&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;50%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Page%20Facing%20Up.png&quot; width=&quot;80&quot; /&gt; &lt;h3&gt;&lt;strong&gt;PdfViewer-Native&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Enhanced PDF viewing with &lt;strong&gt;WebView2&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Modern, fast, feature-rich&lt;/p&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;✅ Smooth scrolling
✅ Search &amp;amp; annotations
✅ Hardware acceleration
&lt;/code&gt;&lt;/pre&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook.Plugin.PdfViewer-Native/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Download-Plugin-00C853?style=for-the-badge&quot; alt=&quot;Download&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;50%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Printer.png&quot; width=&quot;80&quot; /&gt; &lt;h3&gt;&lt;strong&gt;PostScriptViewer&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Preview &lt;code&gt;.ps&lt;/code&gt; and &lt;code&gt;.eps&lt;/code&gt; files&lt;/p&gt; &lt;p&gt;Perfect for designers&lt;/p&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;✅ Vector rendering
✅ High quality output
✅ Professional formats
&lt;/code&gt;&lt;/pre&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook.Plugin.PostScriptViewer/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Download-Plugin-3DA639?style=for-the-badge&quot; alt=&quot;Download&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;50%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Triangular%20Ruler.png&quot; width=&quot;80&quot; /&gt; &lt;h3&gt;&lt;strong&gt;CADImport&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;View CAD files natively&lt;/p&gt; &lt;p&gt;&lt;code&gt;.dwg&lt;/code&gt;, &lt;code&gt;.dxf&lt;/code&gt;, &lt;code&gt;.plt&lt;/code&gt;, &lt;code&gt;.cgm&lt;/code&gt;&lt;/p&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;✅ Engineering drawings
✅ Architecture files
✅ Technical diagrams
&lt;/code&gt;&lt;/pre&gt; &lt;a href=&quot;https://github.com/emako/QuickLook.Plugin.CADImport/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Download-Plugin-0078D4?style=for-the-badge&quot; alt=&quot;Download&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;br /&gt; 
 &lt;h3&gt;📦 How to Install or Upgrade Plugins&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;p&gt;&lt;strong&gt;1️⃣ Download&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Get the &lt;code&gt;.qlplugin&lt;/code&gt; file&lt;/p&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;p&gt;&lt;strong&gt;2️⃣ Install&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Ensure QuickLook is currently running, select the file and press &lt;code&gt;Spacebar&lt;/code&gt;.&lt;/p&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;p&gt;&lt;strong&gt;3️⃣ Restart&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Click on the &lt;code&gt;Install&lt;/code&gt; button, then restart QuickLook.&lt;/p&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h3&gt;📦 How to Remove Plugins&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;p&gt;&lt;strong&gt;1️⃣ Quit&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Quit QuickLook.&lt;/p&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;p&gt;&lt;strong&gt;2️⃣ Navigate&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Navigate to the &lt;a href=&quot;https://github.com/QL-Win/QuickLook/wiki/Differences-Between-Distributions#user-data-location&quot;&gt;Data location&lt;/a&gt;.&lt;/p&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;p&gt;&lt;strong&gt;3️⃣ Remove&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;You should find several folders. Remove the one you do not want to use.&lt;/p&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://github.com/QL-Win/QuickLook/wiki/Available-Plugins&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/🔍_Browse_All_Plugins-white?style=for-the-badge&quot; alt=&quot;Browse Plugins&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://github.com/QL-Win/QuickLook/wiki/Available-Plugins#how-to-install-or-upgrade-a-plugin&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/📖_Installation_Guide-white?style=for-the-badge&quot; alt=&quot;Installation Guide&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;💖 Community&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;Join Thousands of Happy Users&lt;/h3&gt; 
 &lt;br /&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Smilies/Speech%20Balloon.png&quot; width=&quot;80&quot; /&gt; &lt;h3&gt;&lt;strong&gt;QQ Group&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Join our Chinese community&lt;/p&gt; &lt;p&gt;&lt;strong&gt;371388501&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt; &lt;a href=&quot;https://qm.qq.com/q/KIczirznua&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Join-QQ_Group-12B7F5?style=for-the-badge&amp;amp;logo=tencentqq&amp;amp;logoColor=white&quot; alt=&quot;QQ Group&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;img src=&quot;https://github.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/raw/master/Emojis/Travel%20and%20places/Globe%20with%20Meridians.png?raw=true&quot; width=&quot;80&quot; /&gt; &lt;h3&gt;&lt;strong&gt;Translate&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Help QuickLook speak your language&lt;/p&gt; &lt;p&gt;Make it accessible&lt;/p&gt; &lt;br /&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook/wiki/Translations&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Contribute-Translations-FFD700?style=for-the-badge&amp;amp;logo=googletranslate&amp;amp;logoColor=white&quot; alt=&quot;Translations&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Smilies/Star-Struck.png&quot; width=&quot;80&quot; /&gt; &lt;h3&gt;&lt;strong&gt;Star Us&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Show your support&lt;/p&gt; &lt;p&gt;It means a lot!&lt;/p&gt; &lt;br /&gt; &lt;a href=&quot;https://github.com/QL-Win/QuickLook/stargazers&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/stars/QL-Win/QuickLook?style=for-the-badge&amp;amp;logo=github&amp;amp;color=FFD700&amp;amp;logoColor=white&quot; alt=&quot;Star us&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;br /&gt; 
 &lt;h3&gt;👨‍💻 For Developers&lt;/h3&gt; 
 &lt;p&gt;Interested in contributing? Check out our development resources:&lt;/p&gt; 
 &lt;a href=&quot;https://github.com/QL-Win/QuickLook/wiki&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/📚_Developer_Wiki-black?style=for-the-badge&amp;amp;logo=gitbook&amp;amp;logoColor=white&quot; alt=&quot;Wiki&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/QL-Win/QuickLook/master/CodeMaid.config&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/🛠️_Code_Style_Guide-black?style=for-the-badge&amp;amp;logo=visualstudiocode&amp;amp;logoColor=white&quot; alt=&quot;Code Style&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://github.com/QL-Win/QuickLook/issues&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/🐛_Report_Issues-black?style=for-the-badge&amp;amp;logo=github&amp;amp;logoColor=white&quot; alt=&quot;Issues&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🙏 Credits&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;Built with Love by Amazing People&lt;/h3&gt; 
 &lt;br /&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;img src=&quot;https://github.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/raw/master/Emojis/Activities/Artist%20Palette.png?raw=true&quot; width=&quot;60&quot; /&gt; &lt;p&gt;&lt;strong&gt;Design Team&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://twitter.com/OiCkilL&quot;&gt;@OiCkilL&lt;/a&gt; &lt;a href=&quot;https://twitter.com/qubitsdev&quot;&gt;@QubitsDev&lt;/a&gt; &lt;a href=&quot;https://github.com/Donnnno&quot;&gt;@Donno&lt;/a&gt; &lt;a href=&quot;https://github.com/Shomnipotence&quot;&gt;@Shomnipotence&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Fluent UI &amp;amp; Icons&lt;/em&gt;&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Smilies/Nerd%20Face.png&quot; width=&quot;60&quot; /&gt; &lt;p&gt;&lt;strong&gt;Contributors&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/QL-Win/QuickLook/graphs/contributors&quot;&gt;Our Amazing Team&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Code, translations &amp;amp; ideas&lt;/em&gt;&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;img src=&quot;https://github.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/raw/master/Emojis/Objects/Books.png?raw=true&quot; width=&quot;60&quot; /&gt; &lt;p&gt;&lt;strong&gt;Open Source&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/QL-Win/QuickLook/wiki/On-the-Shoulders-of-Giants&quot;&gt;Libraries We Use&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Standing on giants&lt;/em&gt;&lt;/p&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Smilies/Smiling%20Face%20with%20Hearts.png&quot; width=&quot;60&quot; /&gt; &lt;p&gt;&lt;strong&gt;You!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Every User Matters&lt;/p&gt; &lt;p&gt;&lt;em&gt;Thank you for using QuickLook&lt;/em&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📜 License&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;br /&gt; 
 &lt;img src=&quot;https://www.gnu.org/graphics/gplv3-127x51.png&quot; alt=&quot;GPL v3&quot; /&gt; 
 &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;QuickLook is free and open source under &lt;a href=&quot;https://opensource.org/licenses/GPL-3.0&quot;&gt;GPL-3.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;em&gt;Free software, free forever. No ads, no tracking, no premium tiers.&lt;/em&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;strong&gt;Need commercial licensing?&lt;/strong&gt; Contact us for sublicensing options.&lt;/p&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;br /&gt; 
 &lt;h2&gt;⭐ Like QuickLook? Star the repo!&lt;/h2&gt; 
 &lt;p&gt;&lt;strong&gt;Your support keeps this project alive and improving&lt;/strong&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://quicklookapp.vercel.app&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/🏠_Visit_Homepage-white?style=for-the-badge&quot; alt=&quot;Homepage&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://github.com/QL-Win/QuickLook/wiki&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/📖_Documentation-white?style=for-the-badge&quot; alt=&quot;Docs&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://github.com/QL-Win/QuickLook/issues&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/💬_Get_Help-white?style=for-the-badge&quot; alt=&quot;Help&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://github.com/QL-Win/QuickLook/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/📦_Download-white?style=for-the-badge&quot; alt=&quot;Download&quot; /&gt; &lt;/a&gt; 
 &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;sub&gt;Made with ❤️ by the QuickLook community&lt;/sub&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;!-- Animated Emojis Footer --&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Rocket.png&quot; width=&quot;25&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Smilies/Beating%20Heart.png&quot; width=&quot;25&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Smilies/Star-Struck.png&quot; width=&quot;25&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/refs/heads/master/Emojis/Travel%20and%20places/Star.png&quot; width=&quot;25&quot; /&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/3e97f8b153f928dcaf569beb41675eef7ac54ec23eefbf75a93409dcae82880c/QL-Win/QuickLook" medium="image" />
      
    </item>
    
    <item>
      <title>jasontaylordev/CleanArchitecture</title>
      <link>https://github.com/jasontaylordev/CleanArchitecture</link>
      <description>&lt;p&gt;Clean Architecture Solution Template for ASP.NET Core&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Clean Architecture Solution Template&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/actions/workflows/build.yml&quot;&gt;&lt;img src=&quot;https://github.com/jasontaylordev/CleanArchitecture/actions/workflows/build.yml/badge.svg?sanitize=true&quot; alt=&quot;Build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/actions/workflows/codeql.yml&quot;&gt;&lt;img src=&quot;https://github.com/jasontaylordev/CleanArchitecture/actions/workflows/codeql.yml/badge.svg?sanitize=true&quot; alt=&quot;CodeQL&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.nuget.org/packages/Clean.Architecture.Solution.Template&quot;&gt;&lt;img src=&quot;https://img.shields.io/nuget/v/Clean.Architecture.Solution.Template?label=NuGet&quot; alt=&quot;Nuget&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.nuget.org/packages/Clean.Architecture.Solution.Template&quot;&gt;&lt;img src=&quot;https://img.shields.io/nuget/dt/Clean.Architecture.Solution.Template?label=Downloads&quot; alt=&quot;Nuget&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/twitter/follow/jasontaylordev?label=Follow&amp;amp;style=social&quot; alt=&quot;Twitter Follow&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;The goal of this template is to provide a straightforward and efficient approach to enterprise application development, leveraging the power of Clean Architecture and &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core. Using this template, you can effortlessly create a new app with Angular, React, or Web API only, powered by &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core and Aspire. Getting started is easy - simply install the &lt;strong&gt;.NET template&lt;/strong&gt; (see below for full details).&lt;/p&gt; 
&lt;p&gt;For full documentation, visit &lt;strong&gt;&lt;a href=&quot;https://cleanarchitecture.jasontaylor.dev&quot;&gt;cleanarchitecture.jasontaylor.dev&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;If you find this project useful, please give it a star. Thanks! ⭐&lt;/p&gt; 
&lt;h2&gt;Getting started&lt;/h2&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dotnet.microsoft.com/download/dotnet/10.0&quot;&gt;.NET 10.0 SDK&lt;/a&gt; or later&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; (LTS) — only required if you plan to use the Angular or React frontend&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.docker.com/products/docker-desktop/&quot;&gt;Docker Desktop&lt;/a&gt; or &lt;a href=&quot;https://podman.io/&quot;&gt;Podman&lt;/a&gt; (or any OCI-compliant container runtime) — only required when using SQL Server or PostgreSQL. Not required when using SQLite (the default).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Install the template&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet new install Clean.Architecture.Solution.Template
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Create a new solution&lt;/h3&gt; 
&lt;p&gt;Create a new solution using the template. Specify the client framework using &lt;code&gt;--client-framework&lt;/code&gt; (&lt;code&gt;-cf&lt;/code&gt;) and the database provider using &lt;code&gt;--database&lt;/code&gt; (&lt;code&gt;-db&lt;/code&gt;):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet new ca-sln --client-framework [angular|react|none] --database [postgresql|sqlite|sqlserver] --output YourProjectName
&lt;/code&gt;&lt;/pre&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Option&lt;/th&gt; 
   &lt;th&gt;Values&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;--client-framework&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;angular&lt;/code&gt;, &lt;code&gt;react&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;angular&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;--database&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;postgresql&lt;/code&gt;, &lt;code&gt;sqlite&lt;/code&gt;, &lt;code&gt;sqlserver&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;sqlite&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;🅰️ Angular SPA with &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core Web API and PostgreSQL:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet new ca-sln -cf angular -db postgresql -o YourProjectName
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;⚛️ React SPA with &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core Web API and SQL Server:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet new ca-sln -cf react -db sqlserver -o YourProjectName
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;🔌 &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core Web API only with SQLite:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet new ca-sln -cf none -db sqlite -o YourProjectName
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;💡 &lt;strong&gt;Tip:&lt;/strong&gt; Run &lt;code&gt;dotnet new ca-sln --help&lt;/code&gt; to see all available template options.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Run the app&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet run --project .\src\AppHost
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The Aspire dashboard will open automatically, showing the application URLs and logs.&lt;/p&gt; 
&lt;p&gt;To learn more, see the &lt;a href=&quot;https://cleanarchitecture.jasontaylor.dev/docs/getting-started/&quot;&gt;Getting started&lt;/a&gt; guide and &lt;a href=&quot;https://cleanarchitecture.jasontaylor.dev/docs/architecture/&quot;&gt;Architecture&lt;/a&gt; overview.&lt;/p&gt; 
&lt;h2&gt;Technologies&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core&quot;&gt;ASP.NET Core 10&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aspire.dev&quot;&gt;Aspire&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/ef/core/&quot;&gt;Entity Framework Core 10&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://angular.dev/&quot;&gt;Angular 21&lt;/a&gt; or &lt;a href=&quot;https://react.dev/&quot;&gt;React 19&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jbogard/MediatR&quot;&gt;MediatR&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://automapper.org/&quot;&gt;AutoMapper&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://fluentvalidation.net/&quot;&gt;FluentValidation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://nunit.org/&quot;&gt;NUnit&lt;/a&gt;, &lt;a href=&quot;https://docs.shouldly.org/&quot;&gt;Shouldly&lt;/a&gt;, &lt;a href=&quot;https://github.com/devlooped/moq&quot;&gt;Moq&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://github.com/jbogard/Respawn&quot;&gt;Respawn&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://scalar.com/&quot;&gt;Scalar&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Versions&lt;/h2&gt; 
&lt;p&gt;The &lt;code&gt;main&lt;/code&gt; branch is on &lt;strong&gt;.NET 10.0&lt;/strong&gt;. Previous versions are available:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Version&lt;/th&gt; 
   &lt;th&gt;Branch&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;.NET 9.0&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/tree/net9.0&quot;&gt;&lt;code&gt;net9.0&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;.NET 8.0&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/tree/net8.0&quot;&gt;&lt;code&gt;net8.0&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;.NET 7.0&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/tree/net7.0&quot;&gt;&lt;code&gt;net7.0&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;.NET 6.0&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/tree/net6.0&quot;&gt;&lt;code&gt;net6.0&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;.NET 5.0&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/tree/net5.0&quot;&gt;&lt;code&gt;net5.0&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;.NET Core 3.1&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/tree/netcore3.1&quot;&gt;&lt;code&gt;netcore3.1&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Architectural decisions&lt;/h2&gt; 
&lt;p&gt;Key design decisions are documented as &lt;a href=&quot;https://raw.githubusercontent.com/jasontaylordev/CleanArchitecture/main/docs/decisions/&quot;&gt;Architecture Decision Records&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Learn more&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;📖 &lt;a href=&quot;https://cleanarchitecture.jasontaylor.dev&quot;&gt;Clean Architecture Solution Template documentation&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;p&gt;If you are having problems, please let me know by &lt;a href=&quot;https://github.com/jasontaylordev/CleanArchitecture/issues/new/choose&quot;&gt;raising a new issue&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the &lt;a href=&quot;https://raw.githubusercontent.com/jasontaylordev/CleanArchitecture/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/8c87e5082a17b5ebb07566401cdf32e8df7b38877e14f837140ff31b2090a339/jasontaylordev/CleanArchitecture" medium="image" />
      
    </item>
    
    <item>
      <title>dotnet/eShop</title>
      <link>https://github.com/dotnet/eShop</link>
      <description>&lt;p&gt;A reference .NET application implementing an eCommerce site&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;eShop Reference Application - &quot;AdventureWorks&quot;&lt;/h1&gt; 
&lt;p&gt;A reference .NET application implementing an e-commerce website using a services-based architecture using &lt;a href=&quot;https://learn.microsoft.com/dotnet/aspire/&quot;&gt;.NET Aspire&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/dotnet/eShop/main/img/eshop_architecture.png&quot; alt=&quot;eShop Reference Application architecture diagram&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/dotnet/eShop/main/img/eshop_homepage.png&quot; alt=&quot;eShop homepage screenshot&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;This version of eShop is based on .NET 9.&lt;/p&gt; 
&lt;p&gt;Previous eShop versions:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dotnet/eShop/tree/release/8.0&quot;&gt;.NET 8&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Clone the eShop repository: &lt;a href=&quot;https://github.com/dotnet/eshop&quot;&gt;https://github.com/dotnet/eshop&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/engine/install/&quot;&gt;Install &amp;amp; start Docker Desktop&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Windows with Visual Studio&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Install &lt;a href=&quot;https://visualstudio.microsoft.com/vs/&quot;&gt;Visual Studio 2022 version 17.10 or newer&lt;/a&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;Select the following workloads: 
    &lt;ul&gt; 
     &lt;li&gt;&lt;code&gt;ASP.NET and web development&lt;/code&gt; workload.&lt;/li&gt; 
     &lt;li&gt;&lt;code&gt;.NET Aspire SDK&lt;/code&gt; component in &lt;code&gt;Individual components&lt;/code&gt;.&lt;/li&gt; 
     &lt;li&gt;Optional: &lt;code&gt;.NET Multi-platform App UI development&lt;/code&gt; to run client apps&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Or&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run the following commands in a Powershell &amp;amp; Terminal running as &lt;code&gt;Administrator&lt;/code&gt; to automatically configure your environment with the required tools to build and run this application. (Note: A restart is required and included in the script below.)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;install-Module -Name Microsoft.WinGet.Configuration -AllowPrerelease -AcceptLicense -Force
$env:Path = [System.Environment]::GetEnvironmentVariable(&quot;Path&quot;,&quot;Machine&quot;) + &quot;;&quot; + [System.Environment]::GetEnvironmentVariable(&quot;Path&quot;,&quot;User&quot;)
get-WinGetConfiguration -file .\.configurations\vside.dsc.yaml | Invoke-WinGetConfiguration -AcceptConfigurationAgreements
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;From Dev Home go to &lt;code&gt;Machine Configuration -&amp;gt; Clone repositories&lt;/code&gt;. Enter the URL for this repository. In the confirmation screen look for the section &lt;code&gt;Configuration File Detected&lt;/code&gt; and click &lt;code&gt;Run File&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Mac, Linux, &amp;amp; Windows without Visual Studio&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Install the latest &lt;a href=&quot;https://dot.net/download?cid=eshop&quot;&gt;.NET 9 SDK&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Or&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run the following commands in a Powershell &amp;amp; Terminal running as &lt;code&gt;Administrator&lt;/code&gt; to automatically configuration your environment with the required tools to build and run this application. (Note: A restart is required after running the script below.)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h5&gt;Install Visual Studio Code and related extensions&lt;/h5&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;install-Module -Name Microsoft.WinGet.Configuration -AllowPrerelease -AcceptLicense  -Force
$env:Path = [System.Environment]::GetEnvironmentVariable(&quot;Path&quot;,&quot;Machine&quot;) + &quot;;&quot; + [System.Environment]::GetEnvironmentVariable(&quot;Path&quot;,&quot;User&quot;)
get-WinGetConfiguration -file .\.configurations\vscode.dsc.yaml | Invoke-WinGetConfiguration -AcceptConfigurationAgreements
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Note: These commands may require &lt;code&gt;sudo&lt;/code&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
 &lt;li&gt;Optional: Install &lt;a href=&quot;https://code.visualstudio.com/docs/csharp/get-started&quot;&gt;Visual Studio Code with C# Dev Kit&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Optional: Install &lt;a href=&quot;https://learn.microsoft.com/dotnet/maui/get-started/installation?tabs=visual-studio-code&quot;&gt;.NET MAUI Workload&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Note: When running on Mac with Apple Silicon (M series processor), Rosetta 2 for grpc-tools.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Running the solution&lt;/h3&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;Remember to ensure that Docker is started&lt;/p&gt; 
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;(Windows only) Run the application from Visual Studio:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
 &lt;li&gt;Open the &lt;code&gt;eShop.Web.slnf&lt;/code&gt; file in Visual Studio&lt;/li&gt; 
 &lt;li&gt;Ensure that &lt;code&gt;eShop.AppHost.csproj&lt;/code&gt; is your startup project&lt;/li&gt; 
 &lt;li&gt;Hit Ctrl-F5 to launch Aspire&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
 &lt;li&gt;Or run the application from your terminal:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;dotnet run --project src/eShop.AppHost/eShop.AppHost.csproj
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;then look for lines like this in the console output in order to find the URL to open the Aspire dashboard:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;Login to the dashboard at: http://localhost:19888/login?t=uniquelogincodeforyou
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;You may need to install &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core HTTPS development certificates first, and then close all browser tabs. Learn more at &lt;a href=&quot;https://aka.ms/aspnet/https-trust-dev-cert&quot;&gt;https://aka.ms/aspnet/https-trust-dev-cert&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Azure Open AI&lt;/h3&gt; 
&lt;p&gt;When using Azure OpenAI, inside &lt;em&gt;eShop.AppHost/appsettings.json&lt;/em&gt;, add the following section:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;  &quot;ConnectionStrings&quot;: {
    &quot;OpenAi&quot;: &quot;Endpoint=xxx;Key=xxx;&quot;
  }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Replace the values with your own. Then, in the eShop.AppHost &lt;em&gt;Program.cs&lt;/em&gt;, set this value to &lt;strong&gt;true&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;bool useOpenAI = false;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Here&#39;s additional guidance on the &lt;a href=&quot;https://learn.microsoft.com/dotnet/aspire/azureai/azureai-openai-component?tabs=dotnet-cli&quot;&gt;.NET Aspire OpenAI component&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Use Azure Developer CLI&lt;/h3&gt; 
&lt;p&gt;You can use the &lt;a href=&quot;https://aka.ms/azd&quot;&gt;Azure Developer CLI&lt;/a&gt; to run this project on Azure with only a few commands. Follow the next instructions:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Install the latest or update to the latest &lt;a href=&quot;https://aka.ms/azure-dev/install&quot;&gt;Azure Developer CLI (azd)&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Log in &lt;code&gt;azd&lt;/code&gt; (if you haven&#39;t done it before) to your Azure account:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;azd auth login
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Initialize &lt;code&gt;azd&lt;/code&gt; from the root of the repo.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;azd init
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;During init:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Select &lt;code&gt;Use code in the current directory&lt;/code&gt;. Azd will automatically detect the .NET Aspire project.&lt;/li&gt; 
   &lt;li&gt;Confirm &lt;code&gt;.NET (Aspire)&lt;/code&gt; and continue.&lt;/li&gt; 
   &lt;li&gt;Select which services to expose to the Internet (exposing &lt;code&gt;webapp&lt;/code&gt; is enough to test the sample).&lt;/li&gt; 
   &lt;li&gt;Finalize the initialization by giving a name to your environment.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Create Azure resources and deploy the sample by running:&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;azd up
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Notes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;The operation takes a few minutes the first time it is ever run for an environment.&lt;/li&gt; 
 &lt;li&gt;At the end of the process, &lt;code&gt;azd&lt;/code&gt; will display the &lt;code&gt;url&lt;/code&gt; for the webapp. Follow that link to test the sample.&lt;/li&gt; 
 &lt;li&gt;You can run &lt;code&gt;azd up&lt;/code&gt; after saving changes to the sample to re-deploy and update the sample.&lt;/li&gt; 
 &lt;li&gt;Report any issues to &lt;a href=&quot;https://github.com/Azure/azure-dev/issues&quot;&gt;azure-dev&lt;/a&gt; repo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/azure/developer/azure-developer-cli/troubleshoot?tabs=Browser&quot;&gt;FAQ and troubleshoot&lt;/a&gt; for azd.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;For more information on contributing to this repo, read &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/eShop/main/CONTRIBUTING.md&quot;&gt;the contribution documentation&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/eShop/main/CODE-OF-CONDUCT.md&quot;&gt;the Code of Conduct&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Sample data&lt;/h3&gt; 
&lt;p&gt;The sample catalog data is defined in &lt;a href=&quot;https://github.com/dotnet/eShop/raw/main/src/Catalog.API/Setup/catalog.json&quot;&gt;catalog.json&lt;/a&gt;. Those product names, descriptions, and brand names are fictional and were generated using &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/chatgpt&quot;&gt;GPT-35-Turbo&lt;/a&gt;, and the corresponding &lt;a href=&quot;https://github.com/dotnet/eShop/tree/main/src/Catalog.API/Pics&quot;&gt;product images&lt;/a&gt; were generated using &lt;a href=&quot;https://openai.com/dall-e-3&quot;&gt;DALL·E 3&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;eShop on Azure&lt;/h2&gt; 
&lt;p&gt;For a version of this app configured for deployment on Azure, please view &lt;a href=&quot;https://github.com/Azure-Samples/eShopOnAzure&quot;&gt;the eShop on Azure&lt;/a&gt; repo.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/59dd56aa20337094ff5f188953e3497a3771f7b7c09759aebc90c93745a67456/dotnet/eShop" medium="image" />
      
    </item>
    
    <item>
      <title>mob-sakai/ParticleEffectForUGUI</title>
      <link>https://github.com/mob-sakai/ParticleEffectForUGUI</link>
      <description>&lt;p&gt;Render particle effect in UnityUI(uGUI). Maskable, sortable, and no extra Camera/RenderTexture/Canvas.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;&lt;img alt=&quot;UIParticleIcon&quot; src=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/assets/12690315/d76e105e-a840-4f61-a1f6-8cf311c0812d&quot; width=&quot;26&quot; /&gt; Particle Effect For UGUI (UI Particle) 
 &lt;!-- omit in toc --&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://openupm.com/packages/com.coffee.ui-particle/&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/com.coffee.ui-particle?label=openupm&amp;amp;registry_uri=https://package.openupm.com&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/mob-sakai/ParticleEffectForUGUI&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/raw/main/LICENSE.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/mob-sakai/ParticleEffectForUGUI.svg?sanitize=true&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt; &lt;img src=&quot;https://img.shields.io/badge/Unity-2018.2+-57b9d3.svg?style=flat&amp;amp;logo=unity&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/uGUI_2.0_Ready-57b9d3.svg?style=flat&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/UPR%2FHDPR_Ready-57b9d3.svg?style=flat&quot; alt=&quot;&quot; /&gt;&lt;br /&gt; &lt;img src=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/actions/workflows/test.yml/badge.svg?branch=develop&quot; alt=&quot;&quot; /&gt; &lt;a href=&quot;http://makeapullrequest.com&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/PRs-welcome-orange.svg?sanitize=true&quot; alt=&quot;PRs Welcome&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/subscription&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/watchers/mob-sakai/ParticleEffectForUGUI.svg?style=social&amp;amp;label=Watch&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://twitter.com/intent/follow?screen_name=mob_sakai&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&amp;amp;style=social&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;lt;&amp;lt; &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-description-&quot;&gt;📝 Description&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-key-features&quot;&gt;📌 Key Features&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-demo&quot;&gt;🎮 Demo&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-installation&quot;&gt;⚙ Installation&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-usage&quot;&gt;🚀 Usage&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-development-note&quot;&gt;🛠 Development Note&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-contributing&quot;&gt;🤝 Contributing&lt;/a&gt; &amp;gt;&amp;gt;&lt;/p&gt; 
&lt;h2&gt;📝 Description 
 &lt;!-- omit in toc --&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/12690315/41771577-8da4b968-7650-11e8-9524-cd162c422d9d.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;This package uses the new APIs &lt;code&gt;MeshBake/MeshTrailBake&lt;/code&gt; (introduced in Unity 2018.2) to render particles through &lt;code&gt;CanvasRenderer&lt;/code&gt;.&lt;br /&gt; You can render, mask, and sort your &lt;code&gt;ParticleSystems&lt;/code&gt; for UI without the need for an additional &lt;code&gt;Camera&lt;/code&gt;, &lt;code&gt;RenderTexture&lt;/code&gt;, or &lt;code&gt;Canvas&lt;/code&gt;.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-key-features&quot;&gt;📌 Key Features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-demo&quot;&gt;🎮 Demo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-installation&quot;&gt;⚙ Installation&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#install-via-openupm&quot;&gt;Install via OpenUPM&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#install-via-upm-with-package-manager-ui&quot;&gt;Install via UPM (with Package Manager UI)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#install-via-upm-manually&quot;&gt;Install via UPM (Manually)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#install-as-embedded-package&quot;&gt;Install as Embedded Package&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-usage&quot;&gt;🚀 Usage&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#component-uiparticle&quot;&gt;Component: UIParticle&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#basic-usage&quot;&gt;Basic Usage&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#usage-with-your-existing-particlesystem-prefab&quot;&gt;Usage with Your Existing ParticleSystem Prefab&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#usage-with-mask-or-rectmask2d-component&quot;&gt;Usage with &lt;code&gt;Mask&lt;/code&gt; or &lt;code&gt;RectMask2D&lt;/code&gt; Component&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#usage-with-script&quot;&gt;Usage with Script&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#component-uiparticleattractor&quot;&gt;Component: UIParticleAttractor&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#project-settings&quot;&gt;Project Settings&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-development-note&quot;&gt;🛠 Development Note&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#compares-the-baking-mesh-approach-with-the-conventional-approach&quot;&gt;Compares the Baking mesh approach with the conventional approach&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#performance-test-results&quot;&gt;Performance test results&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-faq-why-are-my-uiparticles-not-displayed-correctly&quot;&gt;🔍 FAQ: Why Are My UIParticles Not Displayed Correctly?&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#shader-limitation&quot;&gt;Shader Limitation&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#built-in-shaders-are-not-supported&quot;&gt;Built-in shaders are not supported&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#unity-2018-or-2019-uvzw-components-will-be-discarded&quot;&gt;(Unity 2018 or 2019) UV.zw components will be discarded&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#unity-2018-or-2019-custom-vertex-streams&quot;&gt;(Unity 2018 or 2019) Custom vertex streams&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#overheads&quot;&gt;Overheads&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#how-to-make-a-custom-shader-to-support-mask-and-rectmask2d-component&quot;&gt;How to Make a Custom Shader to Support &lt;code&gt;Mask&lt;/code&gt; and &lt;code&gt;RectMask2D&lt;/code&gt; Component&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#-contributing&quot;&gt;🤝 Contributing&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#issues&quot;&gt;Issues&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#pull-requests&quot;&gt;Pull Requests&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#support&quot;&gt;Support&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#license&quot;&gt;License&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#author&quot;&gt;Author&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#see-also&quot;&gt;See Also&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;📌 Key Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Easy to use:&lt;/strong&gt; The package is ready to use out of the box.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Sortable:&lt;/strong&gt; Sort particle effects and other UI elements by sibling index.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Maskable:&lt;/strong&gt; Supports &lt;code&gt;Mask&lt;/code&gt; or &lt;code&gt;RectMask2D&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;No extra components required:&lt;/strong&gt; No need for an additional &lt;code&gt;Camera&lt;/code&gt;, &lt;code&gt;RenderTexture&lt;/code&gt;, or &lt;code&gt;Canvas&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Trail module support:&lt;/strong&gt; Fully supports the Trail module.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;CanvasGroup alpha support:&lt;/strong&gt; Integrates with &lt;code&gt;CanvasGroup&lt;/code&gt; alpha.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;No allocations:&lt;/strong&gt; Efficiently renders particles without allocations.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Any canvas render mode support:&lt;/strong&gt; Works with overlay, camera space, and world space.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Any Render pipeline support:&lt;/strong&gt; Compatible with Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Disabling domain reload support:&lt;/strong&gt; Supports disabling &lt;code&gt;Enter Play Mode Options &amp;gt; Reload Domain&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Animatable material properties:&lt;/strong&gt; Supports changing material properties with AnimationClip (AnimatableProperty).&lt;br /&gt; &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/53286323-2d94a980-37b0-11e9-8afb-c4a207805ff2.gif&quot; alt=&quot;AnimatableProperty.gif&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multiple materials:&lt;/strong&gt; Supports 8+ materials.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Correct positioning:&lt;/strong&gt; Adjusts world space particle positions correctly when changing window size for standalone platforms (Windows, MacOSX, and Linux).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Adaptive scaling:&lt;/strong&gt; Provides adaptive scaling for UI (AutoScalingMode).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Performance optimization:&lt;/strong&gt; Mesh sharing group to improve performance.&lt;br /&gt; &lt;img alt=&quot;MeshSharing.gif&quot; src=&quot;https://user-images.githubusercontent.com/12690315/174311048-c882df81-6c34-4eba-b0aa-5645457692f1.gif&quot; width=&quot;450&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Particle attractor:&lt;/strong&gt; Includes a particle attractor component.&lt;br /&gt; &lt;img alt=&quot;ParticleAttractor.gif&quot; src=&quot;https://user-images.githubusercontent.com/12690315/174311027-462929a4-13f0-4ec4-86ea-9c832f2eecf1.gif&quot; width=&quot;450&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Emission position mode:&lt;/strong&gt; Supports relative/absolute particle emission position modes.&lt;br /&gt; &lt;img alt=&quot;AbsolutePosition.gif&quot; src=&quot;https://user-images.githubusercontent.com/12690315/175751579-5a2357e8-2ecf-4afd-83c8-66e9771bde39.gif&quot; width=&quot;450&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Custom view size:&lt;/strong&gt; Fixes min/max particle size mismatch.&lt;br /&gt; &lt;img src=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/assets/12690315/dd929959-1a37-420b-b13d-e849022b9c9d&quot; alt=&quot;CustomViewSize.gif&quot; /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;🎮 Demo&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://mob-sakai.github.io/demos/UIParticle_Demo/index.html&quot;&gt;WebGL Demo&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/12690315/174311768-1843a5f2-f776-491b-aaa8-2a131a8b6a16.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://mob-sakai.github.io/Demos/ParticleEffectForUGUI_CFX&quot;&gt;WebGL Demo (Cartoon FX &amp;amp; War FX)&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://assetstore.unity.com/packages/vfx/particles/cartoon-fx-free-109565&quot;&gt;Cartoon FX Free&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://assetstore.unity.com/packages/vfx/particles/war-fx-5669&quot;&gt;War FX&lt;/a&gt; (by &lt;a href=&quot;https://assetstore.unity.com/publishers/1669&quot;&gt;Jean Moreno (JMO)&lt;/a&gt;) with UIParticle&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/12690315/91664766-3e07ac00-eb2c-11ea-978b-ef723be80619.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;⚙ Installation&lt;/h2&gt; 
&lt;p&gt;&lt;em&gt;This package requires &lt;strong&gt;Unity 2018.3 or later&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt; 
&lt;h4&gt;Install via OpenUPM&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;This package is available on &lt;a href=&quot;https://openupm.com&quot;&gt;OpenUPM&lt;/a&gt; package registry.&lt;/li&gt; 
 &lt;li&gt;This is the preferred method of installation, as you can easily receive updates as they&#39;re released.&lt;/li&gt; 
 &lt;li&gt;If you have &lt;a href=&quot;https://github.com/openupm/openupm-cli&quot;&gt;openupm-cli&lt;/a&gt; installed, then run the following command in your project&#39;s directory:&lt;pre&gt;&lt;code&gt;openupm add com.coffee.ui-particle
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;To update the package, use Package Manager UI (&lt;code&gt;Window &amp;gt; Package Manager&lt;/code&gt;) or run the following command with &lt;code&gt;@{version}&lt;/code&gt;:&lt;pre&gt;&lt;code&gt;openupm add com.coffee.ui-particle@4.9.0
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Install via UPM (with Package Manager UI)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Click &lt;code&gt;Window &amp;gt; Package Manager&lt;/code&gt; to open Package Manager UI.&lt;/li&gt; 
 &lt;li&gt;Click &lt;code&gt;+ &amp;gt; Add package from git URL...&lt;/code&gt; and input the repository URL: &lt;code&gt;https://github.com/mob-sakai/ParticleEffectForUGUI.git&lt;/code&gt;&lt;br /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/f88f47ad-c606-44bd-9e86-ee3f72eac548&quot; alt=&quot;&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;To update the package, change suffix &lt;code&gt;#{version}&lt;/code&gt; to the target version. 
  &lt;ul&gt; 
   &lt;li&gt;e.g. &lt;code&gt;https://github.com/mob-sakai/ParticleEffectForUGUI.git#4.9.0&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Install via UPM (Manually)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Open the &lt;code&gt;Packages/manifest.json&lt;/code&gt; file in your project. Then add this package somewhere in the &lt;code&gt;dependencies&lt;/code&gt; block:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;dependencies&quot;: {
    &quot;com.coffee.ui-particle&quot;: &quot;https://github.com/mob-sakai/ParticleEffectForUGUI.git&quot;,
    ...
  }
}
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;To update the package, change suffix &lt;code&gt;#{version}&lt;/code&gt; to the target version.&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;e.g. &lt;code&gt;&quot;com.coffee.ui-particle&quot;: &quot;https://github.com/mob-sakai/ParticleEffectForUGUI.git#4.9.0&quot;,&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Install as Embedded Package&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt;Download a source code zip file from &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/releases&quot;&gt;Releases&lt;/a&gt; and extract it.&lt;/li&gt; 
 &lt;li&gt;Place it in your project&#39;s &lt;code&gt;Packages&lt;/code&gt; directory.&lt;br /&gt; &lt;img src=&quot;https://github.com/mob-sakai/mob-sakai/assets/12690315/0b7484b4-5fca-43b0-a9ef-e5dbd99bcdb4&quot; alt=&quot;&quot; /&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;ul&gt; 
 &lt;li&gt;If you want to fix bugs or add features, install it as an embedded package.&lt;/li&gt; 
 &lt;li&gt;To update the package, you need to re-download it and replace the contents.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;🚀 Usage&lt;/h2&gt; 
&lt;h3&gt;Component: UIParticle&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;UIParticle&lt;/code&gt; controls the ParticleSystems that are attached to its own game objects and child game objects.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/bc9eb783-afce-4102-ac61-aee9ea8d6f2f&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Maskable&lt;/strong&gt;: Does this graphic allow maskable.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Scale&lt;/strong&gt;: Scale the rendering particles. When the &lt;code&gt;3D&lt;/code&gt; toggle is enabled, 3D scale (x, y, z) is supported.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Animatable Properties&lt;/strong&gt;: If you want to update material properties (e.g., &lt;code&gt;_MainTex_ST&lt;/code&gt;, &lt;code&gt;_Color&lt;/code&gt;) in AnimationClip, use this to mark as animatable.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Mesh Sharing&lt;/strong&gt;: Particle simulation results are shared within the same group. A large number of the same effects can be displayed with a small load. When the &lt;code&gt;Random&lt;/code&gt; toggle is enabled, it will be grouped randomly. 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;None:&lt;/strong&gt; Disable mesh sharing.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Auto:&lt;/strong&gt; Automatically select Primary/Replica.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Primary:&lt;/strong&gt; Provides particle simulation results to the same group.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Primary Simulator:&lt;/strong&gt; Primary, but do not render the particle (simulation only).&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Replica:&lt;/strong&gt; Render simulation results provided by the primary.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Position Mode&lt;/strong&gt;: Emission position mode. 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Absolute:&lt;/strong&gt; The particles will be emitted from the world position.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Relative:&lt;/strong&gt; The particles will be emitted from the scaled position.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Auto Scaling Mode&lt;/strong&gt;: How to automatically adjust when the Canvas scale is changed by the screen size or reference resolution. 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;None:&lt;/strong&gt; Do nothing.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Transform:&lt;/strong&gt; Transform.lossyScale (=world scale) will be set to (1, 1, 1).&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;UIParticle:&lt;/strong&gt; UIParticle.scale will be adjusted.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Use Custom View:&lt;/strong&gt; Use this if the particles are not displayed correctly due to min/max particle size. 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Custom view size:&lt;/strong&gt; Change the bake view size.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Time Scale Multiplier:&lt;/strong&gt; Time scale multiplier.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Rendering Order&lt;/strong&gt;: The ParticleSystem list to be rendered. You can change the order and the materials.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Press the &lt;code&gt;Refresh&lt;/code&gt; button to reconstruct the rendering order based on children ParticleSystem&#39;s sorting order and z-position.&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Basic Usage&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Select &lt;code&gt;GameObject/UI/ParticleSystem&lt;/code&gt; to create UIParticle with a ParticleSystem. &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/95007361-cad0e880-0649-11eb-8835-f145d62c5977.png&quot; alt=&quot;particle&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;Adjust the ParticleSystem as you like. &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/95007359-ca385200-0649-11eb-8383-627c9750bda8.png&quot; alt=&quot;particle1&quot; /&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;br /&gt; 
&lt;h3&gt;Usage with Your Existing ParticleSystem Prefab&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Select &lt;code&gt;GameObject/UI/ParticleSystem (Empty)&lt;/code&gt; to create UIParticle. &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/95007362-cb697f00-0649-11eb-8a09-29b0a13791e4.png&quot; alt=&quot;empty&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;Drag and drop your ParticleSystem prefab onto UIParticle. &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/95007356-c6a4cb00-0649-11eb-9316-562f4bce3f31.png&quot; alt=&quot;particle3&quot; /&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;br /&gt; 
&lt;h3&gt;Usage with &lt;code&gt;Mask&lt;/code&gt; or &lt;code&gt;RectMask2D&lt;/code&gt; Component&lt;/h3&gt; 
&lt;p&gt;If you want to mask particles, set a stencil-supported shader (such as &lt;code&gt;UI/UIAdditive&lt;/code&gt;) to the material for ParticleSystem. If you use some custom shaders, see the &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#how-to-make-a-custom-shader-to-support-mask-and-rectmask2d-component&quot;&gt;How to Make a Custom Shader to Support Mask/RectMask2D Component&lt;/a&gt; section.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/12690315/95017591-3b512700-0695-11eb-864e-04166ea1809a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Usage with Script&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cs&quot;&gt;// Instantiate ParticleSystem prefab with UIParticle on runtime.
var go = GameObject.Instantiate(prefab);
var uiParticle = go.AddComponent&amp;lt;UIParticle&amp;gt;();
uiParticle.scale = 100;

// Control by ParticleSystem.
particleSystem.Play();
particleSystem.Emit(10);

// Control by UIParticle.
uiParticle.Play();
uiParticle.Stop();
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Component: UIParticleAttractor&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;UIParticleAttractor&lt;/code&gt; attracts particles generated by the specified ParticleSystem.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/assets/12690315/5c20ad73-4b9a-4f38-9cdc-119df5cce077&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/174311027-462929a4-13f0-4ec4-86ea-9c832f2eecf1.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Particle Systems&lt;/strong&gt;: Attracts particles generated by the specified ParticleSystems.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Destination Radius&lt;/strong&gt;: Once the particle is within the radius, the particle lifetime will become 0, and &lt;code&gt;OnAttracted&lt;/code&gt; will be called.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Delay Rate&lt;/strong&gt;: Delay to start attracting. It is a percentage of the particle&#39;s start lifetime.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Max Speed&lt;/strong&gt;: Maximum speed of attracting. If this value is too small, attracting may not be completed by the end of the lifetime, and &lt;code&gt;OnAttracted&lt;/code&gt; may not be called.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Movement&lt;/strong&gt;: Attracting movement type. (&lt;code&gt;Linear&lt;/code&gt;, &lt;code&gt;Smooth&lt;/code&gt;, &lt;code&gt;Sphere&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Update Mode&lt;/strong&gt;: Update mode. 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Normal:&lt;/strong&gt; Update with scaled delta time.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Unscaled Time:&lt;/strong&gt; Update with unscaled delta time.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;OnAttracted&lt;/strong&gt;: An event called when attracting is complete (per particle).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Project Settings&lt;/h3&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/befc7f34-fb47-4006-831a-eba79fda11ca&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Click &lt;code&gt;Edit &amp;gt; Project Settings&lt;/code&gt; to open the Project Settings window and then select &lt;code&gt;UI &amp;gt; UI Particle&lt;/code&gt; category.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;🛠 Development Note&lt;/h2&gt; 
&lt;h3&gt;Compares the Baking mesh approach with the conventional approach&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Baking mesh approach (=UIParticle)&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/41765089-0302b9a2-763e-11e8-88b3-b6ffa306bbb0.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;✅ Rendered as is.&lt;/li&gt; 
   &lt;li&gt;✅ Maskable.&lt;/li&gt; 
   &lt;li&gt;✅ Sortable.&lt;/li&gt; 
   &lt;li&gt;✅ Less objects.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Do nothing (=Plain ParticleSystem)&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/41765090-0329828a-763e-11e8-8d8a-f1d269ea3bc7.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;✅ Rendered as is.&lt;/li&gt; 
   &lt;li&gt;❌ Looks like a glitch.&lt;/li&gt; 
   &lt;li&gt;❌ Not maskable.&lt;/li&gt; 
   &lt;li&gt;❌ Not sortable.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Convert particle to UIVertex (=&lt;a href=&quot;https://forum.unity.com/threads/free-script-particle-systems-in-ui-screen-space-overlay.406862/&quot;&gt;UIParticleSystem&lt;/a&gt;)&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/41765088-02deb9c6-763e-11e8-98d0-9e0c1766ef39.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;✅ Maskable.&lt;/li&gt; 
   &lt;li&gt;✅ Sortable.&lt;/li&gt; 
   &lt;li&gt;❌ Adjustment is difficult.&lt;/li&gt; 
   &lt;li&gt;❌ Requires UI shaders.&lt;/li&gt; 
   &lt;li&gt;❌ Difficult to adjust scale.&lt;/li&gt; 
   &lt;li&gt;❌ Force hierarchy scalling.&lt;/li&gt; 
   &lt;li&gt;❌ Simulation results are incorrect.&lt;/li&gt; 
   &lt;li&gt;❌ Trail, rotation of transform, time scaling are not supported.&lt;/li&gt; 
   &lt;li&gt;❌ Generate heavy GC every frame.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Use Canvas to sort (Sorting By Canvas )&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/41765087-02b866ea-763e-11e8-8c33-081c9ad852f8.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;✅ Rendered as is.&lt;/li&gt; 
   &lt;li&gt;✅ Sortable.&lt;/li&gt; 
   &lt;li&gt;❌ You must to manage sorting orders.&lt;/li&gt; 
   &lt;li&gt;❌ Not maskable.&lt;/li&gt; 
   &lt;li&gt;❌ More batches.&lt;/li&gt; 
   &lt;li&gt;❌ Requires Canvas.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Use RenderTexture&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/41765085-0291b3e2-763e-11e8-827b-72e5ee9bc556.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;✅ Maskable.&lt;/li&gt; 
   &lt;li&gt;✅ Sortable.&lt;/li&gt; 
   &lt;li&gt;❌ Requires Camera and RenderTexture.&lt;/li&gt; 
   &lt;li&gt;❌ Difficult to adjust position and size.&lt;/li&gt; 
   &lt;li&gt;❌ Quality depends on the RenderTexture&#39;s setting.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;&lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/issues/193#issuecomment-1160028374&quot;&gt;Performance test results&lt;/a&gt;&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Approach&lt;/th&gt; 
   &lt;th&gt;FPS on Editor&lt;/th&gt; 
   &lt;th&gt;FPS on iPhone6&lt;/th&gt; 
   &lt;th&gt;FPS on Xperia XZ&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Particle System&lt;/td&gt; 
   &lt;td&gt;43&lt;/td&gt; 
   &lt;td&gt;57&lt;/td&gt; 
   &lt;td&gt;22&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;UIParticleSystem&lt;/td&gt; 
   &lt;td&gt;4&lt;/td&gt; 
   &lt;td&gt;3&lt;/td&gt; 
   &lt;td&gt;0 (unmeasurable)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Sorting By Canvas&lt;/td&gt; 
   &lt;td&gt;43&lt;/td&gt; 
   &lt;td&gt;44&lt;/td&gt; 
   &lt;td&gt;18&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;UIParticle&lt;/td&gt; 
   &lt;td&gt;17&lt;/td&gt; 
   &lt;td&gt;12&lt;/td&gt; 
   &lt;td&gt;4&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;UIParticle with MeshSharing&lt;/td&gt; 
   &lt;td&gt;44&lt;/td&gt; 
   &lt;td&gt;45&lt;/td&gt; 
   &lt;td&gt;30&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;🔍 FAQ: Why Are My UIParticles Not Displayed Correctly?&lt;/h3&gt; 
&lt;p&gt;If &lt;code&gt;ParticleSystem&lt;/code&gt; alone displays particles correctly but &lt;code&gt;UIParticle&lt;/code&gt; does not, please check the following points:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#shader-limitation&quot;&gt;Shader Limitation&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;UIParticle&lt;/code&gt; does not support all built-in shaders except for &lt;code&gt;UI/Default&lt;/code&gt;.&lt;/li&gt; 
   &lt;li&gt;Most cases can be solved by using &lt;code&gt;UI/Additive&lt;/code&gt; or &lt;code&gt;UI/Default&lt;/code&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Particles are not masked 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;UIParticle&lt;/code&gt; is maskable.&lt;/li&gt; 
   &lt;li&gt;Set &lt;code&gt;Mask&lt;/code&gt; or &lt;code&gt;RectMask2D&lt;/code&gt; component properly.&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#how-to-make-a-custom-shader-to-support-maskrectmask2d-component&quot;&gt;Use maskable/clipable shader&lt;/a&gt; (such as &lt;code&gt;UI/Additive&lt;/code&gt; or &lt;code&gt;UI/Default&lt;/code&gt;)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Particles are too small 
  &lt;ul&gt; 
   &lt;li&gt;If particles are small enough, they will not appear on the screen.&lt;/li&gt; 
   &lt;li&gt;Increase the &lt;code&gt;Scale&lt;/code&gt; value.&lt;/li&gt; 
   &lt;li&gt;If you don&#39;t want to change the apparent size depending on the resolution, try the &lt;code&gt;Auto Scaling&lt;/code&gt; option.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Particles are too many 
  &lt;ul&gt; 
   &lt;li&gt;No more than 65535 vertices can be displayed (for mesh combination limitations).&lt;/li&gt; 
   &lt;li&gt;Please set &lt;code&gt;Emission&lt;/code&gt; module and &lt;code&gt;Max Particles&lt;/code&gt; of ParticleSystem properly.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Particles are emitted off-screen. 
  &lt;ul&gt; 
   &lt;li&gt;When &lt;code&gt;Position Mode = Relative&lt;/code&gt;, particles are emitted from the scaled position of the ParticleSystem, not from the screen point of the ParticleSystem.&lt;/li&gt; 
   &lt;li&gt;Place the ParticleSystem in the proper position or try &lt;code&gt;Position Mode = Absolute&lt;/code&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Attaching &lt;code&gt;UIParticle&lt;/code&gt; to the same object as &lt;code&gt;ParticleSystem&lt;/code&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;Transform.localScale&lt;/code&gt; will be overridden by the &lt;code&gt;Auto Scaling&lt;/code&gt; option.&lt;/li&gt; 
   &lt;li&gt;It is recommended to place &lt;code&gt;ParticleSystem&lt;/code&gt; under &lt;code&gt;UIParticle&lt;/code&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;If &lt;code&gt;Transform.localScale&lt;/code&gt; contains 0, rendering will be skipped.&lt;/li&gt; 
 &lt;li&gt;Displayed particles are in the correct position but too large/too small 
  &lt;ul&gt; 
   &lt;li&gt;Adjust &lt;code&gt;ParticleSystem.renderer.Min/MaxParticleSize&lt;/code&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;br /&gt; 
&lt;h3&gt;Shader Limitation&lt;/h3&gt; 
&lt;p&gt;The use of UI shaders is recommended.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;If you need a simple Additive shader, use the &lt;code&gt;UI/Additive&lt;/code&gt; shader instead.&lt;/li&gt; 
 &lt;li&gt;If you need a simple alpha-blend shader, use the &lt;code&gt;UI/Default&lt;/code&gt; shader instead.&lt;/li&gt; 
 &lt;li&gt;If your custom shader does not work properly with UIParticle, consider creating a custom UI shader.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Built-in shaders are not supported&lt;/h4&gt; 
&lt;p&gt;&lt;code&gt;UIParticle&lt;/code&gt; does not support all built-in shaders except for &lt;code&gt;UI/Default&lt;/code&gt;.&lt;br /&gt; If their use is detected, an error is displayed in the inspector.&lt;br /&gt; Use UI shaders instead.&lt;/p&gt; 
&lt;h4&gt;(Unity 2018 or 2019) &lt;a href=&quot;http://UV.zw&quot;&gt;UV.zw&lt;/a&gt; components will be discarded&lt;/h4&gt; 
&lt;p&gt;UIParticleRenderer renders the particles based on UIVertex.&lt;br /&gt; Therefore, only the xy components are available for each UV in the shader. (zw components will be discarded).&lt;br /&gt; So unfortunately, UIParticles will not work well with some shaders.&lt;/p&gt; 
&lt;h4&gt;(Unity 2018 or 2019) Custom vertex streams&lt;/h4&gt; 
&lt;p&gt;When using custom vertex streams, you can fill zw components with &quot;unnecessary&quot; data.&lt;br /&gt; Refer to &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/issues/191&quot;&gt;this issue&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;br /&gt; 
&lt;h3&gt;Overheads&lt;/h3&gt; 
&lt;p&gt;UIParticle has some overheads, and the batching depends on uGUI.&lt;br /&gt; When improving performance, keep the following in mind:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;If you are displaying a large number of the same effect, consider the &lt;code&gt;Mesh Sharing&lt;/code&gt; feature in the &lt;a href=&quot;https://raw.githubusercontent.com/mob-sakai/ParticleEffectForUGUI/main/#uiparticle-component&quot;&gt;UIParticle Component&lt;/a&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;If you don&#39;t like the uniform output, consider the &lt;code&gt;Random Group&lt;/code&gt; feature.&lt;br /&gt; &lt;img src=&quot;https://user-images.githubusercontent.com/12690315/174311048-c882df81-6c34-4eba-b0aa-5645457692f1.gif&quot; alt=&quot;&quot; /&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;If you are using multiple materials, you will have more draw calls. 
  &lt;ul&gt; 
   &lt;li&gt;Consider a single material, atlasing the sprites, and using &lt;code&gt;Sprite&lt;/code&gt; mode in the &lt;code&gt;Texture Sheet Animation&lt;/code&gt; module in the ParticleSystem.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;How to Make a Custom Shader to Support &lt;code&gt;Mask&lt;/code&gt; and &lt;code&gt;RectMask2D&lt;/code&gt; Component&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;Shader tips&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-ShaderLab&quot;&gt;Shader &quot;Your/Custom/Shader&quot;
{
    Properties
    {
        // ...
        // #### required for Mask ####
        _StencilComp (&quot;Stencil Comparison&quot;, Float) = 8
        _Stencil (&quot;Stencil ID&quot;, Float) = 0
        _StencilOp (&quot;Stencil Operation&quot;, Float) = 0
        _StencilWriteMask (&quot;Stencil Write Mask&quot;, Float) = 255
        _StencilReadMask (&quot;Stencil Read Mask&quot;, Float) = 255
        _ColorMask (&quot;Color Mask&quot;, Float) = 15
        [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip (&quot;Use Alpha Clip&quot;, Float) = 0
    }

    SubShader
    {
        Tags
        {
            // ...
        }

        // #### required for Mask ####
        Stencil
        {
            Ref [_Stencil]
            Comp [_StencilComp]
            Pass [_StencilOp]
            ReadMask [_StencilReadMask]
            WriteMask [_StencilWriteMask]
        }
        ColorMask [_ColorMask]
        // ...

        Pass
        {
            // ...
            // #### required for RectMask2D ####
            #include &quot;UnityUI.cginc&quot;
            #pragma multi_compile __ UNITY_UI_CLIP_RECT
            float4 _ClipRect;

            // #### required for Mask ####
            #pragma multi_compile __ UNITY_UI_ALPHACLIP

            struct appdata_t
            {
                // ...
            };

            struct v2f
            {
                // ...
                // #### required for RectMask2D ####
                float4 worldPosition    : TEXCOORD1;
            };
            
            v2f vert(appdata_t v)
            {
                v2f OUT;
                // ...
                // #### required for RectMask2D ####
                OUT.worldPosition = v.vertex;
                return OUT;
            }

            fixed4 frag(v2f IN) : SV_Target
            {
                // ...
                // #### required for RectMask2D ####
                #ifdef UNITY_UI_CLIP_RECT
                    color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
                #endif

                // #### required for Mask ####
                #ifdef UNITY_UI_ALPHACLIP
                    clip (color.a - 0.001);
                #endif

                return color;
            }
            ENDCG
        }
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;🤝 Contributing&lt;/h2&gt; 
&lt;h3&gt;Issues&lt;/h3&gt; 
&lt;p&gt;Issues are incredibly valuable to this project:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Ideas provide a valuable source of contributions that others can make.&lt;/li&gt; 
 &lt;li&gt;Problems help identify areas where this project needs improvement.&lt;/li&gt; 
 &lt;li&gt;Questions indicate where contributors can enhance the user experience.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Pull Requests&lt;/h3&gt; 
&lt;p&gt;Pull requests offer a fantastic way to contribute your ideas to this repository.&lt;br /&gt; Please refer to &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/raw/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; and &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/tree/develop&quot;&gt;develop branch&lt;/a&gt; for guidelines.&lt;/p&gt; 
&lt;h3&gt;Support&lt;/h3&gt; 
&lt;p&gt;This is an open-source project developed during my spare time.&lt;br /&gt; If you appreciate it, consider supporting me.&lt;br /&gt; Your support allows me to dedicate more time to development. 😊&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.patreon.com/join/2343451?&quot;&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/12690315/50731629-3b18b480-11ad-11e9-8fad-4b13f27969c1.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;https://github.com/users/mob-sakai/sponsorship&quot;&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/12690315/66942881-03686280-f085-11e9-9586-fc0b6011029f.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;MIT&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Author&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/12690315/96986908-434a0b80-155d-11eb-8275-85138ab90afa.png&quot; alt=&quot;&quot; /&gt; &lt;a href=&quot;https://github.com/mob-sakai&quot;&gt;mob-sakai&lt;/a&gt; &lt;a href=&quot;https://twitter.com/intent/follow?screen_name=mob_sakai&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&amp;amp;style=social&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/github/followers/mob-sakai?style=social&quot; alt=&quot;GitHub followers&quot; /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;See Also&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;GitHub page : &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI&quot;&gt;https://github.com/mob-sakai/ParticleEffectForUGUI&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Releases : &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/releases&quot;&gt;https://github.com/mob-sakai/ParticleEffectForUGUI/releases&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Issue tracker : &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/issues&quot;&gt;https://github.com/mob-sakai/ParticleEffectForUGUI/issues&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Change log : &lt;a href=&quot;https://github.com/mob-sakai/ParticleEffectForUGUI/raw/main/CHANGELOG.md&quot;&gt;https://github.com/mob-sakai/ParticleEffectForUGUI/blob/main/CHANGELOG.md&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/1b11eab238907d77a4363c33112a10f2c6b8c0208db3702c13743614626d8d92/mob-sakai/ParticleEffectForUGUI" medium="image" />
      
    </item>
    
    <item>
      <title>icsharpcode/ILSpy</title>
      <link>https://github.com/icsharpcode/ILSpy</link>
      <description>&lt;p&gt;.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&amp;more) - cross-platform!&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;ILSpy &lt;a href=&quot;https://nuget.org/packages/ICSharpCode.Decompiler&quot;&gt;&lt;img src=&quot;https://img.shields.io/nuget/v/ICSharpCode.Decompiler.svg?sanitize=true&quot; alt=&quot;NuGet&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://github.com/icsharpcode/ILSpy/workflows/Build%20ILSpy/badge.svg?branch=master&quot; alt=&quot;Build ILSpy&quot; /&gt; &lt;a href=&quot;https://hachyderm.io/@ilspy&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/dynamic/json?label=Mastodon&amp;amp;query=totalItems&amp;amp;url=https%3A%2F%2Fhachyderm.io%2Fusers%2Filspy%2Ffollowers.json&amp;amp;logo=mastodon&amp;amp;style=flat-square&quot; alt=&quot;Mastodon&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bsky.app/profile/ilspy.bsky.social&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Bluesky-0285FF?logo=bluesky&amp;amp;logoColor=fff&quot; alt=&quot;Bluesky&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://visualstudiogallery.msdn.microsoft.com/8ef1d688-f80c-4380-8004-2ec7f814e7de&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/VS%20Extension-ILSpy-blue.svg?sanitize=true&quot; alt=&quot;ILSpy VS extension&quot; /&gt;&lt;/a&gt;&lt;/h1&gt; 
&lt;p&gt;ILSpy is the open-source .NET assembly browser and decompiler.&lt;/p&gt; 
&lt;p&gt;Download: &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/releases&quot;&gt;latest release&lt;/a&gt; | &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/actions?query=workflow%3A%22Build+ILSpy%22+branch%3Amaster+is%3Asuccess+event%3Apush&quot;&gt;latest CI build (master)&lt;/a&gt; | &lt;a href=&quot;https://apps.microsoft.com/store/detail/ilspy-fresh/XP8C26VDWLP4T4&quot;&gt;Microsoft Store (RTM versions only)&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Decompiler Frontends&lt;/h2&gt; 
&lt;p&gt;Aside from the WPF UI ILSpy (downloadable via Releases, see also &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/wiki/Plugins&quot;&gt;plugins&lt;/a&gt;), the following other frontends are available:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Visual Studio 2022/2026 ship with decompilation support for F12 enabled by default (using our engines v8.2 and v9.1 respectively).&lt;/li&gt; 
 &lt;li&gt;Our Visual Studio 2022 extension &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy2022&quot;&gt;marketplace&lt;/a&gt; (works with VS 2026 as well)&lt;/li&gt; 
 &lt;li&gt;Our Visual Studio Code Extension &lt;a href=&quot;https://github.com/icsharpcode/ilspy-vscode&quot;&gt;repository&lt;/a&gt; | &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=icsharpcode.ilspy-vscode&quot;&gt;marketplace&lt;/a&gt; | &lt;a href=&quot;https://open-vsx.org/extension/icsharpcode/ilspy-vscode&quot;&gt;open-vsx&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Our dotnet tool for Linux/Mac/Windows - check out &lt;a href=&quot;https://raw.githubusercontent.com/icsharpcode/ILSpy/master/ICSharpCode.ILSpyCmd&quot;&gt;ILSpyCmd&lt;/a&gt; in this repository | &lt;a href=&quot;https://www.nuget.org/packages/ilspycmd/&quot;&gt;dotnet tool install&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp&quot;&gt;C# for Visual Studio Code&lt;/a&gt; ships with decompilation support as well. To enable, activate the setting &quot;Enable Decompilation Support&quot;.&lt;/li&gt; 
 &lt;li&gt;In Visual Studio 2019, you have to manually enable F12 support. Go to Tools / Options / Text Editor / C# / Advanced and check &quot;Enable navigation to decompiled source&quot;&lt;/li&gt; 
 &lt;li&gt;Our Visual Studio 2017/2019 extension &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy&quot;&gt;marketplace&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Our &lt;a href=&quot;https://www.nuget.org/packages/ICSharpCode.Decompiler/&quot;&gt;ICSharpCode.Decompiler&lt;/a&gt; NuGet for your own projects&lt;/li&gt; 
 &lt;li&gt;Our Linux/Mac/Windows &lt;a href=&quot;https://raw.githubusercontent.com/icsharpcode/ILSpy/master/ICSharpCode.Decompiler.PowerShell&quot;&gt;PowerShell cmdlets&lt;/a&gt; in this repository&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Decompilation to C# (check out the &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/issues/829&quot;&gt;language support status&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Whole-project decompilation&lt;/li&gt; 
 &lt;li&gt;Search for types/methods/properties (learn about the &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/wiki/Search-Options&quot;&gt;options&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Hyperlink-based type/method/property navigation&lt;/li&gt; 
 &lt;li&gt;Base/Derived types navigation, history&lt;/li&gt; 
 &lt;li&gt;Assembly metadata explorer (&lt;a href=&quot;https://github.com/icsharpcode/ILSpy/wiki/Metadata-Explorer&quot;&gt;feature walkthrough&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;BAML to XAML decompiler&lt;/li&gt; 
 &lt;li&gt;ReadyToRun binary support for .NET Core (see the &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/wiki/ILSpy.ReadyToRun&quot;&gt;tutorial&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Extensible via &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/wiki/Plugins&quot;&gt;plugins&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Additional features in DEBUG builds (&lt;a href=&quot;https://github.com/icsharpcode/ILSpy/wiki/Additional-Features-in-DEBUG-Builds&quot;&gt;for the devs&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;ILSpy is distributed under the MIT License. Please see the &lt;a href=&quot;https://raw.githubusercontent.com/icsharpcode/ILSpy/master/doc/ILSpyAboutPage.txt&quot;&gt;About&lt;/a&gt; doc for details, as well as &lt;a href=&quot;https://raw.githubusercontent.com/icsharpcode/ILSpy/master/doc/third-party-notices.txt&quot;&gt;third party notices&lt;/a&gt; for included open-source libraries.&lt;/p&gt; 
&lt;h2&gt;How to build&lt;/h2&gt; 
&lt;h4&gt;Windows:&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Make sure Windows PowerShell (at least version) 5.0 or &lt;a href=&quot;https://github.com/PowerShell/PowerShell&quot;&gt;PowerShell&lt;/a&gt; 7+ is installed.&lt;/li&gt; 
 &lt;li&gt;Clone the ILSpy repository using git.&lt;/li&gt; 
 &lt;li&gt;Execute &lt;code&gt;git submodule update --init --recursive&lt;/code&gt; to download the ILSpy-Tests submodule (used by some test cases).&lt;/li&gt; 
 &lt;li&gt;Install Visual Studio (documented version: 18.0/2026). You need the following workload components: 
  &lt;ul&gt; 
   &lt;li&gt;Workload &quot;.NET Desktop Development&quot;. This workload includes the .NET Framework 4.8 SDK and the .NET Framework 4.7.2 targeting pack, as well as the &lt;a href=&quot;https://dotnet.microsoft.com/download/dotnet/10.0&quot;&gt;.NET 10.0 SDK&lt;/a&gt; (ILSpy.csproj targets .NET 10.0, but we have net472 projects too).&lt;/li&gt; 
   &lt;li&gt;Workload &quot;Visual Studio extension development&quot; (Note: ILSpy.VSExtensions.sln is separate from ILSpy.sln and thus this workload is optional)&lt;/li&gt; 
   &lt;li&gt;Individual Component &quot;MSVC v143 - VS 2022 C++ x64/x86 build tools&quot; (or similar) 
    &lt;ul&gt; 
     &lt;li&gt;&lt;em&gt;The VC++ toolset is optional&lt;/em&gt;; if present it is used for &lt;code&gt;editbin.exe&lt;/code&gt; to modify the stack size used by ILSpy.exe from 1MB to 16MB, because the decompiler makes heavy use of recursion, where small stack sizes lead to problems in very complex methods.&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Open ILSpy.sln in Visual Studio. 
  &lt;ul&gt; 
   &lt;li&gt;NuGet package restore will automatically download further dependencies&lt;/li&gt; 
   &lt;li&gt;Run project &quot;ILSpy&quot; for the ILSpy UI&lt;/li&gt; 
   &lt;li&gt;Use the Visual Studio &quot;Test Explorer&quot; to see/run the tests&lt;/li&gt; 
   &lt;li&gt;If you are only interested in a specific subset of ILSpy, you can also use 
    &lt;ul&gt; 
     &lt;li&gt;ILSpy.Wpf.slnf: for the ILSpy WPF frontend&lt;/li&gt; 
     &lt;li&gt;ILSpy.XPlat.slnf: for the cross-platform CLI or PowerShell cmdlets&lt;/li&gt; 
     &lt;li&gt;ILSpy.AddIn.slnf: for the Visual Studio plugin&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Visual Studio includes a version of the .NET SDK that is managed by the Visual Studio installer - once you update, it may get upgraded too. Please note that ILSpy is only compatible with the .NET 10.0 SDK and Visual Studio will refuse to load some projects in the solution (and unit tests will fail). If this problem occurs, please manually install the .NET 10.0 SDK from &lt;a href=&quot;https://dotnet.microsoft.com/download/dotnet/10.0&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h4&gt;Unix / Mac:&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Make sure &lt;a href=&quot;https://dotnet.microsoft.com/download/dotnet/10.0&quot;&gt;.NET 10.0 SDK&lt;/a&gt; is installed.&lt;/li&gt; 
 &lt;li&gt;Make sure &lt;a href=&quot;https://github.com/PowerShell/PowerShell&quot;&gt;PowerShell&lt;/a&gt; is installed (formerly known as PowerShell Core)&lt;/li&gt; 
 &lt;li&gt;Clone the repository using git.&lt;/li&gt; 
 &lt;li&gt;Execute &lt;code&gt;git submodule update --init --recursive&lt;/code&gt; to download the ILSpy-Tests submodule (used by some test cases).&lt;/li&gt; 
 &lt;li&gt;Use &lt;code&gt;dotnet build ILSpy.XPlat.slnf&lt;/code&gt; to build the non-Windows flavors of ILSpy (.NET Core Global Tool and PowerShell Core).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;How to contribute&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Report bugs&lt;/li&gt; 
 &lt;li&gt;If you want to contribute a pull request, please add &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/raw/master/BuildTools/pre-commit&quot;&gt;https://github.com/icsharpcode/ILSpy/blob/master/BuildTools/pre-commit&lt;/a&gt; to your &lt;code&gt;.git/hooks&lt;/code&gt; to prevent checking in code with wrong formatting. We use tabs and not spaces. The build server runs the same script, so any pull requests using wrong formatting will fail.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Current and past &lt;a href=&quot;https://github.com/icsharpcode/ILSpy/graphs/contributors&quot;&gt;contributors&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Privacy Policy for ILSpy&lt;/h2&gt; 
&lt;p&gt;ILSpy does not collect any personally identifiable information, nor does it send user files to 3rd party services. ILSpy does not use any APM (Application Performance Management) service to collect telemetry or metrics.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/18094eedfae2808d5ef445a95c39c474a9d5f26474474267a995fc89ec84e87d/icsharpcode/ILSpy" medium="image" />
      
    </item>
    
    <item>
      <title>dotnet/dotnet</title>
      <link>https://github.com/dotnet/dotnet</link>
      <description>&lt;p&gt;Home of .NET&#39;s Virtual Monolithic Repository which includes all the code needed to build the .NET SDK.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;dotnet/dotnet - Home of the .NET VMR&lt;/h1&gt; 
&lt;p&gt;This repository is a &lt;strong&gt;Virtual Monolithic Repository (VMR)&lt;/strong&gt; which includes all the source code and infrastructure needed to build the .NET SDK.&lt;/p&gt; 
&lt;p&gt;What this means:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Monolithic&lt;/strong&gt; - a join of multiple repositories that make up the whole product, such as &lt;a href=&quot;https://github.com/dotnet/runtime&quot;&gt;dotnet/runtime&lt;/a&gt; or &lt;a href=&quot;https://github.com/dotnet/sdk&quot;&gt;dotnet/sdk&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Virtual&lt;/strong&gt; - a mirror (not replacement) of product repos where sources from those repositories are synchronized with.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;In the VMR, you can find:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;source files of each product repository which are mirrored inside of their respective directories under &lt;a href=&quot;https://github.com/dotnet/dotnet/tree/main/src&quot;&gt;&lt;code&gt;src/&lt;/code&gt;&lt;/a&gt;,&lt;/li&gt; 
 &lt;li&gt;tooling that enables &lt;a href=&quot;https://github.com/dotnet/source-build&quot;&gt;building the whole .NET product from source&lt;/a&gt; on Linux platforms,&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;[in future]&lt;/em&gt; E2E tests for the whole .NET product.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Just like the development repositories, the VMR will have a release branch for every feature band (e.g. &lt;code&gt;release/10.0.1xx&lt;/code&gt;). Similarly, VMR&#39;s &lt;code&gt;main&lt;/code&gt; branch will follow default branches of product repositories (see &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/VMR-Design-And-Operation.md#synchronization-based-on-declared-dependencies&quot;&gt;Synchronization Based on Declared Dependencies&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;More in-depth documentation about the VMR can be found in &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/VMR-Design-And-Operation.md#layout&quot;&gt;VMR Design And Operation&lt;/a&gt;. See also &lt;a href=&quot;https://github.com/dotnet/source-build&quot;&gt;dotnet/source-build&lt;/a&gt; for more information about our whole-product source-build.&lt;/p&gt; 
&lt;h2&gt;Installing the SDK&lt;/h2&gt; 
&lt;p&gt;You can download the .NET SDK either as an installer (MSI, PKG) or as an archive (zip, tar.gz). The .NET SDK contains both the .NET runtimes and CLI tools.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/builds-table.md&quot;&gt;&lt;strong&gt;Latest builds table&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Goals&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;The main purpose of the &lt;a href=&quot;https://github.com/dotnet/dotnet&quot;&gt;dotnet/dotnet&lt;/a&gt; repository is to have all source code necessary to build the .NET product available in one repository and identified by a single commit.&lt;/li&gt; 
 &lt;li&gt;The VMR also aims to become the place from which we release and service future versions of .NET to reduce the complexity of the product construction process. This should allow our partners and 3rd parties to easily build, test and modify .NET using their custom infrastructure as well as make the process available to the community.&lt;/li&gt; 
 &lt;li&gt;Lastly, we hope to solve other problems that the current multi-repo setup brings: 
  &lt;ul&gt; 
   &lt;li&gt;Enable the standard &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/VMR-Upstream-Downstream.md&quot;&gt;down-/up-stream open-source model&lt;/a&gt;.&lt;/li&gt; 
   &lt;li&gt;Fulfill requirements of .NET distro builders such as RedHat or Canonical to natively include .NET in their distribution repositories.&lt;/li&gt; 
   &lt;li&gt;Simplify scenarios such as client-run testing of bug fixes and improvements. The build should work in an offline environment too for certain platforms.&lt;/li&gt; 
   &lt;li&gt;Enable developers to make and test changes spanning multiple repositories.&lt;/li&gt; 
   &lt;li&gt;More efficient pipeline for security fixes during the CVE pre-disclosure process.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;We will achieve these goals while keeping active coding work in the separate repos where it happens today. For example: &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; features will continue to be developed in &lt;code&gt;dotnet/aspnetcore&lt;/code&gt; and CLR features will be continue to be developed in &lt;code&gt;dotnet/runtime&lt;/code&gt;. Each of these repos have their own distinct communities and processes, and aggregating development into a true mono-repo would work against that. Hence, the &quot;virtual&quot; monolithic repo: the VMR gives us the simplicity of a mono-repo for building and servicing the product, while active development of components of that product stays in its various existing repos. The day to day experience for typical contributors will not change.&lt;/p&gt; 
&lt;h2&gt;Supported platforms&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;8.0 and 9.0 
  &lt;ul&gt; 
   &lt;li&gt;source-build configuration on Linux&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;10.0+ (WIP) 
  &lt;ul&gt; 
   &lt;li&gt;source-build configuration on Linux&lt;/li&gt; 
   &lt;li&gt;non-source-build configuration on Linux, Mac, and Windows&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For the latest information about Source-Build support for new .NET versions, please check our &lt;a href=&quot;https://github.com/dotnet/source-build/discussions&quot;&gt;GitHub Discussions page&lt;/a&gt; for announcements.&lt;/p&gt; 
&lt;h2&gt;Code flow&lt;/h2&gt; 
&lt;p&gt;The contents of the VMR are two-way synchronized with the product repositories via code flow PRs. Individual repositories flow source changes into the VMR upon promotion of their local official builds (forward flow). The VMR changes are checked in, an official build happens, and then source changes + packages flow backward into the constituent repositories (back flow). For more details on code flow and code flow pull requests, please see this information on &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/Codeflow-PRs.md&quot;&gt;Code Flow PRs&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contribution&lt;/h2&gt; 
&lt;p&gt;Contribution to the .NET product should currently be done mostly in the constituent repositories. The reasons for this are two-fold:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;We want to slowly ramp up direct VMR changes to avoid surprises.&lt;/li&gt; 
 &lt;li&gt;The individual repositories still have the best validation for most changes.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you would like to make a cross-cutting change in the VMR, please ask the Unified Build team (please tag @dotnet/product-construction in an issue/discussion in your repository). However, some changes &lt;strong&gt;should&lt;/strong&gt; be made directly in the VMR. For a breakdown of where changes should be made, please see below.&lt;/p&gt; 
&lt;h4&gt;Where to make changes:&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;src/*&lt;/code&gt; - Constituent repositories, except VMR pipeline changes.&lt;/li&gt; 
 &lt;li&gt;Non &lt;code&gt;src/*&lt;/code&gt; directories - Directly in VMR&lt;/li&gt; 
 &lt;li&gt;Arcade &lt;code&gt;eng/common&lt;/code&gt; changes - There are many copies of eng/common in the VMR: 
  &lt;ul&gt; 
   &lt;li&gt;The VMR uses its root eng/common/* to bootstrap the VMR build. These should not be updated manually. They should only be updated via a re-bootrap of the VMR.&lt;/li&gt; 
   &lt;li&gt;A VMR build uses &lt;code&gt;src/arcade/eng/common/*&lt;/code&gt; for arcade and any repository that builds after arcade. Changes may be made to these files, and they will flow back into arcade as well as to any repository that gets its arcade flow from the VMR. However, due to varying scenarios in which &lt;code&gt;eng/common/&lt;/code&gt; can be used, it is generally recommended that the VMR only be used to test &lt;code&gt;eng/common&lt;/code&gt; changes, while actual changes should still be made in the dotnet/arcade repository.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;VMR pipeline changes - The root pipeline logic lives in eng/* and should be changed in the VMR.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For any questions, please ask the Unified Build team.&lt;/p&gt; 
&lt;h2&gt;Dev instructions&lt;/h2&gt; 
&lt;p&gt;Please note that &lt;strong&gt;this repository is a work-in-progress&lt;/strong&gt; and there are some usability issues connected to this. These can be nuisances such as some checked-in files getting modified by the build itself and similar. For the latest information about Source-Build support, please watch for announcements posted on our &lt;a href=&quot;https://github.com/dotnet/source-build/discussions&quot;&gt;GitHub Discussions page&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;p&gt;The dependencies for building can be found &lt;a href=&quot;https://github.com/dotnet/runtime/raw/main/docs/workflow/requirements/&quot;&gt;here&lt;/a&gt;. In case you don&#39;t want to / cannot prepare your environment per the requirements, consider &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/#building-using-docker&quot;&gt;using Docker&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For building the VMR with Source-Build, the following additional dependencies are required for your Linux environment:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;brotli-dev&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For building the VMR on Windows, it is recommended to put the repo under a short path, i.e. &lt;code&gt;C:\dotnet&lt;/code&gt;. Also, &lt;a href=&quot;https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry#enable-long-paths-in-windows-10-version-1607-and-later&quot;&gt;long path support must be enabled&lt;/a&gt;. This is necessary as some of the tools used don&#39;t support long paths (WiX Toolset v3 and cl.exe).&lt;/p&gt; 
&lt;p&gt;For some &lt;code&gt;git&lt;/code&gt; commands and when synchronizing changes via the &lt;code&gt;darc&lt;/code&gt; CLI, long path support should be enabled in the &lt;code&gt;git&lt;/code&gt; config as well:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --system core.longpaths true # needs elevated prompt
git config --global core.longpaths true
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Building&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Clone the repository&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/dotnet/dotnet dotnet-dotnet
cd dotnet-dotnet
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Build the .NET SDK&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Choose one of the following build modes:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;Microsoft based build&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;For Unix:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./build.sh --clean-while-building
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;For Windows:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;.\build.cmd -cleanWhileBuilding
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;Building from source&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Prep the source to build on your distro.
# This downloads a .NET SDK and a number of .NET packages needed to build .NET from source.
./prep-source-build.sh

# Build the .NET SDK
./build.sh -sb --clean-while-building
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;p&gt;The resulting SDK is placed at &lt;code&gt;artifacts/assets/Release/dotnet-sdk-9.0.100-[your-RID].tar.gz&lt;/code&gt; (for Unix) or &lt;code&gt;artifacts/assets/Release/dotnet-sdk-9.0.100-[your-RID].zip&lt;/code&gt; (for Windows).&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;em&gt;(Optional)&lt;/em&gt; &lt;strong&gt;Unpack and install the .NET SDK&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;For Unix:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p $HOME/dotnet
tar zxf artifacts/assets/Release/dotnet-sdk-10.0.100-[your-RID].tar.gz -C $HOME/dotnet
ln -s $HOME/dotnet/dotnet /usr/bin/dotnet
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;For Windows:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;mkdir %userprofile%\dotnet
tar -xf artifacts/assets/Release/dotnet-sdk-10.0.100-[your RID].zip -C %userprofile%\dotnet
set &quot;PATH=%userprofile%\dotnet;%PATH%&quot;
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;To test your built SDK, run the following:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet --info
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;Run &lt;code&gt;./build.sh --help&lt;/code&gt; (for Unix) or &lt;code&gt;.\build.cmd -help&lt;/code&gt; (for Windows) to see more information about supported build options.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h3&gt;Building using Docker&lt;/h3&gt; 
&lt;p&gt;You can also build the repository using a Docker image which has the required prerequisites inside. The example below creates a Docker volume named &lt;code&gt;vmr&lt;/code&gt; and clones and builds the VMR there.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;docker run --rm -it -v vmr:/vmr -w /vmr mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-amd64
git clone https://github.com/dotnet/dotnet .

# - Microsoft based build
./build.sh --clean-while-building

# - Building from source
./prep-source-build.sh &amp;amp;&amp;amp; ./build.sh -sb --clean-while-building

mkdir -p $HOME/.dotnet
tar -zxf artifacts/assets/Release/dotnet-sdk-9.0.100-centos.9-x64.tar.gz -C $HOME/.dotnet
ln -s $HOME/.dotnet/dotnet /usr/bin/dotnet
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Codespaces&lt;/h3&gt; 
&lt;p&gt;You can also utilize &lt;a href=&quot;https://github.com/features/codespaces&quot;&gt;GitHub Codespaces&lt;/a&gt; where you can find preset containers in this repository.&lt;/p&gt; 
&lt;h3&gt;Building from released sources&lt;/h3&gt; 
&lt;p&gt;You can also build from sources (and not from a context of a git repository), such as the ones you can acquire from a &lt;a href=&quot;https://github.com/dotnet/dotnet/releases&quot;&gt;dotnet/dotnet release&lt;/a&gt;. In this case, you need to provide additional information which includes the original repository and commit hash the code was built from so that the SDK can provide a better debugging experience (think the &lt;code&gt;Step into..&lt;/code&gt; functionality). Usually, this means the &lt;a href=&quot;https://github.com/dotnet/dotnet&quot;&gt;dotnet/dotnet repository&lt;/a&gt; together with the commit the release tag is connected to.&lt;/p&gt; 
&lt;p&gt;In practice, this means that when calling the main build script, you need to provide additional arguments when building outside of a context of a git repository.&lt;br /&gt; Alternatively, you can also provide a manifest file where this information can be read from. This file (&lt;code&gt;release.json&lt;/code&gt;) can be found attached with the &lt;a href=&quot;https://github.com/dotnet/dotnet/releases&quot;&gt;dotnet/dotnet release&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Manually synchronizing code with the VMR&lt;/h3&gt; 
&lt;p&gt;Sometimes you want to make a change in a repository and test that change in the VMR locally (or vice versa). You could of course make the change in the VMR directly, but in case it&#39;s already available in your repository, you can synchronize it locally into your clone of the VMR, commit, and then open a PR.&lt;/p&gt; 
&lt;p&gt;To do this, you need to use the &lt;a href=&quot;https://github.com/dotnet/arcade-services/raw/main/docs/Darc.md#forwardflow&quot;&gt;&lt;code&gt;darc vmr forwardflow&lt;/code&gt;&lt;/a&gt; or &lt;a href=&quot;https://github.com/dotnet/arcade-services/raw/main/docs/Darc.md#backflow&quot;&gt;&lt;code&gt;darc vmr backflow&lt;/code&gt;&lt;/a&gt; commands which can move your changes from your repository&#39;s dev branch into a local VMR one. Please refer to command&#39;s documentation (&lt;code&gt;--help&lt;/code&gt;) for more details.&lt;/p&gt; 
&lt;h2&gt;Filing Issues&lt;/h2&gt; 
&lt;p&gt;This repo should contain issues that are tied to the VMR infrastructure and documentation.&lt;/p&gt; 
&lt;p&gt;For other issues, please open them in the appropriate product repos. We have links to many of them on &lt;a href=&quot;https://github.com/dotnet/dotnet/issues/new/choose&quot;&gt;our new issue page&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Useful Links&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Design documentation for the VMR - a set of documents describing the high-level design and the why&#39;s and how&#39;s 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/VMR-Design-And-Operation.md&quot;&gt;Design and Operation&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/VMR-Upstream-Downstream.md&quot;&gt;Upstream/Downstream Relationships&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/VMR-Code-And-Build-Workflow.md&quot;&gt;Code and Build Workflow&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/docs/VMR-Strategy-For-External-Source.md&quot;&gt;Strategy for Managing External Source Dependencies&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dotnet/source-build&quot;&gt;.NET Source-Build&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dotnet.microsoft.com&quot;&gt;What is .NET&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;.NET Foundation&lt;/h2&gt; 
&lt;p&gt;.NET Runtime is a &lt;a href=&quot;https://www.dotnetfoundation.org/projects&quot;&gt;.NET Foundation&lt;/a&gt; project.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;.NET is licensed under the &lt;a href=&quot;https://raw.githubusercontent.com/dotnet/dotnet/main/LICENSE.TXT&quot;&gt;MIT&lt;/a&gt; license.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/550902717/3ebf1a21-dd17-4bb9-a459-b0dd682acc4e" medium="image" />
      
    </item>
    
    <item>
      <title>aelassas/servy</title>
      <link>https://github.com/aelassas/servy</link>
      <description>&lt;p&gt;Run Any App as a Native Windows Service - Modern Alternative to NSSM, WinSW &amp; FireDaemon Pro&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/aelassas/servy/actions/workflows/build.yml&quot;&gt;&lt;img src=&quot;https://github.com/aelassas/servy/actions/workflows/build.yml/badge.svg?branch=main&quot; alt=&quot;build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/aelassas/servy/actions/workflows/test.yml&quot;&gt;&lt;img src=&quot;https://github.com/aelassas/servy/actions/workflows/test.yml/badge.svg?branch=main&quot; alt=&quot;test&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/aelassas/servy/actions/workflows/security.yml&quot;&gt;&lt;img src=&quot;https://github.com/aelassas/servy/actions/workflows/security.yml/badge.svg?branch=main&quot; alt=&quot;security&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/aelassas/servy/actions/workflows/release.yml&quot;&gt;&lt;img src=&quot;https://github.com/aelassas/servy/actions/workflows/release.yml/badge.svg?branch=main&quot; alt=&quot;release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/aelassas/servy/wiki&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-wiki-brightgreen&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;!--
[![build](https://github.com/aelassas/servy/actions/workflows/build.yml/badge.svg)](https://github.com/aelassas/servy/actions/workflows/build.yml) 
[![test](https://github.com/aelassas/servy/actions/workflows/test.yml/badge.svg)](https://github.com/aelassas/servy/actions/workflows/test.yml)
[![Build Status](https://aelassas.visualstudio.com/servy/_apis/build/status%2Faelassas.servy?branchName=main)](https://aelassas.visualstudio.com/servy/_build/latest?definitionId=4&amp;branchName=main) 
[![](https://raw.githubusercontent.com/aelassas/servy/refs/heads/loc/badge.svg)](https://github.com/aelassas/servy/actions/workflows/loc.yml) 
[![codecov](https://codecov.io/gh/aelassas/servy/graph/badge.svg?token=26WZX2V4BG)](https://codecov.io/gh/aelassas/servy)
[![codecov](https://img.shields.io/codecov/c/github/aelassas/servy/main?label=coverage&amp;t=4)](https://codecov.io/gh/aelassas/servy)
[![coveralls](https://coveralls.io/repos/github/aelassas/servy/badge.svg?branch=main)](https://coveralls.io/github/aelassas/servy?branch=main)

[![scoop](https://github.com/aelassas/servy/actions/workflows/scoop.yml/badge.svg)](https://github.com/aelassas/servy/actions/workflows/scoop.yml)
[![](https://img.shields.io/badge/docs-wiki-brightgreen)](https://github.com/aelassas/servy/wiki)

[![sonar](https://img.shields.io/sonar/quality_gate/aelassas_servy?server=https%3A%2F%2Fsonarcloud.io&amp;label=sonar)](https://sonarcloud.io/summary/new_code?id=aelassas_servy)
[![winget](https://github.com/aelassas/servy/actions/workflows/winget.yml/badge.svg)](https://github.com/aelassas/servy/actions/workflows/winget.yml)
[![choco](https://github.com/aelassas/servy/actions/workflows/choco.yml/badge.svg)](https://github.com/aelassas/servy/actions/workflows/choco.yml)
[![bump-version](https://github.com/aelassas/servy/actions/workflows/bump-version.yml/badge.svg)](https://github.com/aelassas/servy/actions/workflows/bump-version.yml)
[![release](https://github.com/aelassas/servy/actions/workflows/release.yml/badge.svg)](https://github.com/aelassas/servy/actions/workflows/release.yml)

[![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/aelassas/servy/total)](https://github.com/aelassas/servy/releases)
[![GitHub Release](https://img.shields.io/github/v/release/aelassas/servy)](https://github.com/aelassas/servy/releases/latest)
[![License](https://img.shields.io/github/license/aelassas/servy)](https://github.com/aelassas/servy/blob/main/LICENSE.txt)

[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/aelassas/servy/pulls)
[![](https://img.shields.io/badge/docs-wiki-brightgreen)](https://github.com/aelassas/servy/wiki)

[![security](https://github.com/aelassas/servy/actions/workflows/security.yml/badge.svg)](https://github.com/aelassas/servy/actions/workflows/security.yml)
--&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://servy-win.github.io/servy-tiny.png?v=3&quot; alt=&quot;Servy&quot; /&gt; ⭐ Don&#39;t forget to give us a star on GitHub. It costs nothing but means a lot and helps the project grow! &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=biHq17j4RbI&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Watch%20Demo-0C0C0C?style=for-the-badge&amp;amp;logo=youtube&quot; alt=&quot;Watch Demo on YouTube&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;h1&gt;Servy&lt;/h1&gt; 
&lt;p&gt;Servy lets you run any app as a native Windows service with full control over the working directory, startup type, process priority, logging, health checks, environment variables, dependencies, pre-launch and post-launch hooks, pre-stop and post-stop hooks, and parameters. It&#39;s designed to be a full-featured alternative to NSSM, WinSW, and FireDaemon Pro.&lt;/p&gt; 
&lt;p&gt;Servy is digitally signed using a trusted code-signing certificate provided by the SignPath Foundation. This ensures that all Servy executables and installers are verified and secure, giving you peace of mind when using the tool.&lt;/p&gt; 
&lt;p&gt;Servy offers a desktop app, a CLI, and a PowerShell module that let you create, configure, and manage Windows services interactively or through scripts and CI/CD pipelines. It also includes a Manager app for easily monitoring and managing all installed services in real time.&lt;/p&gt; 
&lt;p&gt;Servy continuously monitors your app, restarting it automatically if it crashes, hangs, or stops. It is perfect for keeping non-service apps running in the background and ensuring they start automatically at system boot, even before logon, without rewriting them as services. Use it to run Node.js, Python, .NET, Java, Go, Rust, PHP, or Ruby applications; keep web servers, background workers, sync tools, or daemons alive after reboots; and automate task runners, schedulers, or scripts in production with built-in health checks, logging, and restart policies.&lt;/p&gt; 
&lt;h2&gt;Why?&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/aelassas/servy/main/NOTES.md&quot;&gt;NOTES.md&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;Download the latest release from &lt;a href=&quot;https://github.com/aelassas/servy/releases/latest&quot;&gt;GitHub&lt;/a&gt; or install via a package manager:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;WinGet&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;winget install servy
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Chocolatey&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;choco install -y servy
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Scoop&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;scoop bucket add extras
scoop update innounp
scoop install servy
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Quick Example&lt;/h2&gt; 
&lt;p&gt;You can manage services using the &lt;a href=&quot;https://github.com/aelassas/servy/wiki/Servy-Desktop-App&quot;&gt;desktop app (GUI)&lt;/a&gt;, the &lt;a href=&quot;https://github.com/aelassas/servy/wiki/Servy-CLI&quot;&gt;CLI&lt;/a&gt;, or &lt;a href=&quot;https://github.com/aelassas/servy/wiki/Servy-PowerShell-Module&quot;&gt;PowerShell&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Here&#39;s a minimal example using the CLI to turn a Node.js app into a Windows service:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;servy-cli install `
--name=&quot;MyService&quot; `
--path=&quot;C:\Program Files\nodejs\node.exe&quot; `
--startupDir=&quot;C:\MyServer&quot; `
--params=&quot;C:\MyServer\server.js&quot;    
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This creates a service named &lt;code&gt;MyService&lt;/code&gt; that runs your Node.js server in the background and starts automatically with Windows.&lt;/p&gt; 
&lt;p&gt;Then start the service:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;servy-cli start --name=&quot;MyService&quot;    
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Explore more &lt;a href=&quot;https://github.com/aelassas/servy/wiki/Examples-&amp;amp;-Recipes&quot;&gt;examples and recipes&lt;/a&gt; for Python, Java, Go, and other popular frameworks.&lt;/p&gt; 
&lt;h2&gt;Quick Links&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aelassas/servy/releases/latest&quot;&gt;Download&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aelassas/servy/wiki/Installation-Guide&quot;&gt;Installation Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aelassas/servy/wiki/Overview&quot;&gt;Overview&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aelassas/servy/wiki/Usage&quot;&gt;Usage&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aelassas/servy/wiki/FAQ&quot;&gt;FAQ&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aelassas/servy/wiki&quot;&gt;Full Documentation&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;!--
When it comes to features, Servy brings together the best parts of tools like NSSM, WinSW, and FireDaemon Pro, all in one easy-to-use package. It combines the simplicity of open-source tools with the flexibility and power you&#39;d expect from professional service managers. Below is a detailed list of all the features Servy supports.
--&gt; 
&lt;ul&gt; 
 &lt;li&gt;Clean, simple UI&lt;/li&gt; 
 &lt;li&gt;Monitor and manage all installed services with Servy Manager&lt;/li&gt; 
 &lt;li&gt;Real-time CPU and RAM monitoring with live performance graphs for installed services&lt;/li&gt; 
 &lt;li&gt;Real-time service stdout and stderr output preview in Servy Console&lt;/li&gt; 
 &lt;li&gt;Service dependency tree visualization with status indicators&lt;/li&gt; 
 &lt;li&gt;CLI and PowerShell module for full scripting and automated deployments&lt;/li&gt; 
 &lt;li&gt;Run any executable as a Windows service&lt;/li&gt; 
 &lt;li&gt;Set service name, description, startup type, priority, working directory, environment variables, and dependencies&lt;/li&gt; 
 &lt;li&gt;Environment variable expansion supported in parameters, process paths and startup directories&lt;/li&gt; 
 &lt;li&gt;Run services as Local System, local or domain accounts, Active Directory accounts, or gMSAs&lt;/li&gt; 
 &lt;li&gt;Redirect stdout/stderr to log files with automatic size-based and date-based rotations&lt;/li&gt; 
 &lt;li&gt;Run pre-launch hook before starting the service, with retries, timeout, logging and failure handling&lt;/li&gt; 
 &lt;li&gt;Run post-launch hook after the application starts successfully&lt;/li&gt; 
 &lt;li&gt;Run pre-stop and post-stop hooks before the application stops and after the application stops&lt;/li&gt; 
 &lt;li&gt;Supports &lt;code&gt;Ctrl+C&lt;/code&gt; for command-line apps, close-window for GUI apps, and force kill if unresponsive&lt;/li&gt; 
 &lt;li&gt;Supports &lt;code&gt;Ctrl+C&lt;/code&gt; propagation to descendant processes of the wrapped process&lt;/li&gt; 
 &lt;li&gt;Prevent orphaned/zombie processes with improved lifecycle management and ensuring resource cleanup&lt;/li&gt; 
 &lt;li&gt;Health checks and automatic service recovery&lt;/li&gt; 
 &lt;li&gt;Browse and search logs by level, date, and keyword for faster troubleshooting from Servy Manager&lt;/li&gt; 
 &lt;li&gt;Export/Import service configurations for easy backups and automation&lt;/li&gt; 
 &lt;li&gt;Service Event Notification alerts on service failures via Windows notifications and email&lt;/li&gt; 
 &lt;li&gt;Compatible with Windows 7-11 x64 and Windows Server editions&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Changelog&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/aelassas/servy/main/CHANGELOG.md&quot;&gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Roadmap&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/aelassas/servy/main/ROADMAP.md&quot;&gt;ROADMAP.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Support &amp;amp; Contributing&lt;/h2&gt; 
&lt;p&gt;Servy is free and open-source. If you are using it in a commercial or revenue-generating context, or simply find it valuable, consider supporting the project via &lt;a href=&quot;https://github.com/sponsors/aelassas&quot;&gt;GitHub Sponsors&lt;/a&gt;, &lt;a href=&quot;https://www.paypal.me/aelassaspp&quot;&gt;PayPal&lt;/a&gt;, or &lt;a href=&quot;https://www.buymeacoffee.com/aelassas&quot;&gt;Buy Me a Coffee&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Open-source software requires time, effort, and resources to maintain. Every contribution, big or small, makes a difference and motivates continued work on features, bug fixes, and new ideas.&lt;/p&gt; 
&lt;p&gt;If you have suggestions, issues, or would like to contribute, feel free to &lt;a href=&quot;https://github.com/aelassas/servy/issues&quot;&gt;open an issue&lt;/a&gt; or &lt;a href=&quot;https://github.com/aelassas/servy/pulls&quot;&gt;submit a pull request&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Stats for Nerds&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/aelassas/servy/actions/workflows/loc.yml&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/aelassas/servy/refs/heads/loc/loc-prod.svg?sanitize=true&quot; alt=&quot;LoC – Prod&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/aelassas/servy/actions/workflows/loc.yml&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/aelassas/servy/refs/heads/loc/loc-tests.svg?sanitize=true&quot; alt=&quot;LoC – Tests&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/aelassas/servy/actions/workflows/loc.yml&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/aelassas/servy/refs/heads/loc/loc-total.svg?sanitize=true&quot; alt=&quot;LoC – Total&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://servy-win.github.io/stats&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/aelassas/servy/total&quot; alt=&quot;GitHub Downloads&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Servy is &lt;a href=&quot;https://github.com/aelassas/servy/raw/main/LICENSE.txt&quot;&gt;MIT licensed&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Acknowledgments&lt;/h2&gt; 
&lt;p&gt;Thanks to &lt;a href=&quot;https://signpath.io/?utm_source=foundation&amp;amp;utm_medium=github&amp;amp;utm_campaign=servy&quot;&gt;SignPath&lt;/a&gt; for providing a free code signing service, and to the &lt;a href=&quot;https://signpath.org/?utm_source=foundation&amp;amp;utm_medium=github&amp;amp;utm_campaign=servy&quot;&gt;SignPath Foundation&lt;/a&gt; for supplying a free code signing certificate.&lt;/p&gt; 
&lt;p&gt;Thanks to &lt;a href=&quot;https://www.jetbrains.com/&quot;&gt;JetBrains&lt;/a&gt; for providing an &lt;a href=&quot;https://www.jetbrains.com/community/opensource/&quot;&gt;open-source license&lt;/a&gt; for their tools. Their software made it much easier to profile, debug, and optimize Servy, helping improve its performance and stability. Having access to these professional tools really made a difference during development and saved a lot of time.&lt;/p&gt; 
&lt;p&gt;Special thanks to everyone who tested Servy, reported issues, and suggested improvements on GitHub and Reddit. Your feedback and contributions have shaped the project and made it better with every release.&lt;/p&gt; 
&lt;p&gt; &lt;a href=&quot;https://signpath.org/?utm_source=foundation&amp;amp;utm_medium=github&amp;amp;utm_campaign=servy&quot;&gt; &lt;img alt=&quot;SignPath Foundation&quot; src=&quot;https://aelassas.github.io/content/signpath.png?v=2&quot; width=&quot;54&quot; height=&quot;51&quot; /&gt; &lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://www.jetbrains.com/community/opensource/&quot;&gt; &lt;img alt=&quot;JetBrains Open Source&quot; src=&quot;https://aelassas.github.io/content/jetbrains.svg?v=3&quot; width=&quot;54&quot; height=&quot;51&quot; /&gt; &lt;/a&gt; &lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/bd4daa399b7770d18f9a0b3df7fbbf92cf69fd064943acaa97f824bef402f2e0/aelassas/servy" medium="image" />
      
    </item>
    
    <item>
      <title>memstechtips/Winhance</title>
      <link>https://github.com/memstechtips/Winhance</link>
      <description>&lt;p&gt;Application designed to optimize, customize and enhance your Windows experience.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Winhance - Windows Enhancement Utility 🚀&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Winhance&lt;/strong&gt; is a C# application designed to debloat, optimize and customize your Windows experience. From software management to system optimizations and customization, Winhance provides everything you need to enhance Windows 10 and 11 systems.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Winhance&lt;/strong&gt; features most of the same enhancements as &lt;a href=&quot;https://github.com/memstechtips/UnattendedWinstall&quot;&gt;UnattendedWinstall&lt;/a&gt; without needing to do a clean install of Windows.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;Winhance is an independent, open-source project and is &lt;strong&gt;not affiliated with, endorsed by, or associated with Microsoft&lt;/strong&gt; in any way. &quot;Windows&quot; is a registered trademark of Microsoft Corporation. Any similarities to Windows Settings or other Microsoft interfaces are a natural result of building a Windows enhancement tool using native Windows UI frameworks.&lt;/p&gt; 
&lt;/div&gt; 
&lt;img width=&quot;1920&quot; height=&quot;1080&quot; alt=&quot;Winhance-UI&quot; src=&quot;https://github.com/user-attachments/assets/6adedef9-6587-4f29-9bb2-d907965b7a03&quot; /&gt; 
&lt;h2&gt;Requirements 💻&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Windows 10/11 
  &lt;ul&gt; 
   &lt;li&gt;&lt;em&gt;Tested on Windows 10 x64 22H2 and Windows 11 23H2, 24H2 and 25H2&lt;/em&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation 📥&lt;/h2&gt; 
&lt;h3&gt;Quick Install via PowerShell&lt;/h3&gt; 
&lt;p&gt;Paste this command into PowerShell to download and run the installer:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;irm &quot;https://get.winhance.net&quot; | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Download the Installer&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://winhance.net&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Download-Winhance.net-0078D6?style=for-the-badge&amp;amp;logo=windows&amp;amp;logoColor=white&quot; alt=&quot;Download from Winhance.net&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/memstechtips/Winhance/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Download-GitHub%20Releases-181717?style=for-the-badge&amp;amp;logo=github&amp;amp;logoColor=white&quot; alt=&quot;Download from GitHub Releases&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;The &lt;code&gt;Winhance.Installer.exe&lt;/code&gt; includes both Installable and Portable versions during setup.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;This tool is currently in development. Any issues can be reported using the Issues tab.&lt;br /&gt; Also, I&#39;m not a developer, I&#39;m just enjoying learning more about scripting/programming and learning as I go.&lt;br /&gt;&lt;br /&gt; Please also understand that I prefer to develop and work on these projects independently.&lt;br /&gt;I do value other people&#39;s insights and appreciate any feedback, but don&#39;t take it personally if a pull request is not accepted.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Support the developer&lt;/h2&gt; 
&lt;p&gt;It really does make a big difference, and is very much appreciated. Thanks&lt;br /&gt; &lt;a href=&quot;https://ko-fi.com/memstechtips&quot;&gt;&lt;img src=&quot;https://ko-fi.com/img/githubbutton_sm.svg?sanitize=true&quot; alt=&quot;ko-fi&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://paypal.me/memstech&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&amp;amp;logo=paypal&amp;amp;logoColor=white&quot; alt=&quot;PayPal&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Current Features 🛠️&lt;/h2&gt; 
&lt;h3&gt;Software &amp;amp; Apps 💿&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Windows Apps &amp;amp; Features Section&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Searchable interface with explanatory legend&lt;/li&gt; 
   &lt;li&gt;Organized sections for Windows Apps, Legacy Capabilities, and Optional Features&lt;/li&gt; 
   &lt;li&gt;One-click removal and installation of selected items&lt;/li&gt; 
   &lt;li&gt;Control scripts and scheduled tasks via Windows Apps Help menu&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;External Apps Section&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Install various useful applications via WinGet 
    &lt;ul&gt; 
     &lt;li&gt;(WinGet COM API integration based on &lt;a href=&quot;https://github.com/marticliment/WinGet-API-from-CSharp&quot;&gt;https://github.com/marticliment/WinGet-API-from-CSharp&lt;/a&gt;)&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;Categories include Browsers, Multimedia utilities, Document viewers, and more&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Optimize 🚀&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Searchable interface with quick nav control&lt;/li&gt; 
 &lt;li&gt;Toggle switches and selection controls for each setting&lt;/li&gt; 
 &lt;li&gt;Set UAC Notification Level&lt;/li&gt; 
 &lt;li&gt;Privacy Settings&lt;/li&gt; 
 &lt;li&gt;Gaming and Performance Optimizations&lt;/li&gt; 
 &lt;li&gt;Windows Updates&lt;/li&gt; 
 &lt;li&gt;Power Settings with Power Plan selection&lt;/li&gt; 
 &lt;li&gt;Sound Settings&lt;/li&gt; 
 &lt;li&gt;Notification Preferences&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Customize 🎨&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Searchable interface with quick nav control&lt;/li&gt; 
 &lt;li&gt;Toggle switches and selection controls for each setting&lt;/li&gt; 
 &lt;li&gt;Windows Theme selector (Dark/Light Mode)&lt;/li&gt; 
 &lt;li&gt;Taskbar Customization&lt;/li&gt; 
 &lt;li&gt;Start Menu Customization&lt;/li&gt; 
 &lt;li&gt;Explorer Customizations&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Advanced Tools 🛠️&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Create Custom Windows ISO&#39;s with WIMUtil (Windows Installation Media Utility) including adding drivers from current OS&lt;/li&gt; 
 &lt;li&gt;Create autounattend.xml files based on your Winhance selections&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Other Settings&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Manage Your Winhance (and Windows) Settings with Wihance Configuration Files: 
  &lt;ul&gt; 
   &lt;li&gt;Save settings currently applied in Winhance to a config file for easy importing on a new system or after a fresh Windows install.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Toggle Winhance&#39;s theme (Light/Dark Mode)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Except where otherwise stated (see &lt;a href=&quot;https://raw.githubusercontent.com/memstechtips/Winhance/main/THIRD-PARTY-NOTICES.txt&quot;&gt;THIRD-PARTY-NOTICES.txt&lt;/a&gt;), the content of this repository is provided under the &lt;a href=&quot;https://polyformproject.org/licenses/shield/1.0.0/&quot;&gt;PolyForm Shield 1.0.0&lt;/a&gt; license by Marco du Plessis.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;In plain language:&lt;/strong&gt; Winhance is free to use for everyone -- individuals, businesses, and IT professionals. You can use it to service and consult for clients. You just can&#39;t fork or rebrand it and redistribute it as a competing product. See the full &lt;a href=&quot;https://raw.githubusercontent.com/memstechtips/Winhance/main/LICENSE.txt&quot;&gt;LICENSE.txt&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h2&gt;Feedback and Community&lt;/h2&gt; 
&lt;p&gt;If you have feedback, suggestions, or need help with Winhance, please join the discussion on GitHub or our Discord community:&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/memstechtips/Winhance/discussions/183&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Join-the%20Discussion-2D9F2D?style=for-the-badge&amp;amp;logo=github&amp;amp;logoColor=white&quot; alt=&quot;Join the Discussion&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.discord.gg/zWGANV8QAX&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Join-Discord%20Community-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Join Discord Community&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/916105685/2f929ffe-5433-4d0c-b28c-c1890bc88b5e" medium="image" />
      
    </item>
    
    <item>
      <title>builtbybel/Winslopr</title>
      <link>https://github.com/builtbybel/Winslopr</link>
      <description>&lt;p&gt;Windows Slop Remover&lt;/p&gt;&lt;hr&gt;&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &quot;winslop&quot; might refer to Windows 11 in some corners of the internet.&lt;br /&gt; Winslopr is the tool designed to clean it up.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h1&gt;Winslopr&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Win&lt;/strong&gt;dows &lt;strong&gt;slop&lt;/strong&gt; &lt;strong&gt;r&lt;/strong&gt;emover&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;em&gt;&quot;We need to get beyond the arguments of slop vs sophistication…&quot;&lt;/em&gt;&lt;br /&gt; — Satya Nadella&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&quot;Slop&quot; = stuff that ships by default, wastes resources, and takes control away, while doing basically nothing for you.&lt;/p&gt; 
&lt;p&gt;This started as a joke.&lt;br /&gt; Then Microsoft said &quot;slop vs sophistication&quot; out loud and it stopped being one.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;📋 &lt;a href=&quot;https://builtbybel.github.io/Winslopr/annoyances/&quot;&gt;What annoys you most about Windows 11?&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;59 community-sourced annoyances. Filterable. With fixes.&lt;br /&gt; See what Winslopr handles and what needs extra tools.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h1&gt;winslopr&lt;/h1&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Windows
└── slop
    ├── telemetry
    ├── assistants
    ├── ads
    ├── suggestions
    └── background junk
         ↓
      removed by winslopr
         ↓
       thanks
        Satya
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;remove the slop. Nothing fancy. Just tools.&lt;/p&gt; 
&lt;h2&gt;FAQ&lt;/h2&gt; 
&lt;p&gt;&lt;sub&gt;Click to expand. No assistant required.&lt;/sub&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Is Winslopr anti-Windows?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;No.&lt;br /&gt; Windows itself is fine.&lt;br /&gt; The unnecessary stuff layered on top of it isn’t.&lt;/p&gt; 
 &lt;p&gt;Winslopr targets &lt;strong&gt;slop&lt;/strong&gt;, not Windows.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Is there a help file / quick start guide?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Yes.&lt;br /&gt; There&#39;s a small, lightweight entry guide to get you going:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Quick Start / Help:&lt;/strong&gt; &lt;a href=&quot;https://github.com/builtbybel/Winslop/raw/main/docs/Help.md&quot;&gt;https://github.com/builtbybel/Winslop/blob/main/docs/Help.md&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Is this an anti-AI project?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Also no.&lt;/p&gt; 
 &lt;p&gt;Winslopr doesn’t care whether something is AI, scripted, cloud-based or hand-written.&lt;br /&gt; If it’s forced, opaque, or unnecessary, its slop.&lt;/p&gt; 
 &lt;p&gt;If it’s optional, transparent and useful, it’s fine.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Does Winslopr use AI?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;No.&lt;/p&gt; 
 &lt;p&gt;There is no model, no prompt, no inference step.&lt;br /&gt; Everything is deterministic and based on explicit user choices.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Is anything uploaded to the cloud?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;No.&lt;/p&gt; 
 &lt;p&gt;Winslopr does not upload logs, telemetry, system data or usage statistics.&lt;br /&gt; All actions happen locally on your machine.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Can Winslopr break my system?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Any system tool can if misused.&lt;/p&gt; 
 &lt;p&gt;That’s why Winslopr:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;shows exactly what it will change&lt;/li&gt; 
  &lt;li&gt;never runs anything automatically&lt;/li&gt; 
  &lt;li&gt;allows changes to be reviewed and reverted&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;You stay in control.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Why not just use Copilot / Settings / PowerShell?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;You can.&lt;/p&gt; 
 &lt;p&gt;Winslopr exists for people who prefer:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;fewer layers&lt;/li&gt; 
  &lt;li&gt;less abstraction&lt;/li&gt; 
  &lt;li&gt;no opinions&lt;/li&gt; 
  &lt;li&gt;no assistants&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;Just tools.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Is this related to CrapFixer?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Yes.&lt;/p&gt; 
 &lt;p&gt;Winslopr is a very small, focused fork of CrapFixer.&lt;br /&gt; The goal was to remove complexity, reduce scope and make things easier to maintain.&lt;/p&gt; 
 &lt;p&gt;Smaller codebase.&lt;br /&gt; Clearer intent.&lt;br /&gt; Less slop.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Why the name?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Because Microsoft said &lt;em&gt;“slop vs sophistication”&lt;/em&gt; out loud.&lt;/p&gt; 
 &lt;p&gt;And because Windows isn&#39;t bad.&lt;br /&gt; The slop is.&lt;/p&gt; 
 &lt;p&gt;Winslopr is &lt;strong&gt;anti-slop by design&lt;/strong&gt;.&lt;/p&gt; 
 &lt;p&gt;That’s why the UI is intentionally small, plain and functional. No glossy visuals.&lt;br /&gt; No animations.&lt;br /&gt; No AI-generated fluff.&lt;/p&gt; 
 &lt;p&gt;Slop comes in many forms:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;AI slop&lt;/strong&gt; &amp;gt; mass-produced, soulless output&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Feature slop&lt;/strong&gt; &amp;gt; unnecessary features that make UX worse&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;UX / Design slop&lt;/strong&gt; &amp;gt; bloated, unclear interfaces&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Corporate slop&lt;/strong&gt; &amp;gt; buzzwords, filler and dark patterns&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;Winslopr does the opposite: It removes more than it adds.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Confession: I like Windows, but...&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;I just hate what Windows 11 keeps trying to become.&lt;br /&gt; So I built the “stop doing that” button again.&lt;br /&gt; Consider this stress relief with a UI.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Is &quot;Slopr&quot; even a real word?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Not really.&lt;br /&gt; Its a constructed name&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Winslopr&lt;/strong&gt; is a made-up tool name, somewhere between &lt;strong&gt;cleaner&lt;/strong&gt;, &lt;strong&gt;remover&lt;/strong&gt;, and something that just sounds like it belongs in a Windows utility folder.&lt;/p&gt; 
 &lt;p&gt;&quot;Sloper&quot; isnt a real word in this context.&lt;br /&gt; But &lt;strong&gt;Winslopr&lt;/strong&gt; still reads like one: the thing that removes the slop&lt;/p&gt; 
 &lt;p&gt;So no, the word didn’t exist. Now it does&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;What is Winslopr written in?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;C# with WinUI 3. Started as a fork of CrapFixer, rebuilt from scratch to be smaller and more focused.&lt;/p&gt; 
&lt;/details&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/1130260802/694d53a9-a0b2-4248-ba90-759d64b86257" medium="image" />
      
    </item>
    
    <item>
      <title>nopSolutions/nopCommerce</title>
      <link>https://github.com/nopSolutions/nopCommerce</link>
      <description>&lt;p&gt;ASP.NET Core eCommerce software. nopCommerce is a free and open-source shopping cart.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;nopCommerce: free and open-source eCommerce solution&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.nopcommerce.com/?utm_source=github&amp;amp;utm_medium=content&amp;amp;utm_campaign=homepage&quot;&gt;nopCommerce&lt;/a&gt; is the best open-source eCommerce platform. nopCommerce is free, and it is the most popular &lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core shopping cart.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://www.nopcommerce.com/images/github/responsive_devices_codeplex.png#v1&quot; alt=&quot;nopCommerce demo&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Key features&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;The product is being developed and supported by the professional team since 2008.&lt;/li&gt; 
 &lt;li&gt;nopCommerce has been downloaded more than 3,000,000 times.&lt;/li&gt; 
 &lt;li&gt;The active developer community has more than 250,000 members.&lt;/li&gt; 
 &lt;li&gt;nopCommerce runs on .NET 9 with an MS SQL 2012 (or higher) backend database.&lt;/li&gt; 
 &lt;li&gt;nopCommerce is cross-platform, and you can run it on Windows, Linux, or Mac.&lt;/li&gt; 
 &lt;li&gt;nopCommerce supports Docker out of the box, so you can easily run nopCommerce on a Linux machine.&lt;/li&gt; 
 &lt;li&gt;nopCommerce supports PostgreSQL and MySQL databases.&lt;/li&gt; 
 &lt;li&gt;nopCommerce fully supports web farms. You can read more about it &lt;a href=&quot;https://docs.nopcommerce.com/en/developer/tutorials/web-farms.html?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=documentation&amp;amp;utm_content=text&quot;&gt;here&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;All methods in nopCommerce are async.&lt;/li&gt; 
 &lt;li&gt;nopCommerce supports multi-factor authentication out of the box.&lt;/li&gt; 
 &lt;li&gt;Start our &lt;a href=&quot;https://nopcommerce.com/training?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=course&amp;amp;utm_content=text&quot;&gt;online course for developers&lt;/a&gt; and get the practical and technical skills you need to run and customize nopCommerce websites.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://www.nopcommerce.com/images/github/logos.png#v2&quot; alt=&quot;Logo&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;nopCommerce architecture follows well-known software patterns and the best security practices. The source code is fully customizable. Pluggable and clear architecture makes it easy to develop custom functionality and follow any business requirements.&lt;/p&gt; 
&lt;p&gt;Using the latest Microsoft technologies, nopCommerce provides high performance, stability, and security. nopCommerce is also fully compatible with Azure and web farms.&lt;/p&gt; 
&lt;p&gt;Our clear and detailed &lt;a href=&quot;https://docs.nopcommerce.com/developer/index.html?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=documentation&amp;amp;utm_content=text&quot;&gt;documentation&lt;/a&gt; and &lt;a href=&quot;https://nopcommerce.com/training?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=course&amp;amp;utm_content=text&quot;&gt;online course&lt;/a&gt; for developers will help you start with nopCommerce easily.&lt;/p&gt; 
&lt;h3&gt;The advantages of working with nopCommerce&lt;/h3&gt; 
&lt;p&gt;nopCommerce offers powerful &lt;a href=&quot;https://www.nopcommerce.com/features?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=features&amp;amp;utm_content=text&quot;&gt;out-of-the-box features&lt;/a&gt; for creating an online store of any size and type.&lt;/p&gt; 
&lt;p&gt;nopCommerce is integrated with all the popular third-party services. You can find thousands of integrations on nopCommerce &lt;a href=&quot;https://www.nopcommerce.com/marketplace?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=marketplace&amp;amp;utm_content=text&quot;&gt;Marketplace&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The &lt;a href=&quot;https://www.nopcommerce.com/web-api?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=WebAPI&amp;amp;utm_content=text&quot;&gt;Web API plugin&lt;/a&gt; by the nopCommerce team lets you build integrations with third-party services or mobile applications using REST. The Web API plugin is available with source code and covers all methods of nopCommerce: backend and frontend. You can read more about it &lt;a href=&quot;https://www.nopcommerce.com/web-api?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=WebAPI&amp;amp;utm_content=text&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Friendly members of the &lt;a href=&quot;https://www.nopcommerce.com/boards?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=forum&amp;amp;utm_content=text&quot;&gt;nopCommerce community&lt;/a&gt; will always help with advice and share their experiences. nopCommerce core development team provides &lt;a href=&quot;https://www.nopcommerce.com/nopcommerce-premium-support-services?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=premium_support&amp;amp;utm_content=text&quot;&gt;professional support&lt;/a&gt; within 24 hours.&lt;/p&gt; 
&lt;h2&gt;Store demo&lt;/h2&gt; 
&lt;p&gt;Evaluate the functionality and convenience of nopCommerce as a customer and store owner.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Front End&lt;/th&gt; 
   &lt;th&gt;Admin area&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://demo.nopcommerce.com?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=demo_store&amp;amp;utm_content=button&quot;&gt;&lt;img src=&quot;https://www.nopcommerce.com/images/github/public-demo.png#v1&quot; alt=&quot;ScreenShot&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://admin-demo.nopcommerce.com/admin?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=demo_store&amp;amp;utm_content=button&quot;&gt;&lt;img src=&quot;https://www.nopcommerce.com/images/github/admin-demo.png#v1&quot; alt=&quot;ScreenShot&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;nopCommerce resources&lt;/h3&gt; 
&lt;p&gt;nopCommerce official site: &lt;a href=&quot;https://www.nopcommerce.com/?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=homepage&amp;amp;utm_content=links&quot;&gt;https://www.nopcommerce.com&lt;/a&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nopcommerce.com/demo?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=demo_store&amp;amp;utm_content=links&quot;&gt;Demo store&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nopcommerce.com/download-nopcommerce?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=download_nop&amp;amp;utm_content=links&quot;&gt;Download nopCommerce&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://nopcommerce.com/training?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=course&amp;amp;utm_content=links&quot;&gt;Online course for developers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nopcommerce.com/features?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=features&amp;amp;utm_content=links&quot;&gt;Feature list&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nopcommerce.com/web-api?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=WebAPI&amp;amp;utm_content=links&quot;&gt;Web API plugin&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.nopcommerce.com?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=documentation&amp;amp;utm_content=links&quot;&gt;nopCommerce documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nopcommerce.com/boards?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=forum&amp;amp;utm_content=links&quot;&gt;Community forums&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nopcommerce.com/nopcommerce-premium-support-services?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=premium_support&amp;amp;utm_content=links&quot;&gt;Premium support services&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nopcommerce.com/certified-developer-program?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=certified_developer&amp;amp;utm_content=links&quot;&gt;Certified developer program&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nopcommerce.com/partners?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=solution_partners&amp;amp;utm_content=links&quot;&gt;nopCommerce partners&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;nopCommerce YouTube: &lt;a href=&quot;https://www.youtube.com/watch?v=6gLbizzSA9o&amp;amp;list=PLnL_aDfmRHwtJmzeA7SxrpH3-XDY2ue0a&quot;&gt;The Architecture behind the nopCommerce eCommerce Platform&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Earn with nopCommerce&lt;/h3&gt; 
&lt;p&gt;60,000 stores worldwide are powered by nopCommerce, and 10,000 new stores open every year. nopCommerce &lt;a href=&quot;https://www.nopcommerce.com/partners?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=solution_partners&amp;amp;utm_content=text_become_partner&quot;&gt;solution partners’ directory&lt;/a&gt; gets 80,000+ page views per year from store owners who are looking for a partner to build a store from scratch, migrate from another platform, or improve and customize an existing store.&lt;/p&gt; 
&lt;p&gt;Become a solution partner of nopCommerce and get new clients – &lt;a href=&quot;https://www.nopcommerce.com/become-partner?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=become-partner&amp;amp;utm_content=learn_more&quot;&gt;learn more&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Create a new graphical theme or develop a new plugin or integration and sell it on the nopCommerce &lt;a href=&quot;https://www.nopcommerce.com/marketplace?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=marketplace&amp;amp;utm_content=text_sell_on_marketplace&quot;&gt;Marketplace&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Contribute&lt;/h3&gt; 
&lt;p&gt;As a free and open-source project, we are very grateful to everyone who helps us to develop nopCommerce. Please find more details about the options and bonuses for contributors at &lt;a href=&quot;https://www.nopcommerce.com/contribute?utm_source=github&amp;amp;utm_medium=referral&amp;amp;utm_campaign=contribute&amp;amp;utm_content=text&quot;&gt;contribute page&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/bab201901c141f662629e8fb6212aa730621bbbe57f24eeb40b55f90ce47f065/nopSolutions/nopCommerce" medium="image" />
      
    </item>
    
    <item>
      <title>Jackett/Jackett</title>
      <link>https://github.com/Jackett/Jackett</link>
      <description>&lt;p&gt;API Support for your favorite torrent trackers&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Jackett&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/Jackett/Jackett.svg?maxAge=60&amp;amp;style=flat-square&quot; alt=&quot;GitHub issues&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Jackett/Jackett/pulls&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues-pr/Jackett/Jackett.svg?maxAge=60&amp;amp;style=flat-square&quot; alt=&quot;GitHub pull requests&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://dev.azure.com/jackett/jackett/_build/latest?definitionId=1&amp;amp;branchName=master&quot;&gt;&lt;img src=&quot;https://dev.azure.com/Jackett/Jackett/_apis/build/status/Jackett.Jackett?branchName=master&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/Jackett/Jackett/total.svg?maxAge=60&amp;amp;style=flat-square&quot; alt=&quot;GitHub Releases&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/linuxserver/jackett/&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/pulls/linuxserver/jackett.svg?maxAge=60&amp;amp;style=flat-square&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Table of Contents&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#introduction&quot;&gt;Introduction&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#supported-systems&quot;&gt;Supported Systems&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#supported-trackers&quot;&gt;Supported Trackers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#installation&quot;&gt;Installation&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#windows-installation&quot;&gt;Windows Installation&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#linux-installation-amd-x64&quot;&gt;Linux Installation (AMD x64)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#linux-installation-armv7-or-above&quot;&gt;Linux Installation (ARMv7 or above)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#linux-installation-armv6-or-below&quot;&gt;Linux Installation (ARMv6 or below)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#macos-installation&quot;&gt;macOS Installation&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#docker-installation&quot;&gt;Docker Installation&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#other-installation-methods&quot;&gt;Other Installation Methods&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#uninstallation&quot;&gt;Uninstallation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#configuration&quot;&gt;Configuration&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#running-behind-reverse-proxy&quot;&gt;Running Behind Reverse Proxy&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#search-cache&quot;&gt;Search Cache&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#torznab-cache&quot;&gt;Torznab Cache&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#configuring-flaresolverr&quot;&gt;FlareSolverr Configuration&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#configuring-omdb&quot;&gt;OMDb Configuration&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#api-usage&quot;&gt;API Usage&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#jackett-torznab-query-syntax&quot;&gt;Torznab Query Syntax&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#search-modes-and-parameters&quot;&gt;Search Modes and Parameters&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#filter-indexers&quot;&gt;Filter Indexers&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#aggregate-indexers&quot;&gt;Aggregate Indexers&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#command-line-switches&quot;&gt;Command Line Options&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#building-from-source&quot;&gt;Building from Source&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Introduction&lt;/h2&gt; 
&lt;p&gt;Jackett works as a proxy server that translates queries from applications (&lt;a href=&quot;https://github.com/Sonarr/Sonarr&quot;&gt;Sonarr&lt;/a&gt;, &lt;a href=&quot;https://github.com/Radarr/Radarr&quot;&gt;Radarr&lt;/a&gt;, &lt;a href=&quot;https://sickrage.github.io/&quot;&gt;SickRage&lt;/a&gt;, &lt;a href=&quot;https://couchpota.to/&quot;&gt;CouchPotato&lt;/a&gt;, &lt;a href=&quot;https://github.com/mylar3/mylar3&quot;&gt;Mylar3&lt;/a&gt;, &lt;a href=&quot;https://github.com/lidarr/lidarr&quot;&gt;Lidarr&lt;/a&gt;, &lt;a href=&quot;https://github.com/SchizoDuckie/DuckieTV&quot;&gt;DuckieTV&lt;/a&gt;, &lt;a href=&quot;https://www.qbittorrent.org/&quot;&gt;qBittorrent&lt;/a&gt;, &lt;a href=&quot;https://github.com/lardbit/nefarious&quot;&gt;Nefarious&lt;/a&gt;, &lt;a href=&quot;https://github.com/theotherp/nzbhydra2&quot;&gt;NZBHydra2&lt;/a&gt;, etc.) into tracker-site-specific HTTP queries, parses the HTML or JSON response, and sends results back to the requesting software.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;What Jackett does:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Acts as a bridge between your apps and torrent trackers&lt;/li&gt; 
 &lt;li&gt;Provides recent uploads (similar to RSS feeds)&lt;/li&gt; 
 &lt;li&gt;Performs searches across multiple trackers&lt;/li&gt; 
 &lt;li&gt;Returns results in a standardized format (Torznab/TorrentPotato)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Single repository of maintained indexer scraping and translation logic&lt;/li&gt; 
 &lt;li&gt;Removes the burden of tracker integration from other applications&lt;/li&gt; 
 &lt;li&gt;Supports public, semi-private and private trackers&lt;/li&gt; 
 &lt;li&gt;Implements the &lt;a href=&quot;https://torznab.github.io/spec-1.3-draft/index.html&quot;&gt;Torznab&lt;/a&gt; and &lt;a href=&quot;https://github.com/RuudBurger/CouchPotatoServer/wiki/Couchpotato-torrent-provider&quot;&gt;TorrentPotato&lt;/a&gt; APIs&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Developer Information&lt;/h3&gt; 
&lt;p&gt;This project is recruiting development help. If you can help out please &lt;a href=&quot;https://github.com/Jackett/Jackett/issues/8180&quot;&gt;contact us&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For detailed troubleshooting and contributing guidelines, please see &lt;a href=&quot;https://github.com/Jackett/Jackett/raw/master/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;A third-party Golang SDK for Jackett is available from &lt;a href=&quot;https://github.com/webtor-io/go-jackett&quot;&gt;webtor-io/go-jackett&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The Discord server is no longer maintained. If you have a problem, request, or question, please open a new issue on &lt;a href=&quot;https://github.com/Jackett/Jackett/issues&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Supported Systems&lt;/h2&gt; 
&lt;p&gt;The currently supported version of Jackett is &lt;strong&gt;0.24.+&lt;/strong&gt;, which is compatible with:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Windows:&lt;/strong&gt; Windows 10 Version 1607 or greater (&lt;a href=&quot;https://github.com/dotnet/core/raw/main/release-notes/9.0/supported-os.md#windows&quot;&gt;full list&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Linux:&lt;/strong&gt; Various distributions (&lt;a href=&quot;https://github.com/dotnet/core/raw/main/release-notes/9.0/supported-os.md#linux&quot;&gt;full list&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;macOS:&lt;/strong&gt; macOS 13.0+ (Ventura) or greater (&lt;a href=&quot;https://github.com/dotnet/core/raw/main/release-notes/9.0/supported-os.md#apple&quot;&gt;full list&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Prior versions of Jackett are no longer supported.&lt;/p&gt; 
&lt;h4&gt;Supported Trackers&lt;/h4&gt; 
&lt;details&gt; 
 &lt;summary&gt; &lt;b&gt; Supported Public Trackers &lt;/b&gt; &lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;ØMagnet&lt;/li&gt; 
  &lt;li&gt;1337x&lt;/li&gt; 
  &lt;li&gt;52BT&lt;/li&gt; 
  &lt;li&gt;ACG.RIP&lt;/li&gt; 
  &lt;li&gt;AniLibria&lt;/li&gt; 
  &lt;li&gt;Anime Tosho&lt;/li&gt; 
  &lt;li&gt;AniRena&lt;/li&gt; 
  &lt;li&gt;AniSource&lt;/li&gt; 
  &lt;li&gt;ApacheTorrent&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://arab-torrents.com&quot;&gt;arab-torrents.com&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;AudioBook Bay (ABB)&lt;/li&gt; 
  &lt;li&gt;Bangumi Moe&lt;/li&gt; 
  &lt;li&gt;BigFANGroup&lt;/li&gt; 
  &lt;li&gt;BitRu&lt;/li&gt; 
  &lt;li&gt;BlueRoms&lt;/li&gt; 
  &lt;li&gt;BT.etree&lt;/li&gt; 
  &lt;li&gt;BTdirectory (BT目录)&lt;/li&gt; 
  &lt;li&gt;btstate&lt;/li&gt; 
  &lt;li&gt;Byrutor&lt;/li&gt; 
  &lt;li&gt;Catorrent&lt;/li&gt; 
  &lt;li&gt;CrackingPatching&lt;/li&gt; 
  &lt;li&gt;DaMagNet&lt;/li&gt; 
  &lt;li&gt;Demonoid Clone&lt;/li&gt; 
  &lt;li&gt;DivxTotal&lt;/li&gt; 
  &lt;li&gt;dmhy&lt;/li&gt; 
  &lt;li&gt;DonTorrent&lt;/li&gt; 
  &lt;li&gt;E-Hentai&lt;/li&gt; 
  &lt;li&gt;EBook Bay (EBB)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Elitetorrent.wf&quot;&gt;Elitetorrent.wf&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;EpubLibre&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://ExtraTorrent.st&quot;&gt;ExtraTorrent.st&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;EZTV&lt;/li&gt; 
  &lt;li&gt;FileMood&lt;/li&gt; 
  &lt;li&gt;FilmesHdTorrent&lt;/li&gt; 
  &lt;li&gt;Free JAV Torrent&lt;/li&gt; 
  &lt;li&gt;GamesTorrents&lt;/li&gt; 
  &lt;li&gt;HDRTorrent&lt;/li&gt; 
  &lt;li&gt;ilCorSaRoNeRo&lt;/li&gt; 
  &lt;li&gt;Internet Archive (&lt;a href=&quot;http://archive.org&quot;&gt;archive.org&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://kickasstorrents.to&quot;&gt;kickasstorrents.to&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://kickasstorrents.ws&quot;&gt;kickasstorrents.ws&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Knaben&lt;/li&gt; 
  &lt;li&gt;LimeTorrents&lt;/li&gt; 
  &lt;li&gt;LinuxTracker&lt;/li&gt; 
  &lt;li&gt;Mac Torrents Download&lt;/li&gt; 
  &lt;li&gt;Magnet Cat&lt;/li&gt; 
  &lt;li&gt;MagnetDownload&lt;/li&gt; 
  &lt;li&gt;Magnetz&lt;/li&gt; 
  &lt;li&gt;MegaPeer&lt;/li&gt; 
  &lt;li&gt;MejorTorrent&lt;/li&gt; 
  &lt;li&gt;Mikan&lt;/li&gt; 
  &lt;li&gt;MixTapeTorrent&lt;/li&gt; 
  &lt;li&gt;MoviesDVDR&lt;/li&gt; 
  &lt;li&gt;MyPornClub&lt;/li&gt; 
  &lt;li&gt;nekoBT&lt;/li&gt; 
  &lt;li&gt;NewStudio&lt;/li&gt; 
  &lt;li&gt;Nipponsei&lt;/li&gt; 
  &lt;li&gt;NoNaMe Club (NNM-Club)&lt;/li&gt; 
  &lt;li&gt;NorTorrent&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Nyaa.si&quot;&gt;Nyaa.si&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;OneJAV&lt;/li&gt; 
  &lt;li&gt;OpenSharing&lt;/li&gt; 
  &lt;li&gt;PC-torrent&lt;/li&gt; 
  &lt;li&gt;PandaCD&lt;/li&gt; 
  &lt;li&gt;plugintorrent&lt;/li&gt; 
  &lt;li&gt;PornoTorrent&lt;/li&gt; 
  &lt;li&gt;PornRips&lt;/li&gt; 
  &lt;li&gt;Postman&lt;/li&gt; 
  &lt;li&gt;RedeTorrent&lt;/li&gt; 
  &lt;li&gt;RinTorNeT&lt;/li&gt; 
  &lt;li&gt;RuTor&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://RuTracker.RU&quot;&gt;RuTracker.RU&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Sexy-Pics&lt;/li&gt; 
  &lt;li&gt;Shana Project&lt;/li&gt; 
  &lt;li&gt;ShowRSS&lt;/li&gt; 
  &lt;li&gt;SkidrowRepack&lt;/li&gt; 
  &lt;li&gt;sosulki&lt;/li&gt; 
  &lt;li&gt;SubsPlease&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://sukebei.Nyaa.si&quot;&gt;sukebei.Nyaa.si&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;The Pirate Bay (TPB)&lt;/li&gt; 
  &lt;li&gt;TheRARBG&lt;/li&gt; 
  &lt;li&gt;Tokyo Tosho&lt;/li&gt; 
  &lt;li&gt;Torrent Downloads&lt;/li&gt; 
  &lt;li&gt;Torrent Oyun indir&lt;/li&gt; 
  &lt;li&gt;Torrent[CORE]&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://torrent.by&quot;&gt;torrent.by&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;torrent-pirat&lt;/li&gt; 
  &lt;li&gt;Torrent9&lt;/li&gt; 
  &lt;li&gt;TorrentDownload&lt;/li&gt; 
  &lt;li&gt;TorrentGalaxyClone&lt;/li&gt; 
  &lt;li&gt;TorrentKitty&lt;/li&gt; 
  &lt;li&gt;TorrentProject2&lt;/li&gt; 
  &lt;li&gt;TorrentQQ (토렌트큐큐)&lt;/li&gt; 
  &lt;li&gt;Torrents.csv&lt;/li&gt; 
  &lt;li&gt;Torrentsome (토렌트썸)&lt;/li&gt; 
  &lt;li&gt;Torrenttip (토렌트팁)&lt;/li&gt; 
  &lt;li&gt;U2P&lt;/li&gt; 
  &lt;li&gt;U3C3&lt;/li&gt; 
  &lt;li&gt;Uindex&lt;/li&gt; 
  &lt;li&gt;UzTracker&lt;/li&gt; 
  &lt;li&gt;VSTHouse&lt;/li&gt; 
  &lt;li&gt;VST Torrentz&lt;/li&gt; 
  &lt;li&gt;VSTorrent&lt;/li&gt; 
  &lt;li&gt;Wolfmax4K&lt;/li&gt; 
  &lt;li&gt;World-torrent&lt;/li&gt; 
  &lt;li&gt;XXXClub&lt;/li&gt; 
  &lt;li&gt;xxxtor&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://YTS.ag&quot;&gt;YTS.ag&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Zamunda RIP&lt;/li&gt; 
  &lt;li&gt;ZkTorrent&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt; &lt;b&gt; Supported Semi-Private Trackers &lt;/b&gt; &lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;AniDUB&lt;/li&gt; 
  &lt;li&gt;Anime by Belka (Аниме от Белки)&lt;/li&gt; 
  &lt;li&gt;AnimeLayer&lt;/li&gt; 
  &lt;li&gt;Best-Torrents [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;BitMagnet (Local DHT) [&lt;a href=&quot;https://github.com/bitmagnet-io/bitmagnet&quot;&gt;site&lt;/a&gt;]&lt;/li&gt; 
  &lt;li&gt;BookTracker&lt;/li&gt; 
  &lt;li&gt;BootyTape&lt;/li&gt; 
  &lt;li&gt;comicat&lt;/li&gt; 
  &lt;li&gt;DarkiWorld&lt;/li&gt; 
  &lt;li&gt;Deildu&lt;/li&gt; 
  &lt;li&gt;Devil-Torrents&lt;/li&gt; 
  &lt;li&gt;DreamingTree&lt;/li&gt; 
  &lt;li&gt;DXP (Deaf Experts)&lt;/li&gt; 
  &lt;li&gt;Electro-Torrent&lt;/li&gt; 
  &lt;li&gt;Erai-Raws&lt;/li&gt; 
  &lt;li&gt;Ex-torrenty&lt;/li&gt; 
  &lt;li&gt;ExKinoRay&lt;/li&gt; 
  &lt;li&gt;EZTV (login)&lt;/li&gt; 
  &lt;li&gt;Fenyarnyek-Tracker&lt;/li&gt; 
  &lt;li&gt;File-Tracker&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Gay-Torrents.net&quot;&gt;Gay-Torrents.net&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;HD-CzTorrent [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;HDGalaKtik&lt;/li&gt; 
  &lt;li&gt;HellTorrents [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;HunTorrent&lt;/li&gt; 
  &lt;li&gt;Il CorSaRo Blu&lt;/li&gt; 
  &lt;li&gt;ilDraGoNeRo&lt;/li&gt; 
  &lt;li&gt;Kinorun&lt;/li&gt; 
  &lt;li&gt;Kinozal&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://LostFilm.tv&quot;&gt;LostFilm.tv&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Magnetico (Local DHT) [&lt;a href=&quot;https://github.com/boramalper/magnetico&quot;&gt;site&lt;/a&gt;]&lt;/li&gt; 
  &lt;li&gt;Marine Tracker&lt;/li&gt; 
  &lt;li&gt;Mazepa&lt;/li&gt; 
  &lt;li&gt;Metal Tracker&lt;/li&gt; 
  &lt;li&gt;MioBT&lt;/li&gt; 
  &lt;li&gt;MuseBootlegs (MB)&lt;/li&gt; 
  &lt;li&gt;MVGroup Forum&lt;/li&gt; 
  &lt;li&gt;MVGroup Main&lt;/li&gt; 
  &lt;li&gt;NetHD (VietTorrent)&lt;/li&gt; 
  &lt;li&gt;New-Team&lt;/li&gt; 
  &lt;li&gt;NewStudio (login)&lt;/li&gt; 
  &lt;li&gt;NoNaMe Club (NNM-Club) (login)&lt;/li&gt; 
  &lt;li&gt;Polskie-Torrenty&lt;/li&gt; 
  &lt;li&gt;PornoLab&lt;/li&gt; 
  &lt;li&gt;Postman (login)&lt;/li&gt; 
  &lt;li&gt;ProPorno&lt;/li&gt; 
  &lt;li&gt;PussyTorrents&lt;/li&gt; 
  &lt;li&gt;Rainbow Tracker&lt;/li&gt; 
  &lt;li&gt;RGFootball&lt;/li&gt; 
  &lt;li&gt;RinTor&lt;/li&gt; 
  &lt;li&gt;RiperAM&lt;/li&gt; 
  &lt;li&gt;RockBox&lt;/li&gt; 
  &lt;li&gt;RUDUB (ex-BaibaKoTV)&lt;/li&gt; 
  &lt;li&gt;Rustorka&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://RuTracker.org&quot;&gt;RuTracker.org&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;seleZen&lt;/li&gt; 
  &lt;li&gt;Sk-CzTorrent&lt;/li&gt; 
  &lt;li&gt;SkTorrent-org&lt;/li&gt; 
  &lt;li&gt;themixingbowl (TMB)&lt;/li&gt; 
  &lt;li&gt;Toloka&lt;/li&gt; 
  &lt;li&gt;TorrentMasters&lt;/li&gt; 
  &lt;li&gt;TrahT&lt;/li&gt; 
  &lt;li&gt;TribalMixes&lt;/li&gt; 
  &lt;li&gt;Union Fansub&lt;/li&gt; 
  &lt;li&gt;UniOtaku&lt;/li&gt; 
  &lt;li&gt;Ztracker&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt; &lt;b&gt; Supported Private Trackers &lt;/b&gt; &lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;0day.kiev&lt;/li&gt; 
  &lt;li&gt;13City&lt;/li&gt; 
  &lt;li&gt;1ptbar&lt;/li&gt; 
  &lt;li&gt;3ChangTrai (3CT) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;3D Torrents (3DT)&lt;/li&gt; 
  &lt;li&gt;4thD (4th Dimension) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;52PT&lt;/li&gt; 
  &lt;li&gt;720pier&lt;/li&gt; 
  &lt;li&gt;Abnormal (ABN)&lt;/li&gt; 
  &lt;li&gt;ABtorrents (ABT + RNS)&lt;/li&gt; 
  &lt;li&gt;AcrossTheTasman &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Aftershock&lt;/li&gt; 
  &lt;li&gt;AFUN&lt;/li&gt; 
  &lt;li&gt;AGSVPT (Arctic Global Seed Vault)&lt;/li&gt; 
  &lt;li&gt;Aidoru!Online&lt;/li&gt; 
  &lt;li&gt;Aither&lt;/li&gt; 
  &lt;li&gt;alingPT&lt;/li&gt; 
  &lt;li&gt;AlphaRatio (AR)&lt;/li&gt; 
  &lt;li&gt;AmigosShareClub (ASC)&lt;/li&gt; 
  &lt;li&gt;AnimeBytes (AB)&lt;/li&gt; 
  &lt;li&gt;AnimeTorrents (AnT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://AnimeTorrents.ro&quot;&gt;AnimeTorrents.ro&lt;/a&gt; (Anime Torrents Romania)&lt;/li&gt; 
  &lt;li&gt;AnimeWorld (AW)&lt;/li&gt; 
  &lt;li&gt;Anthelion (ANT)&lt;/li&gt; 
  &lt;li&gt;Araba Fenice (Phoenix) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;ArabicSource&lt;/li&gt; 
  &lt;li&gt;ArabP2P&lt;/li&gt; 
  &lt;li&gt;ArabScene &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;ArabTorrents &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;AsianCinema&lt;/li&gt; 
  &lt;li&gt;AsianDVDClub (ADC)&lt;/li&gt; 
  &lt;li&gt;Audiences&lt;/li&gt; 
  &lt;li&gt;AudioNews (AN)&lt;/li&gt; 
  &lt;li&gt;AURA4K&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Aussierul.es&quot;&gt;Aussierul.es&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;AvistaZ (AsiaTorrents)&lt;/li&gt; 
  &lt;li&gt;Azusa (梓喵) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Back-ups&lt;/li&gt; 
  &lt;li&gt;BakaBT&lt;/li&gt; 
  &lt;li&gt;baoziPT&lt;/li&gt; 
  &lt;li&gt;Beload&lt;/li&gt; 
  &lt;li&gt;Best-Core&lt;/li&gt; 
  &lt;li&gt;BeyondHD (BHD)&lt;/li&gt; 
  &lt;li&gt;Bibliotik &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;BigBBS&lt;/li&gt; 
  &lt;li&gt;BigCore&lt;/li&gt; 
  &lt;li&gt;Bit-Bázis&lt;/li&gt; 
  &lt;li&gt;BIT-HDTV&lt;/li&gt; 
  &lt;li&gt;Bitded&lt;/li&gt; 
  &lt;li&gt;bitGAMER&lt;/li&gt; 
  &lt;li&gt;BitHUmen&lt;/li&gt; 
  &lt;li&gt;Bitpalace&lt;/li&gt; 
  &lt;li&gt;BitPorn&lt;/li&gt; 
  &lt;li&gt;BitTorrentFiles&lt;/li&gt; 
  &lt;li&gt;BiTTuRK&lt;/li&gt; 
  &lt;li&gt;BJ-Share (BJ) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;BlueBird&lt;/li&gt; 
  &lt;li&gt;BlueTorrents&lt;/li&gt; 
  &lt;li&gt;BlurayTracker&lt;/li&gt; 
  &lt;li&gt;Blutopia (BLU)&lt;/li&gt; 
  &lt;li&gt;Borgzelle &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Boxing Torrents&lt;/li&gt; 
  &lt;li&gt;Brasil Tracker&lt;/li&gt; 
  &lt;li&gt;BroadcasTheNet (BTN) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;BrokenStones &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;BTArg&lt;/li&gt; 
  &lt;li&gt;BTNext (BTNT) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;BTSCHOOL&lt;/li&gt; 
  &lt;li&gt;BWTorrents&lt;/li&gt; 
  &lt;li&gt;BYRBT&lt;/li&gt; 
  &lt;li&gt;C411&lt;/li&gt; 
  &lt;li&gt;cangbaoge (CBG)&lt;/li&gt; 
  &lt;li&gt;CapybaraBR&lt;/li&gt; 
  &lt;li&gt;Carp-Hunter&lt;/li&gt; 
  &lt;li&gt;Carpathians&lt;/li&gt; 
  &lt;li&gt;CarPT&lt;/li&gt; 
  &lt;li&gt;Cathode-Ray.Tube (CRT)&lt;/li&gt; 
  &lt;li&gt;CeskeForum&lt;/li&gt; 
  &lt;li&gt;CGPeers &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;CHDBits &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;ChileBT&lt;/li&gt; 
  &lt;li&gt;Cinemageddon &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;CinemaMovieS_ZT&lt;/li&gt; 
  &lt;li&gt;Cinematik&lt;/li&gt; 
  &lt;li&gt;CinemaZ (EuTorrents)&lt;/li&gt; 
  &lt;li&gt;ClearJAV&lt;/li&gt; 
  &lt;li&gt;Coastal-Music-Crew (C-M-C)&lt;/li&gt; 
  &lt;li&gt;ConCen (Conspiracy Central) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Concertos&lt;/li&gt; 
  &lt;li&gt;CrabPT (蟹黄堡)&lt;/li&gt; 
  &lt;li&gt;CrazySpirits&lt;/li&gt; 
  &lt;li&gt;CrnaBerza&lt;/li&gt; 
  &lt;li&gt;cspt (财神)&lt;/li&gt; 
  &lt;li&gt;cyanbug (大青虫)&lt;/li&gt; 
  &lt;li&gt;Darkpeers&lt;/li&gt; 
  &lt;li&gt;Das Unerwartete (D-U)&lt;/li&gt; 
  &lt;li&gt;DataScene (DS)&lt;/li&gt; 
  &lt;li&gt;DesiGaane (DG) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;DesiTorrents&lt;/li&gt; 
  &lt;li&gt;Diablo Torrent&lt;/li&gt; 
  &lt;li&gt;DICMusic &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;DigitalCore (DC)&lt;/li&gt; 
  &lt;li&gt;DimeADozen (EzTorrent)&lt;/li&gt; 
  &lt;li&gt;DiscFan &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;DocsPedia&lt;/li&gt; 
  &lt;li&gt;Drugari&lt;/li&gt; 
  &lt;li&gt;DS-Reloaded&lt;/li&gt; 
  &lt;li&gt;dubhe (天枢) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Ebooks-Shares &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Empornium (EMP) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;eMuwarez&lt;/li&gt; 
  &lt;li&gt;eStone (BigTorrent)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Exitorrent.org&quot;&gt;Exitorrent.org&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;ExoticaZ (YourExotic)&lt;/li&gt; 
  &lt;li&gt;Explosiv-World (E-W)&lt;/li&gt; 
  &lt;li&gt;ExtremeBits&lt;/li&gt; 
  &lt;li&gt;F1Carreras&lt;/li&gt; 
  &lt;li&gt;F1GP&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://FANO.IN&quot;&gt;FANO.IN&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Fappaizuri&lt;/li&gt; 
  &lt;li&gt;FearNoPeer&lt;/li&gt; 
  &lt;li&gt;Femdomcult&lt;/li&gt; 
  &lt;li&gt;FileList (FL)&lt;/li&gt; 
  &lt;li&gt;FinElite (FE) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Flood (FLD)&lt;/li&gt; 
  &lt;li&gt;Free Farm (自由农场)&lt;/li&gt; 
  &lt;li&gt;FunFile (FF)&lt;/li&gt; 
  &lt;li&gt;FunkyTorrents (FT) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;funZone&lt;/li&gt; 
  &lt;li&gt;FutureTorrent [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;Fuzer (FZ)&lt;/li&gt; 
  &lt;li&gt;G3MINI TR4CK3R&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Gay-Torrents.org&quot;&gt;Gay-Torrents.org&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://GAYtorrent.ru&quot;&gt;GAYtorrent.ru&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;GazelleGames (GGn)&lt;/li&gt; 
  &lt;li&gt;Generation-Free&lt;/li&gt; 
  &lt;li&gt;GGPT&lt;/li&gt; 
  &lt;li&gt;GigaTorrents&lt;/li&gt; 
  &lt;li&gt;GimmePeers (formerly ILT) [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;GiroTorrent&lt;/li&gt; 
  &lt;li&gt;GreatPosterWall (GPW)&lt;/li&gt; 
  &lt;li&gt;HaiDan&lt;/li&gt; 
  &lt;li&gt;Hǎitáng (海棠PT)&lt;/li&gt; 
  &lt;li&gt;HappyFappy (HF)&lt;/li&gt; 
  &lt;li&gt;Hawke-uno (HUNO)&lt;/li&gt; 
  &lt;li&gt;HD Dolby &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;HD Zero&lt;/li&gt; 
  &lt;li&gt;HD-Club&lt;/li&gt; 
  &lt;li&gt;HD-Forever (HDF)&lt;/li&gt; 
  &lt;li&gt;HD-Olimpo &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;HD-Only (HDO)&lt;/li&gt; 
  &lt;li&gt;HD-Space (HDS)&lt;/li&gt; 
  &lt;li&gt;HD-Torrents (HDT)&lt;/li&gt; 
  &lt;li&gt;HD-UNiT3D&lt;/li&gt; 
  &lt;li&gt;HDArea (HDA)&lt;/li&gt; 
  &lt;li&gt;HDBao&lt;/li&gt; 
  &lt;li&gt;HDBits &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;HDCiTY (HDC)&lt;/li&gt; 
  &lt;li&gt;HDClone&lt;/li&gt; 
  &lt;li&gt;HDFans&lt;/li&gt; 
  &lt;li&gt;HDHome &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;HDKylin (麒麟)&lt;/li&gt; 
  &lt;li&gt;HDRoute &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;HDSky &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;HDtime&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://HDTorrents.it&quot;&gt;HDTorrents.it&lt;/a&gt; [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;HDTurk&lt;/li&gt; 
  &lt;li&gt;HDU&lt;/li&gt; 
  &lt;li&gt;HDVideo&lt;/li&gt; 
  &lt;li&gt;Hebits (HB)&lt;/li&gt; 
  &lt;li&gt;HellasHut&lt;/li&gt; 
  &lt;li&gt;HELLENIC-HD&lt;/li&gt; 
  &lt;li&gt;HHanClub&lt;/li&gt; 
  &lt;li&gt;HHD&lt;/li&gt; 
  &lt;li&gt;House of Devil&lt;/li&gt; 
  &lt;li&gt;HQMusic&lt;/li&gt; 
  &lt;li&gt;HUDBT (蝴蝶) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;HxPT (好学) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;ImmortalSeed (iS)&lt;/li&gt; 
  &lt;li&gt;Immortuos&lt;/li&gt; 
  &lt;li&gt;Indietorrents &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;INFINITY [PAY2DL] &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;InfinityHD&lt;/li&gt; 
  &lt;li&gt;Infire&lt;/li&gt; 
  &lt;li&gt;Insane Tracker&lt;/li&gt; 
  &lt;li&gt;IPTorrents (IPT)&lt;/li&gt; 
  &lt;li&gt;ItaTorrents&lt;/li&gt; 
  &lt;li&gt;JME-REUNIT3D&lt;/li&gt; 
  &lt;li&gt;JoyHD (JHD) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;JPopsuki&lt;/li&gt; 
  &lt;li&gt;JPTV4us&lt;/li&gt; 
  &lt;li&gt;KamePT &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Karagarga &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Keep Friends (FRDS-PT) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Kelu &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Korsar &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;KrazyZone&lt;/li&gt; 
  &lt;li&gt;Kufei (库非)&lt;/li&gt; 
  &lt;li&gt;Kufirc&lt;/li&gt; 
  &lt;li&gt;Kunlun (昆仑)&lt;/li&gt; 
  &lt;li&gt;lajidui&lt;/li&gt; 
  &lt;li&gt;Last Digital Underground (LDU)&lt;/li&gt; 
  &lt;li&gt;LastFiles (LF)&lt;/li&gt; 
  &lt;li&gt;Lat-Team&lt;/li&gt; 
  &lt;li&gt;Le Saloon &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;LearnFlakes&lt;/li&gt; 
  &lt;li&gt;Leech24&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://LemonHD.net&quot;&gt;LemonHD.net&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;LetSeed&lt;/li&gt; 
  &lt;li&gt;Libble&lt;/li&gt; 
  &lt;li&gt;LibraNet (LN)&lt;/li&gt; 
  &lt;li&gt;LinkoManija&lt;/li&gt; 
  &lt;li&gt;Locadora&lt;/li&gt; 
  &lt;li&gt;LongPT&lt;/li&gt; 
  &lt;li&gt;LosslessClub &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;LP-Bits 2.0&lt;/li&gt; 
  &lt;li&gt;LST&lt;/li&gt; 
  &lt;li&gt;LuckPT &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Luminarr&lt;/li&gt; 
  &lt;li&gt;M-Team - TP (MTTP) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;MaDs Revolution&lt;/li&gt; 
  &lt;li&gt;Majomparádé (TurkDepo)&lt;/li&gt; 
  &lt;li&gt;Making Off&lt;/li&gt; 
  &lt;li&gt;Malayabits&lt;/li&gt; 
  &lt;li&gt;Mansão dos Animes (MDAN)&lt;/li&gt; 
  &lt;li&gt;March &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Matrix&lt;/li&gt; 
  &lt;li&gt;MeseVilág (Fairytale World)&lt;/li&gt; 
  &lt;li&gt;MetalGuru &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Milkie (ME)&lt;/li&gt; 
  &lt;li&gt;MMA-Torrents &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;MNV (Max-New-Vision)&lt;/li&gt; 
  &lt;li&gt;MOJBLiNK&lt;/li&gt; 
  &lt;li&gt;MomentPT &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;MonikaDesign (MDU)&lt;/li&gt; 
  &lt;li&gt;MoreThanTV (MTV) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;MouseBits&lt;/li&gt; 
  &lt;li&gt;Muxuege &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;MyAnonamouse (MAM)&lt;/li&gt; 
  &lt;li&gt;MySpleen &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;NanyangPT (南洋) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;NCore&lt;/li&gt; 
  &lt;li&gt;Nebulance (NBL) (TransmiTheNet)&lt;/li&gt; 
  &lt;li&gt;NewHeaven (TorrentHeavenResurrection) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Nexum&lt;/li&gt; 
  &lt;li&gt;NicePT&lt;/li&gt; 
  &lt;li&gt;Nirvana&lt;/li&gt; 
  &lt;li&gt;njtupt (浦园)) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;NOBS (NUCLEAR ORDER BIT SYNDICATE)&lt;/li&gt; 
  &lt;li&gt;NorBits&lt;/li&gt; 
  &lt;li&gt;NordicBytes&lt;/li&gt; 
  &lt;li&gt;NORDiCHD&lt;/li&gt; 
  &lt;li&gt;NordicQuality&lt;/li&gt; 
  &lt;li&gt;Nostradamus&lt;/li&gt; 
  &lt;li&gt;NovaHD&lt;/li&gt; 
  &lt;li&gt;OKPT&lt;/li&gt; 
  &lt;li&gt;Old Greek Tracker (OGT)&lt;/li&gt; 
  &lt;li&gt;Old Toons World (OTW)&lt;/li&gt; 
  &lt;li&gt;OpenCD &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Orpheus&lt;/li&gt; 
  &lt;li&gt;OnlyEncodes+&lt;/li&gt; 
  &lt;li&gt;OshenPT&lt;/li&gt; 
  &lt;li&gt;OurBits (HDPter)&lt;/li&gt; 
  &lt;li&gt;P2PBG [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;Panda&lt;/li&gt; 
  &lt;li&gt;Party-Tracker&lt;/li&gt; 
  &lt;li&gt;PassThePopcorn (PTP) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Peeratiko&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Peers.FM&quot;&gt;Peers.FM&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Phoenix Project&lt;/li&gt; 
  &lt;li&gt;PigNetwork (猪猪网)&lt;/li&gt; 
  &lt;li&gt;PixelCove (Ultimate Gamer)&lt;/li&gt; 
  &lt;li&gt;PiXELHD (PxHD) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;PlayletPT &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Podzemlje&lt;/li&gt; 
  &lt;li&gt;Polish Torrent (PTT)&lt;/li&gt; 
  &lt;li&gt;PolishTracker &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Pornbay &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Portugas&lt;/li&gt; 
  &lt;li&gt;Pretome&lt;/li&gt; 
  &lt;li&gt;PrivateHD (PHD)&lt;/li&gt; 
  &lt;li&gt;ProAudioTorrents (PAT)&lt;/li&gt; 
  &lt;li&gt;PT GTK&lt;/li&gt; 
  &lt;li&gt;PT分享站 (itzmx)&lt;/li&gt; 
  &lt;li&gt;PTCafe (咖啡)&lt;/li&gt; 
  &lt;li&gt;PTCC (我的PT)&lt;/li&gt; 
  &lt;li&gt;PTerClub (PT之友俱乐部)&lt;/li&gt; 
  &lt;li&gt;PTFans&lt;/li&gt; 
  &lt;li&gt;PTFiles (PTF)&lt;/li&gt; 
  &lt;li&gt;PThome &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;PTLAO&lt;/li&gt; 
  &lt;li&gt;PTLGS &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;PTSBAO (烧包) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;PTSKIT&lt;/li&gt; 
  &lt;li&gt;PTTey &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;PTtime&lt;/li&gt; 
  &lt;li&gt;PTYING (樱花)&lt;/li&gt; 
  &lt;li&gt;PTzone&lt;/li&gt; 
  &lt;li&gt;Punk&#39;s Horror Tracker&lt;/li&gt; 
  &lt;li&gt;PuntoTorrent &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;PuTao (葡萄)&lt;/li&gt; 
  &lt;li&gt;PWTorrents (PWT)&lt;/li&gt; 
  &lt;li&gt;Qingwa (青蛙)&lt;/li&gt; 
  &lt;li&gt;R3V WTF! &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Racing4Everyone (R4E)&lt;/li&gt; 
  &lt;li&gt;RacingForMe (RFM)&lt;/li&gt; 
  &lt;li&gt;RailgunPT&lt;/li&gt; 
  &lt;li&gt;Rain (雨)&lt;/li&gt; 
  &lt;li&gt;Rastastugan&lt;/li&gt; 
  &lt;li&gt;Red Star Torrent (RST) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Redacted (PassTheHeadphones)&lt;/li&gt; 
  &lt;li&gt;ReelFlix (HD4Free,LegacyHD)&lt;/li&gt; 
  &lt;li&gt;RetroFlix&lt;/li&gt; 
  &lt;li&gt;RetroMoviesClub (RMC)&lt;/li&gt; 
  &lt;li&gt;RevolutionTT &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;RocketHD&lt;/li&gt; 
  &lt;li&gt;Romanian Metal Torrents (RMT)&lt;/li&gt; 
  &lt;li&gt;RoTorrent (ROT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Rousi.pro&quot;&gt;Rousi.pro&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;SAMARITANO&lt;/li&gt; 
  &lt;li&gt;SBPT&lt;/li&gt; 
  &lt;li&gt;SceneHD &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;SceneRush &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;SceneTime&lt;/li&gt; 
  &lt;li&gt;Secret Cinema&lt;/li&gt; 
  &lt;li&gt;SeedFile (SF)&lt;/li&gt; 
  &lt;li&gt;seedpool&lt;/li&gt; 
  &lt;li&gt;SewerPT (下水道) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;SexTorrent&lt;/li&gt; 
  &lt;li&gt;ShaKaw &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Shareisland&lt;/li&gt; 
  &lt;li&gt;Shazbat&lt;/li&gt; 
  &lt;li&gt;SiamBIT [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;Siqi&lt;/li&gt; 
  &lt;li&gt;SkipTheCommercials&lt;/li&gt; 
  &lt;li&gt;Slobit Media&lt;/li&gt; 
  &lt;li&gt;SnowPT (SSPT)&lt;/li&gt; 
  &lt;li&gt;SoulVoice (聆音Club) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;SpeedApp (SceneFZ, XtreMeZone / MYXZ, ICE Torrent)&lt;/li&gt; 
  &lt;li&gt;SpeedCD&lt;/li&gt; 
  &lt;li&gt;Speedmaster HD &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Spirit of Revolution &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;SportsCult&lt;/li&gt; 
  &lt;li&gt;SpringSunday (SSD) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;SunnyPT &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Superbits (SBS)&lt;/li&gt; 
  &lt;li&gt;Swarmazon&lt;/li&gt; 
  &lt;li&gt;Tangmen (唐门)&lt;/li&gt; 
  &lt;li&gt;TangPT (躺平)&lt;/li&gt; 
  &lt;li&gt;Tapochek&lt;/li&gt; 
  &lt;li&gt;Tasmanit&lt;/li&gt; 
  &lt;li&gt;Team CT Game (TCTG)&lt;/li&gt; 
  &lt;li&gt;TeamFlix&lt;/li&gt; 
  &lt;li&gt;TeamHD&lt;/li&gt; 
  &lt;li&gt;TeamOS&lt;/li&gt; 
  &lt;li&gt;TEKNO3D &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;The Brothers&lt;/li&gt; 
  &lt;li&gt;The Crazy Ones&lt;/li&gt; 
  &lt;li&gt;The Empire (TE)&lt;/li&gt; 
  &lt;li&gt;The Falling Angels (TFA)&lt;/li&gt; 
  &lt;li&gt;The Geeks&lt;/li&gt; 
  &lt;li&gt;The Kitchen (TK)&lt;/li&gt; 
  &lt;li&gt;The New Retro&lt;/li&gt; 
  &lt;li&gt;The Occult (TO)&lt;/li&gt; 
  &lt;li&gt;The Old School (TOS)&lt;/li&gt; 
  &lt;li&gt;The Paradiese&lt;/li&gt; 
  &lt;li&gt;The Place (TP)&lt;/li&gt; 
  &lt;li&gt;The Show (TSBZ)&lt;/li&gt; 
  &lt;li&gt;The Vault (TVBZ)&lt;/li&gt; 
  &lt;li&gt;The-New-Fun&lt;/li&gt; 
  &lt;li&gt;TheLeachZone (TLZ)&lt;/li&gt; 
  &lt;li&gt;TJUPT (北洋园PT)&lt;/li&gt; 
  &lt;li&gt;TLFBits &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;TmGHuB (TH) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Toca Share&lt;/li&gt; 
  &lt;li&gt;TokyoPT &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Tormac&lt;/li&gt; 
  &lt;li&gt;Tornado&lt;/li&gt; 
  &lt;li&gt;Torr9&lt;/li&gt; 
  &lt;li&gt;Torrent Heaven (Dutch)&lt;/li&gt; 
  &lt;li&gt;Torrent Network (TN)&lt;/li&gt; 
  &lt;li&gt;Torrent Trader &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Torrent-Syndikat &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;TOrrent-tuRK (TORK)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://Torrent.LT&quot;&gt;Torrent.LT&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;TorrentBD&lt;/li&gt; 
  &lt;li&gt;TorrentBytes (TBy) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;TorrentCCF (TCCF)&lt;/li&gt; 
  &lt;li&gt;TorrentDay (TD)&lt;/li&gt; 
  &lt;li&gt;TorrentDD (TodayBit)&lt;/li&gt; 
  &lt;li&gt;Torrenteros (TTR)&lt;/li&gt; 
  &lt;li&gt;TorrentHR&lt;/li&gt; 
  &lt;li&gt;Torrenting (TT)&lt;/li&gt; 
  &lt;li&gt;TorrentLeech (TL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://TorrentLeech.pl&quot;&gt;TorrentLeech.pl&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;ToTheGlory (TTG) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;TrackerMK&lt;/li&gt; 
  &lt;li&gt;TrackerZero [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;TranceTraffic&lt;/li&gt; 
  &lt;li&gt;Trellas (Magico) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;TreZzoR&lt;/li&gt; 
  &lt;li&gt;TurkSeed (Aturk)&lt;/li&gt; 
  &lt;li&gt;TurkTorrent (TT) [PAY2DL]&lt;/li&gt; 
  &lt;li&gt;TV Chaos UK (TVCUK)&lt;/li&gt; 
  &lt;li&gt;TVstore&lt;/li&gt; 
  &lt;li&gt;U2 (U2分享園@動漫花園) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;UBits&lt;/li&gt; 
  &lt;li&gt;UltraHD&lt;/li&gt; 
  &lt;li&gt;UnlimitZ&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;http://upload.cx&quot;&gt;upload.cx&lt;/a&gt; (ULCX)&lt;/li&gt; 
  &lt;li&gt;Upscale Vault&lt;/li&gt; 
  &lt;li&gt;UTOPIA&lt;/li&gt; 
  &lt;li&gt;Vault network&lt;/li&gt; 
  &lt;li&gt;VietMediaF&lt;/li&gt; 
  &lt;li&gt;White Angel&lt;/li&gt; 
  &lt;li&gt;WinterSakura &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;World-In-HD &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;World-of-Tomorrow &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Xingwan (星湾) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Xingyung (星陨阁) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;xloli (ilolicon PT)&lt;/li&gt; 
  &lt;li&gt;XSpeeds (XS)&lt;/li&gt; 
  &lt;li&gt;xTorrenty &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;XtremeBytes (TorrentSurf)&lt;/li&gt; 
  &lt;li&gt;XWT-Classics&lt;/li&gt; 
  &lt;li&gt;XWTorrents (XWT)&lt;/li&gt; 
  &lt;li&gt;YUSCENE&lt;/li&gt; 
  &lt;li&gt;Zappateers&lt;/li&gt; 
  &lt;li&gt;ZmPT (织梦)&lt;/li&gt; 
  &lt;li&gt;ZRPT (自然) &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Trackers marked with &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png&quot; alt=&quot;(invite needed)&quot; /&gt;&lt;/a&gt; have no active maintainer and may be broken or missing features. If you have an invite, please send it to &lt;code&gt;jacketttest [at] gmail [dot] com&lt;/code&gt; or &lt;code&gt;garfieldsixtynine [at] gmail [dot] com&lt;/code&gt; to help improve these indexers.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;Windows Installation&lt;/h3&gt; 
&lt;h4&gt;Method 1: Using the Installer (Recommended)&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Windows 10 Version 1607 or newer&lt;/li&gt; 
 &lt;li&gt;Administrator privileges&lt;/li&gt; 
 &lt;li&gt;.NET prerequisites (&lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/core/install/windows#net-installer&quot;&gt;check here&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Installation Steps:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Download the latest version of the &lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest/download/Jackett.Installer.Windows.exe&quot;&gt;Windows installer&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Run the &lt;code&gt;Jackett.Installer.Windows.exe&lt;/code&gt; program&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;When prompted for permission to make changes to your computer, click &quot;Yes&quot;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;During installation:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Check &quot;Install as Windows Service&quot; if you want Jackett to start automatically with Windows&lt;/li&gt; 
   &lt;li&gt;Check &quot;Launch Jackett&quot; to open Jackett after installation completes&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Click &quot;Install&quot; and wait for the installation to finish&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Double-click the Jackett tray icon, or navigate your web browser to &lt;code&gt;http://127.0.0.1:9117&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;You are now ready to begin adding trackers&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Service Management:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;When installed as a service, the tray icon acts as a way to open, start, or stop Jackett&lt;/li&gt; 
 &lt;li&gt;If not installed as a service, Jackett will run its web server from the tray tool&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Method 2: Manual Installation&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Download the &lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest/download/Jackett.Binaries.Windows.zip&quot;&gt;zipped version&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Extract to your preferred location (e.g., &lt;code&gt;C:\ProgramData\Jackett&lt;/code&gt;)&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Run &lt;code&gt;JackettConsole.exe&lt;/code&gt; to start Jackett&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Navigate your web browser to &lt;code&gt;http://127.0.0.1:9117&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Running from Command Line:&lt;/strong&gt; You can run Jackett from the command line to see log messages. Use &lt;code&gt;JackettConsole.exe&lt;/code&gt; (for Command Prompt), found in the Jackett data folder: e.g. &lt;code&gt;%ProgramData%\Jackett&lt;/code&gt;. Ensure the server is not already running from the tray or service.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Linux Installation (AMD x64)&lt;/h3&gt; 
&lt;p&gt;This section covers installation on most common Linux distributions including Ubuntu, Linux Mint, Debian, Fedora, and others.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Most operating systems include all required dependencies&lt;/li&gt; 
 &lt;li&gt;If dependencies are missing, refer to &lt;a href=&quot;https://github.com/dotnet/core/raw/main/release-notes/9.0/os-packages.md&quot;&gt;.NET Required Packages&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Method 1: One-Command Installation (Easiest)&lt;/h4&gt; 
&lt;p&gt;Copy and paste this command into your terminal:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /opt &amp;amp;&amp;amp; wget -O - -o /dev/stderr https://github.com/Jackett/Jackett/releases/latest/download/Jackett.Binaries.LinuxAMDx64.tar.gz | sudo tar -xz &amp;amp;&amp;amp; cd Jackett* &amp;amp;&amp;amp; sudo chown $(whoami):$(id -g) -R &quot;/opt/Jackett&quot; &amp;amp;&amp;amp; sudo ./install_service_systemd.sh &amp;amp;&amp;amp; systemctl status jackett.service &amp;amp;&amp;amp; cd - &amp;amp;&amp;amp; echo -e &quot;\nVisit http://127.0.0.1:9117&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Method 2: Step-by-Step Installation&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Download and extract the latest release:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /opt
wget -O - -o /dev/stderr https://github.com/Jackett/Jackett/releases/latest/download/Jackett.Binaries.LinuxAMDx64.tar.gz | sudo tar -xz
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Set proper ownership:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo chown -R $(whoami):$(id -g) /opt/Jackett
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Install as a service:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /opt/Jackett
sudo ./install_service_systemd.sh
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Check service status:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;systemctl status jackett.service
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Navigate your web browser to &lt;code&gt;http://127.0.0.1:9117&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Running Without Installing as a Service&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Download and extract the latest &lt;code&gt;Jackett.Binaries.LinuxAMDx64.tar.gz&lt;/code&gt; release from the &lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest&quot;&gt;releases&lt;/a&gt; page&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Open a Terminal and &lt;code&gt;cd&lt;/code&gt; to the &lt;code&gt;Jackett&lt;/code&gt; folder&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Run Jackett with the command &lt;code&gt;./jackett&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Service Management Commands&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Start Jackett
systemctl start jackett.service

# Stop Jackett
systemctl stop jackett.service

# Restart Jackett
systemctl restart jackett.service

# Check status
systemctl status jackett.service
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Logs Location:&lt;/strong&gt; &lt;code&gt;~/.config/Jackett/log.txt&lt;/code&gt; &lt;strong&gt;View Logs:&lt;/strong&gt; &lt;code&gt;journalctl -u jackett.service&lt;/code&gt;&lt;/p&gt; 
&lt;h4&gt;Home Directory Configuration&lt;/h4&gt; 
&lt;p&gt;If you want to run Jackett with a user without a &lt;code&gt;/home&lt;/code&gt; directory, add this line to your systemd file:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Environment=XDG_CONFIG_HOME=/path/to/folder
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This folder will be used to store configuration files.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Linux Installation (ARMv7 or above)&lt;/h3&gt; 
&lt;p&gt;For modern ARM-based systems (Raspberry Pi, etc.)&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Most operating systems include all required dependencies&lt;/li&gt; 
 &lt;li&gt;If dependencies are missing, refer to &lt;a href=&quot;https://github.com/dotnet/core/raw/main/release-notes/9.0/os-packages.md&quot;&gt;.NET Required Packages&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Installing as a Service&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Download the appropriate release:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;For 32-bit ARM (most common): &lt;code&gt;Jackett.Binaries.LinuxARM32.tar.gz&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;For 64-bit ARM: &lt;code&gt;Jackett.Binaries.LinuxARM64.tar.gz&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /opt
wget -O - -o /dev/stderr https://github.com/Jackett/Jackett/releases/latest/download/Jackett.Binaries.LinuxARM32.tar.gz | sudo tar -xz
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Install as a service:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /opt/Jackett
sudo ./install_service_systemd.sh
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;The service will start on each login. Manage it using:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Start Jackett
systemctl start jackett.service

# Stop Jackett
systemctl stop jackett.service

# Restart Jackett
systemctl restart jackett.service

# Check status
systemctl status jackett.service
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Download and extract the latest &lt;code&gt;Jackett.Binaries.LinuxARM32.tar.gz&lt;/code&gt; or &lt;code&gt;Jackett.Binaries.LinuxARM64.tar.gz&lt;/code&gt; release from the &lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest&quot;&gt;releases&lt;/a&gt; page&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Open a Terminal and &lt;code&gt;cd&lt;/code&gt; to the &lt;code&gt;Jackett&lt;/code&gt; folder&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Run Jackett with the command &lt;code&gt;./jackett&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Linux Installation (ARMv6 or below)&lt;/h3&gt; 
&lt;p&gt;For legacy ARM systems.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Install Mono 5.10 or newer (latest stable release recommended):&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Follow instructions on the &lt;a href=&quot;http://www.mono-project.com/download/#download-lin&quot;&gt;Mono website&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;Install &lt;code&gt;mono-devel&lt;/code&gt; and &lt;code&gt;ca-certificates-mono&lt;/code&gt; packages&lt;/li&gt; 
   &lt;li&gt;On Red Hat/CentOS/openSUSE/Fedora, also install &lt;code&gt;mono-locale-extras&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Install libcurl:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Debian/Ubuntu: &lt;code&gt;apt-get install libcurl4-openssl-dev&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Redhat/Fedora: &lt;code&gt;yum install libcurl-devel&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;For other distributions, see the &lt;a href=&quot;http://curl.haxx.se/dlwiz/?type=devel&quot;&gt;Curl documentation&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Download and extract the latest &lt;code&gt;Jackett.Binaries.Mono.tar.gz&lt;/code&gt; from the &lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest&quot;&gt;releases page&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Run Jackett using Mono:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mono --debug JackettConsole.exe
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;(Optional) To install as a service:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo ./install_service_systemd_mono.sh
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Important Notes:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Mono must be compiled with the Roslyn compiler (default)&lt;/li&gt; 
 &lt;li&gt;Using MCS will cause &quot;An error has occurred&quot; errors (see &lt;a href=&quot;https://github.com/Jackett/Jackett/issues/2704&quot;&gt;issue #2704&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;For users without a &lt;code&gt;/home&lt;/code&gt; directory, add &lt;code&gt;Environment=XDG_CONFIG_HOME=/path/to/folder&lt;/code&gt; to your systemd file&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;macOS Installation&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;macOS 13.0+ (Ventura) or greater&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Installing as a Service&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Download the appropriate release:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Intel (x86): &lt;code&gt;Jackett.Binaries.macOS.tar.gz&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Apple silicon (ARM): &lt;code&gt;Jackett.Binaries.macOSARM64.tar.gz&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;p&gt;Get the latest release from the &lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest&quot;&gt;releases page&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Extract the downloaded file&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Open the extracted folder and double-click on &lt;code&gt;install_service_macos&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;If installation is successful, close the Terminal window&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Navigate your web browser to &lt;code&gt;http://127.0.0.1:9117&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Service Management:&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The service will start on each login. You can control it using:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Stop Jackett
launchctl unload ~/Library/LaunchAgents/org.user.Jackett.plist

# Start Jackett
launchctl load ~/Library/LaunchAgents/org.user.Jackett.plist
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Logs Location:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;~/.config/Jackett/log.txt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;/Users/your-user-name/Library/Application Support/Jackett/log.txt&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Running Without Installing as a Service&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Download and extract the latest &lt;code&gt;Jackett.Binaries.macOS.tar.gz&lt;/code&gt; or &lt;code&gt;Jackett.Binaries.macOSARM64.tar.gz&lt;/code&gt; release from the &lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest&quot;&gt;releases&lt;/a&gt; page&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Open Terminal and navigate to the Jackett folder&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Run Jackett with the command &lt;code&gt;./jackett&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Docker Installation&lt;/h3&gt; 
&lt;p&gt;Docker installation is highly recommended, especially if you are experiencing Mono stability issues or having trouble running Mono on your system (e.g., QNAP, Synology).&lt;/p&gt; 
&lt;p&gt;Detailed instructions are available at &lt;a href=&quot;https://hub.docker.com/r/linuxserver/jackett/&quot;&gt;LinuxServer.io Jackett Docker&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Thanks to &lt;a href=&quot;https://linuxserver.io&quot;&gt;LinuxServer.io&lt;/a&gt; for maintaining the Docker image.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Other Installation Methods&lt;/h3&gt; 
&lt;h4&gt;Linux via Ansible&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;CentOS/RedHat 7: &lt;a href=&quot;https://galaxy.ansible.com/jewflix/jackett&quot;&gt;jewflix.jackett&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Ubuntu 16: &lt;a href=&quot;https://galaxy.ansible.com/chrisjohnson00/jackett&quot;&gt;chrisjohnson00.jackett&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Homebrew (macOS/Linux)&lt;/h4&gt; 
&lt;p&gt;Install via Homebrew: &lt;a href=&quot;https://formulae.brew.sh/formula/jackett&quot;&gt;Homebrew Formulae - Jackett&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;Synology&lt;/h4&gt; 
&lt;p&gt;Jackett is available as a beta package from &lt;a href=&quot;https://synocommunity.com/package/jackett&quot;&gt;SynoCommunity&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;Alpine Linux&lt;/h4&gt; 
&lt;p&gt;Detailed instructions available at &lt;a href=&quot;https://github.com/Jackett/Jackett/wiki/Installation-on-Alpine-Linux&quot;&gt;Jackett&#39;s Wiki - Alpine Linux&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;OpenWrt&lt;/h4&gt; 
&lt;p&gt;Detailed instructions available at &lt;a href=&quot;https://github.com/Jackett/Jackett/wiki/Installation-on-OpenWrt&quot;&gt;Jackett&#39;s Wiki - OpenWrt&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Uninstallation&lt;/h2&gt; 
&lt;h3&gt;Windows&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Use &quot;Add or Remove Programs&quot; in Windows Settings&lt;/li&gt; 
 &lt;li&gt;Or run the installer again and choose &quot;Uninstall&quot;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Linux&lt;/h3&gt; 
&lt;p&gt;Run this command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wget https://raw.githubusercontent.com/Jackett/Jackett/master/uninstall_service_systemd.sh --quiet -O - | sudo bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;macOS&lt;/h3&gt; 
&lt;p&gt;Run this command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -sSL https://raw.githubusercontent.com/Jackett/Jackett/master/uninstall_jackett_macos | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;h3&gt;Running Behind Reverse Proxy&lt;/h3&gt; 
&lt;p&gt;When running Jackett behind a reverse proxy, ensure that the original hostname of the request is passed to Jackett. If HTTPS is used, also set the &lt;code&gt;X-Forwarded-Proto&lt;/code&gt; header to &quot;https&quot;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Adjust the &quot;Base path override&quot; in Jackett settings accordingly.&lt;/p&gt; 
&lt;h4&gt;Apache Configuration Example&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-apache&quot;&gt;&amp;lt;Location /jackett&amp;gt;
    ProxyPreserveHost On
    RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
    ProxyPass http://127.0.0.1:9117
    ProxyPassReverse http://127.0.0.1:9117
&amp;lt;/Location&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Nginx Configuration Example&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-nginx&quot;&gt;location /jackett {
    proxy_pass http://127.0.0.1:9117;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_redirect off;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Search Cache&lt;/h3&gt; 
&lt;p&gt;Jackett has an internal cache to increase search speed and reduce the number of requests to torrent sites. The default values should be suitable for most users.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Configuration Options:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Cache TTL (seconds):&lt;/strong&gt; Default is 2100 (35 minutes). This indicates how long results can remain in the cache.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Cache max results per indexer:&lt;/strong&gt; Default is 1000. This limits how many results are kept in cache for each indexer to control RAM usage.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you make many requests and have sufficient memory, you can increase the maximum results. If you experience problems, you can reduce the TTL value or disable the cache. Be aware that making too many requests can result in being banned by tracker sites.&lt;/p&gt; 
&lt;h3&gt;Torznab Cache&lt;/h3&gt; 
&lt;p&gt;If you have enabled the Jackett internal cache but want to fetch fresh results for a specific query (ignoring the cache), add the &lt;code&gt;&amp;amp;cache=false&lt;/code&gt; parameter to your Torznab query.&lt;/p&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab/api?apikey=YOUR_API_KEY&amp;amp;t=search&amp;amp;q=query&amp;amp;cache=false
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Configuring FlareSolverr&lt;/h3&gt; 
&lt;p&gt;Some indexers are protected by Cloudflare or similar services, and Jackett cannot solve the challenges on its own. For these cases, &lt;a href=&quot;https://github.com/FlareSolverr/FlareSolverr&quot;&gt;FlareSolverr&lt;/a&gt; has been integrated into Jackett.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;What is FlareSolverr:&lt;/strong&gt; FlareSolverr is a proxy server that solves Cloudflare and other anti-bot challenges, then provides Jackett with the necessary cookies.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Setup Instructions:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Install FlareSolverr service following their &lt;a href=&quot;https://github.com/FlareSolverr/FlareSolverr&quot;&gt;installation instructions&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Configure FlareSolverr in Jackett:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Open Jackett settings&lt;/li&gt; 
   &lt;li&gt;Set &lt;strong&gt;FlareSolverr API URL&lt;/strong&gt; (e.g., &lt;code&gt;http://172.17.0.2:8191&lt;/code&gt;)&lt;/li&gt; 
   &lt;li&gt;It is recommended to keep the default value in &lt;strong&gt;FlareSolverr Max Timeout (ms)&lt;/strong&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Setting up this service is optional. Most indexers do not require it.&lt;/p&gt; 
&lt;h3&gt;Configuring OMDb&lt;/h3&gt; 
&lt;p&gt;This feature is used as a fallback when using the aggregate indexer to get the movie or series title if only the IMDB ID is provided in the request.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Setup Instructions:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Request a free API key from &lt;a href=&quot;https://omdbapi.com/apikey.aspx&quot;&gt;OMDb&lt;/a&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Free tier allows 1,000 daily requests&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Paste the API key in Jackett settings&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;API Usage&lt;/h2&gt; 
&lt;h3&gt;Jackett Torznab Query Syntax&lt;/h3&gt; 
&lt;p&gt;Jackett accepts Torznab queries following the specifications described in the &lt;a href=&quot;https://torznab.github.io/spec-1.3-draft/index.html&quot;&gt;Torznab specification document&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Basic Query Structure:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://127.0.0.1:9117/api/v2.0/indexers/&amp;lt;indexer-name&amp;gt;/results/torznab/api?apikey=&amp;lt;your-api-key&amp;gt;&amp;amp;t=&amp;lt;search-type&amp;gt;&amp;amp;&amp;lt;parameters&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Get indexer capabilities:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://127.0.0.1:9117/api/v2.0/indexers/1337x/results/torznab/api?apikey=YOUR_API_KEY&amp;amp;t=caps
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Perform a free text search:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://127.0.0.1:9117/api/v2.0/indexers/1337x/results/torznab/api?apikey=YOUR_API_KEY&amp;amp;t=search&amp;amp;q=ubuntu
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Search Modes and Parameters&lt;/h3&gt; 
&lt;p&gt;Jackett supports the following search modes:&lt;/p&gt; 
&lt;h4&gt;t=search (General Search)&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt; &lt;code&gt;q&lt;/code&gt; (query string)&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api?apikey=YOUR_API_KEY&amp;amp;t=search&amp;amp;cat=100002,100003&amp;amp;q=Show+Title+S01E02
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;t=tvsearch (TV Search)&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt; &lt;code&gt;q&lt;/code&gt;, &lt;code&gt;season&lt;/code&gt;, &lt;code&gt;ep&lt;/code&gt;, &lt;code&gt;imdbid&lt;/code&gt;, &lt;code&gt;tvdbid&lt;/code&gt;, &lt;code&gt;rid&lt;/code&gt;, &lt;code&gt;tmdbid&lt;/code&gt;, &lt;code&gt;tvmazeid&lt;/code&gt;, &lt;code&gt;traktid&lt;/code&gt;, &lt;code&gt;doubanid&lt;/code&gt;, &lt;code&gt;year&lt;/code&gt;, &lt;code&gt;genre&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api?apikey=YOUR_API_KEY&amp;amp;t=tvsearch&amp;amp;cat=5000&amp;amp;q=Show+Title&amp;amp;season=1&amp;amp;ep=2

.../api?apikey=YOUR_API_KEY&amp;amp;t=tvsearch&amp;amp;cat=5040,5045&amp;amp;genre=comedy&amp;amp;season=2023&amp;amp;ep=02/13
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;t=movie (Movie Search)&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt; &lt;code&gt;q&lt;/code&gt;, &lt;code&gt;imdbid&lt;/code&gt;, &lt;code&gt;tmdbid&lt;/code&gt;, &lt;code&gt;traktid&lt;/code&gt;, &lt;code&gt;doubanid&lt;/code&gt;, &lt;code&gt;year&lt;/code&gt;, &lt;code&gt;genre&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api?apikey=YOUR_API_KEY&amp;amp;t=movie&amp;amp;cat=100001&amp;amp;q=Movie+Title&amp;amp;year=2023

.../api?apikey=YOUR_API_KEY&amp;amp;t=movie&amp;amp;cat=2000&amp;amp;imdbid=tt1234567
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;t=music (Music Search)&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt; &lt;code&gt;q&lt;/code&gt;, &lt;code&gt;album&lt;/code&gt;, &lt;code&gt;artist&lt;/code&gt;, &lt;code&gt;label&lt;/code&gt;, &lt;code&gt;track&lt;/code&gt;, &lt;code&gt;year&lt;/code&gt;, &lt;code&gt;genre&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api?apikey=YOUR_API_KEY&amp;amp;t=music&amp;amp;cat=100004&amp;amp;album=Title&amp;amp;artist=Name
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;t=book (Book Search)&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt; &lt;code&gt;q&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;author&lt;/code&gt;, &lt;code&gt;publisher&lt;/code&gt;, &lt;code&gt;year&lt;/code&gt;, &lt;code&gt;genre&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api?apikey=YOUR_API_KEY&amp;amp;t=book&amp;amp;cat=100005,100006&amp;amp;genre=horror&amp;amp;publisher=Stuff
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Most indexers will only support a subset of these search modes and parameters. Use &lt;code&gt;t=caps&lt;/code&gt; to get a list of the actual modes and parameters supported by a specific indexer.&lt;/p&gt; 
&lt;h3&gt;Filter Indexers&lt;/h3&gt; 
&lt;p&gt;A special &quot;filter&quot; indexer is available at:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://127.0.0.1:9117/api/v2.0/indexers/&amp;lt;filter&amp;gt;/results/torznab
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It will query the configured indexers that match the filter expression criteria and return combined results as &quot;all&quot;.&lt;/p&gt; 
&lt;h4&gt;Supported Filters&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Filter&lt;/th&gt; 
   &lt;th&gt;Condition&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;type:&amp;lt;type&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Indexer type equals &lt;code&gt;&amp;lt;type&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;tag:&amp;lt;tag&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Indexer tags contain &lt;code&gt;&amp;lt;tag&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;lang:&amp;lt;lang&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Indexer language starts with &lt;code&gt;&amp;lt;lang&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;test:passed&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Last indexer test passed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;test:failed&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Last indexer test failed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;status:healthy&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Indexer successfully operated in recent minutes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;status:failing&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Indexer generated errors in recent calls&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;status:unknown&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Indexer unused for a while&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h4&gt;Supported Operators&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Operator&lt;/th&gt; 
   &lt;th&gt;Condition&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;!&amp;lt;expr&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;NOT &lt;code&gt;&amp;lt;expr&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;expr1&amp;gt;+&amp;lt;expr2&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;expr1&amp;gt;&lt;/code&gt; AND &lt;code&gt;&amp;lt;expr2&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;expr1&amp;gt;,&amp;lt;expr2&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;expr1&amp;gt;&lt;/code&gt; OR &lt;code&gt;&amp;lt;expr2&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h4&gt;Filter Examples&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt; Query indexers tagged with &quot;group1&quot; OR all non-private indexers with English language:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api/v2.0/indexers/tag:group1,!type:private+lang:en/results/torznab
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt; Query indexers that are not failing OR that passed their last test:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api/v2.0/indexers/!status:failing,test:passed/results/torznab
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Aggregate Indexers&lt;/h3&gt; 
&lt;p&gt;A special &quot;all&quot; indexer is available at:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It will query all configured indexers and return combined results.&lt;/p&gt; 
&lt;h4&gt;Important Considerations&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;When to use the &quot;all&quot; indexer:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Quick setup with fewer configuration steps&lt;/li&gt; 
 &lt;li&gt;Testing multiple indexers at once&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Limitations of the &quot;all&quot; indexer:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;You lose control over indexer-specific settings (categories, search modes, etc.)&lt;/li&gt; 
 &lt;li&gt;Mixing search modes (IMDB, query, etc.) might cause low-quality results&lt;/li&gt; 
 &lt;li&gt;Indexer-specific categories (&amp;gt;= 100000) cannot be used&lt;/li&gt; 
 &lt;li&gt;Slow indexers will slow down overall results&lt;/li&gt; 
 &lt;li&gt;Total results are limited to 1000&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; If your client supports multiple feeds, add each indexer directly instead of using the &quot;all&quot; indexer for better control and performance.&lt;/p&gt; 
&lt;h4&gt;Getting Indexer Information&lt;/h4&gt; 
&lt;p&gt;To get all Jackett indexers including their capabilities:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api/v2.0/indexers/all/results/torznab/api?apikey=YOUR_API_KEY&amp;amp;t=indexers
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To filter by configuration status:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;.../api/v2.0/indexers/all/results/torznab/api?apikey=YOUR_API_KEY&amp;amp;t=indexers&amp;amp;configured=true
.../api/v2.0/indexers/all/results/torznab/api?apikey=YOUR_API_KEY&amp;amp;t=indexers&amp;amp;configured=false
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Command Line Switches&lt;/h2&gt; 
&lt;p&gt;You can pass various options when running Jackett via the command line:&lt;/p&gt; 
&lt;h3&gt;Windows Service Management&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;-i, --Install&lt;/code&gt; - Install Jackett Windows service (requires administrator)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-s, --Start&lt;/code&gt; - Start the Jackett Windows service (requires administrator)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-k, --Stop&lt;/code&gt; - Stop the Jackett Windows service (requires administrator)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-u, --Uninstall&lt;/code&gt; - Uninstall Jackett Windows service (requires administrator)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-r, --ReserveUrls&lt;/code&gt; - Register Windows port reservations (required for listening on all interfaces)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Configuration Options&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;-l, --Logging&lt;/code&gt; - Log all requests/responses to Jackett&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-t, --Tracing&lt;/code&gt; - Enable tracing&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-c, --UseClient&lt;/code&gt; - Override web client selection: &lt;code&gt;automatic&lt;/code&gt; (default), &lt;code&gt;httpclient&lt;/code&gt;, &lt;code&gt;httpclient2&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-x, --ListenPublic&lt;/code&gt; - Listen publicly (accessible from other devices)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-z, --ListenPrivate&lt;/code&gt; - Only allow local access (default)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-p, --Port&lt;/code&gt; - Specify web server port (default: 9117)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-n, --IgnoreSslErrors&lt;/code&gt; - Ignore invalid SSL certificates: &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-d, --DataFolder&lt;/code&gt; - Specify the location of the data folder (requires administrator on Windows) 
  &lt;ul&gt; 
   &lt;li&gt;Example: &lt;code&gt;--DataFolder=&quot;D:\Your Data\Jackett\&quot;&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Note: Do not use this on Unix (Mono) systems. Adjust the HOME directory or set XDG_CONFIG_HOME environment variable instead&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;--NoRestart&lt;/code&gt; - Don&#39;t restart after update&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;--PIDFile&lt;/code&gt; - Specify the location of the PID file&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;--NoUpdates&lt;/code&gt; - Disable automatic updates&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;--help&lt;/code&gt; - Display help screen&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;--version&lt;/code&gt; - Display version information&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Example Usage&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Start Jackett on a custom port
./jackett --Port 9118

# Start with public access enabled
./jackett --ListenPublic

# Start with custom data folder (Windows)
JackettConsole.exe --DataFolder=&quot;D:\Jackett Data&quot;

# Enable detailed logging
./jackett --Logging --Tracing
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Building from Source&lt;/h2&gt; 
&lt;h3&gt;Windows&lt;/h3&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://github.com/Jackett/Jackett/raw/master/CONTRIBUTING.md#contributing-code&quot;&gt;contributing guide&lt;/a&gt; for detailed instructions.&lt;/p&gt; 
&lt;h3&gt;macOS&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; Install .NET SDK manually from &lt;a href=&quot;https://dotnet.microsoft.com/download?initial-os=macos&quot;&gt;dotnet.microsoft.com&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Build Steps:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Clone the repository
git clone https://github.com/Jackett/Jackett.git
cd Jackett/src

# Build for .NET Core
dotnet publish Jackett.Server -f net9.0 --self-contained -r osx-x64 -c Debug

# Run Jackett
./Jackett.Server/bin/Debug/net9.0/osx-x64/jackett
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Linux&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install build tools (Debian/Ubuntu)
sudo apt install nuget msbuild dotnet-sdk-9.0

# For other distributions, install equivalent packages
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Build Steps:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Clone the repository
git clone https://github.com/Jackett/Jackett.git
cd Jackett/src

# Build for .NET Core
dotnet publish Jackett.Server -f net9.0 --self-contained -r linux-x64 -c Debug

# Run Jackett
./Jackett.Server/bin/Debug/net9.0/linux-x64/jackett
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;h3&gt;Common Issues&lt;/h3&gt; 
&lt;h4&gt;Cannot Connect to Jackett&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Check if Jackett is running:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Linux
systemctl status jackett.service

# Windows
- Check the system tray for Jackett icon
- Check Services (services.msc) for &quot;Jackett&quot; service
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Try alternative URL:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Instead of &lt;code&gt;http://127.0.0.1:9117&lt;/code&gt;, try &lt;code&gt;http://localhost:9117&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Check firewall:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Ensure port 9117 is not blocked by your firewall&lt;/li&gt; 
 &lt;li&gt;On Linux: &lt;code&gt;sudo ufw allow 9117&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;On Windows: Check Windows Defender Firewall settings&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;No Search Results&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Test the indexer directly:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Go to Jackett dashboard&lt;/li&gt; 
 &lt;li&gt;Click &quot;Manual Search&quot; on the indexer&lt;/li&gt; 
 &lt;li&gt;Enter a test query&lt;/li&gt; 
 &lt;li&gt;Check if results appear&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Verify tracker status:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Check if the tracker website is accessible in your browser&lt;/li&gt; 
 &lt;li&gt;Some trackers may be down or blocking your IP&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Check indexer configuration:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;For private trackers, ensure your credentials are correct&lt;/li&gt; 
 &lt;li&gt;Try re-adding the indexer&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Permission Denied Errors (Linux)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Fix ownership of Jackett files
sudo chown -R $USER:$USER /opt/Jackett
sudo chown -R $USER:$USER ~/.config/Jackett
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Service Won&#39;t Start (Linux)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# View recent error logs
journalctl -u jackett.service -n 50

# Reload systemd and restart
sudo systemctl daemon-reload
sudo systemctl restart jackett.service

# Check for errors
systemctl status jackett.service
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Cloudflare Protection&lt;/h4&gt; 
&lt;p&gt;If an indexer shows &quot;Cloudflare protected&quot; errors:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Install and configure FlareSolverr (see &lt;a href=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/#configuring-flaresolverr&quot;&gt;Configuring FlareSolverr&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Make sure FlareSolverr is running and accessible&lt;/li&gt; 
 &lt;li&gt;Test the indexer again&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Updates Failing&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;Manual update:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Download the latest release for your platform&lt;/li&gt; 
 &lt;li&gt;Stop Jackett service&lt;/li&gt; 
 &lt;li&gt;Extract new files over existing installation&lt;/li&gt; 
 &lt;li&gt;Start Jackett service&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Disable automatic updates:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./jackett --NoUpdates
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Other Common Issues&lt;/h4&gt; 
&lt;p&gt;See &lt;a href=&quot;https://github.com/Jackett/Jackett/wiki/Troubleshooting&quot;&gt;https://github.com/Jackett/Jackett/wiki/Troubleshooting&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Getting Help&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Check the &lt;a href=&quot;https://github.com/Jackett/Jackett/issues&quot;&gt;GitHub Issues&lt;/a&gt; for similar problems&lt;/li&gt; 
 &lt;li&gt;Read the &lt;a href=&quot;https://github.com/Jackett/Jackett/raw/master/CONTRIBUTING.md&quot;&gt;Troubleshooting Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Open a new issue with: 
  &lt;ul&gt; 
   &lt;li&gt;Your operating system and version&lt;/li&gt; 
   &lt;li&gt;Jackett version&lt;/li&gt; 
   &lt;li&gt;Error messages from logs&lt;/li&gt; 
   &lt;li&gt;Steps to reproduce the problem&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Log Locations&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;~/.config/Jackett/log.txt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;journalctl -u jackett.service&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;%ProgramData%\Jackett\log.txt&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;macOS:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;~/.config/Jackett/log.txt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;/Users/your-user-name/Library/Application Support/Jackett/log.txt&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;This project is actively recruiting development help. If you can contribute code, please see:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/raw/master/CONTRIBUTING.md&quot;&gt;Contributing Guidelines&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/issues&quot;&gt;Open Issues&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/issues/8180&quot;&gt;Contact the Team&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Ways to Contribute:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Report bugs and issues&lt;/li&gt; 
 &lt;li&gt;Suggest new features&lt;/li&gt; 
 &lt;li&gt;Add or fix indexer definitions&lt;/li&gt; 
 &lt;li&gt;Improve documentation&lt;/li&gt; 
 &lt;li&gt;Submit code contributions&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/jackett-screenshot1.png&quot; alt=&quot;Jackett Dashboard&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/jackett-screenshot2.png&quot; alt=&quot;Indexer Management&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Jackett/Jackett/master/.github/jackett-screenshot3.png&quot; alt=&quot;Search Results&quot; /&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Quick Reference&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Item&lt;/th&gt; 
   &lt;th&gt;Value/Location&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Default URL&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;http://127.0.0.1:9117&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Default Port&lt;/td&gt; 
   &lt;td&gt;9117&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Config (Linux)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.config/Jackett/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Config (Windows)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;%ProgramData%\Jackett\&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Config (macOS)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.config/Jackett/&lt;/code&gt; or &lt;code&gt;~/Library/Application Support/Jackett/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Logs (Linux)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.config/Jackett/log.txt&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Logs (Windows)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;%ProgramData%\Jackett\log.txt&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Latest Release&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/releases/latest&quot;&gt;GitHub Releases&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Documentation&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/wiki&quot;&gt;GitHub Wiki&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Issues&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/issues&quot;&gt;GitHub Issues&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License and Credits&lt;/h2&gt; 
&lt;p&gt;Jackett is an open-source project maintained by the community.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett&quot;&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/issues&quot;&gt;Issue Tracker&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Jackett/Jackett/releases&quot;&gt;Release Notes&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/0a59d0ffe5e83ae1d8e9f4333ae684949237c878ef5ae151bcbd07baaa53dc1c/Jackett/Jackett" medium="image" />
      
    </item>
    
    <item>
      <title>jellyfin/jellyfin</title>
      <link>https://github.com/jellyfin/jellyfin</link>
      <description>&lt;p&gt;The Free Software Media System - Server Backend &amp; API&lt;/p&gt;&lt;hr&gt;&lt;h1 align=&quot;center&quot;&gt;Jellyfin&lt;/h1&gt; 
&lt;h3 align=&quot;center&quot;&gt;The Free Software Media System&lt;/h3&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img alt=&quot;Logo Banner&quot; src=&quot;https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/banner-logo-solid.svg?sanitize=true&quot; /&gt; &lt;br /&gt; &lt;br /&gt; &lt;a href=&quot;https://github.com/jellyfin/jellyfin&quot;&gt; &lt;img alt=&quot;GPL 2.0 License&quot; src=&quot;https://img.shields.io/github/license/jellyfin/jellyfin.svg?sanitize=true&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/jellyfin/jellyfin/releases&quot;&gt; &lt;img alt=&quot;Current Release&quot; src=&quot;https://img.shields.io/github/release/jellyfin/jellyfin.svg?sanitize=true&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/?utm_source=widget&quot;&gt; &lt;img alt=&quot;Translation Status&quot; src=&quot;https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-core/svg-badge.svg?sanitize=true&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/jellyfin/jellyfin&quot;&gt; &lt;img alt=&quot;Docker Pull Count&quot; src=&quot;https://img.shields.io/docker/pulls/jellyfin/jellyfin.svg?sanitize=true&quot; /&gt; &lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://opencollective.com/jellyfin&quot;&gt; &lt;img alt=&quot;Donate&quot; src=&quot;https://img.shields.io/opencollective/all/jellyfin.svg?label=backers&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://features.jellyfin.org&quot;&gt; &lt;img alt=&quot;Submit Feature Requests&quot; src=&quot;https://img.shields.io/badge/fider-vote%20on%20features-success.svg?sanitize=true&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://matrix.to/#/#jellyfinorg:matrix.org&quot;&gt; &lt;img alt=&quot;Chat on Matrix&quot; src=&quot;https://img.shields.io/matrix/jellyfinorg:matrix.org.svg?logo=matrix&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/jellyfin/jellyfin/releases.atom&quot;&gt; &lt;img alt=&quot;Release RSS Feed&quot; src=&quot;https://img.shields.io/badge/rss-releases-ffa500?logo=rss&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/jellyfin/jellyfin/commits/master.atom&quot;&gt; &lt;img alt=&quot;Master Commits RSS Feed&quot; src=&quot;https://img.shields.io/badge/rss-commits-ffa500?logo=rss&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby&#39;s 3.5.2 release and ported to the .NET platform to enable full cross-platform support.&lt;/p&gt; 
&lt;p&gt;There are no strings attached, no premium licenses or features, and no hidden agendas: just a team that wants to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest!&lt;/p&gt; 
&lt;p&gt;For further details, please see &lt;a href=&quot;https://jellyfin.org/docs/&quot;&gt;our documentation page&lt;/a&gt;. To receive the latest updates, get help with Jellyfin, and join the community, please visit &lt;a href=&quot;https://jellyfin.org/docs/general/getting-help&quot;&gt;one of our communication channels&lt;/a&gt;. For more information about the project, please see our &lt;a href=&quot;https://jellyfin.org/docs/general/about&quot;&gt;about page&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Want to get started?&lt;/strong&gt;&lt;br /&gt; Check out our &lt;a href=&quot;https://jellyfin.org/downloads&quot;&gt;downloads page&lt;/a&gt; or our &lt;a href=&quot;https://jellyfin.org/docs/general/installation/&quot;&gt;installation guide&lt;/a&gt;, then see our &lt;a href=&quot;https://jellyfin.org/docs/general/quick-start&quot;&gt;quick start guide&lt;/a&gt;. You can also &lt;a href=&quot;https://jellyfin.org/docs/general/installation/source&quot;&gt;build from source&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Something not working right?&lt;/strong&gt;&lt;br /&gt; Open an &lt;a href=&quot;https://jellyfin.org/docs/general/contributing/issues&quot;&gt;Issue&lt;/a&gt; on GitHub.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Want to contribute?&lt;/strong&gt;&lt;br /&gt; Check out our &lt;a href=&quot;https://jellyfin.org/contribute&quot;&gt;contributing choose-your-own-adventure&lt;/a&gt; to see where you can help, then see our &lt;a href=&quot;https://jellyfin.org/docs/general/contributing/&quot;&gt;contributing guide&lt;/a&gt; and our &lt;a href=&quot;https://jellyfin.org/docs/general/community-standards&quot;&gt;community standards&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;New idea or improvement?&lt;/strong&gt;&lt;br /&gt; Check out our &lt;a href=&quot;https://features.jellyfin.org/?view=most-wanted&quot;&gt;feature request hub&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Don&#39;t see Jellyfin in your language?&lt;/strong&gt;&lt;br /&gt; Check out our &lt;a href=&quot;https://translate.jellyfin.org&quot;&gt;Weblate instance&lt;/a&gt; to help translate Jellyfin and its subprojects.&lt;br /&gt;&lt;/p&gt; 
&lt;a href=&quot;https://translate.jellyfin.org/engage/jellyfin/?utm_source=widget&quot;&gt; &lt;img src=&quot;https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-web/multi-auto.svg?sanitize=true&quot; alt=&quot;Detailed Translation Status&quot; /&gt; &lt;/a&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Jellyfin Server&lt;/h2&gt; 
&lt;p&gt;This repository contains the code for Jellyfin&#39;s backend server. Note that this is only one of many projects under the Jellyfin GitHub &lt;a href=&quot;https://github.com/jellyfin/&quot;&gt;organization&lt;/a&gt; on GitHub. If you want to contribute, you can start by checking out our &lt;a href=&quot;https://jellyfin.org/docs/general/contributing/index.html&quot;&gt;documentation&lt;/a&gt; to see what to work on.&lt;/p&gt; 
&lt;h2&gt;Server Development&lt;/h2&gt; 
&lt;p&gt;These instructions will help you get set up with a local development environment in order to contribute to this repository. Before you start, please be sure to completely read our &lt;a href=&quot;https://jellyfin.org/docs/general/contributing/development.html&quot;&gt;guidelines on development contributions&lt;/a&gt;. Note that this project is supported on all major operating systems except FreeBSD, which is still incompatible.&lt;/p&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;p&gt;Before the project can be built, you must first install the &lt;a href=&quot;https://dotnet.microsoft.com/download/dotnet&quot;&gt;.NET 9.0 SDK&lt;/a&gt; on your system.&lt;/p&gt; 
&lt;p&gt;Instructions to run this project from the command line are included here, but you will also need to install an IDE if you want to debug the server while it is running. Any IDE that supports .NET 6 development will work, but two options are recent versions of &lt;a href=&quot;https://visualstudio.microsoft.com/downloads/&quot;&gt;Visual Studio&lt;/a&gt; (at least 2022) and &lt;a href=&quot;https://code.visualstudio.com/Download&quot;&gt;Visual Studio Code&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/jellyfin/jellyfin-ffmpeg&quot;&gt;ffmpeg&lt;/a&gt; will also need to be installed.&lt;/p&gt; 
&lt;h3&gt;Cloning the Repository&lt;/h3&gt; 
&lt;p&gt;After dependencies have been installed you will need to clone a local copy of this repository. If you just want to run the server from source you can clone this repository directly, but if you are intending to contribute code changes to the project, you should &lt;a href=&quot;https://jellyfin.org/docs/general/contributing/development.html#set-up-your-copy-of-the-repo&quot;&gt;set up your own fork&lt;/a&gt; of the repository. The following example shows how you can clone the repository directly over HTTPS.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/jellyfin/jellyfin.git
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Installing the Web Client&lt;/h3&gt; 
&lt;p&gt;The server is configured to host the static files required for the &lt;a href=&quot;https://github.com/jellyfin/jellyfin-web&quot;&gt;web client&lt;/a&gt; in addition to serving the backend by default. Before you can run the server, you will need to get a copy of the web client since they are not included in this repository directly.&lt;/p&gt; 
&lt;p&gt;Note that it is recommended for development to &lt;a href=&quot;https://raw.githubusercontent.com/jellyfin/jellyfin/master/#hosting-the-web-client-separately&quot;&gt;host the web client separately&lt;/a&gt; from the web server with some additional configuration, in which case you can skip this step.&lt;/p&gt; 
&lt;p&gt;There are two options to get the files for the web client.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Build them from source following the instructions on the &lt;a href=&quot;https://github.com/jellyfin/jellyfin-web&quot;&gt;jellyfin-web repository&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Get the pre-built files from an existing installation of the server. For example, with a Windows server installation the client files are located at &lt;code&gt;C:\Program Files\Jellyfin\Server\jellyfin-web&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Running The Server&lt;/h3&gt; 
&lt;p&gt;The following instructions will help you get the project up and running via the command line, or your preferred IDE.&lt;/p&gt; 
&lt;h4&gt;Running With Visual Studio&lt;/h4&gt; 
&lt;p&gt;To run the project with Visual Studio you can open the Solution (&lt;code&gt;.sln&lt;/code&gt;) file and then press &lt;code&gt;F5&lt;/code&gt; to run the server.&lt;/p&gt; 
&lt;h4&gt;Running With Visual Studio Code&lt;/h4&gt; 
&lt;p&gt;To run the project with Visual Studio Code you will first need to open the repository directory with Visual Studio Code using the &lt;code&gt;Open Folder...&lt;/code&gt; option.&lt;/p&gt; 
&lt;p&gt;Second, you need to &lt;a href=&quot;https://code.visualstudio.com/docs/editor/extension-gallery#_recommended-extensions&quot;&gt;install the recommended extensions for the workspace&lt;/a&gt;. Note that extension recommendations are classified as either &quot;Workspace Recommendations&quot; or &quot;Other Recommendations&quot;, but only the &quot;Workspace Recommendations&quot; are required.&lt;/p&gt; 
&lt;p&gt;After the required extensions are installed, you can run the server by pressing &lt;code&gt;F5&lt;/code&gt;.&lt;/p&gt; 
&lt;h4&gt;Running From the Command Line&lt;/h4&gt; 
&lt;p&gt;To run the server from the command line you can use the &lt;code&gt;dotnet run&lt;/code&gt; command. The example below shows how to do this if you have cloned the repository into a directory named &lt;code&gt;jellyfin&lt;/code&gt; (the default directory name) and should work on all operating systems.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd jellyfin                          # Move into the repository directory
dotnet run --project Jellyfin.Server --webdir /absolute/path/to/jellyfin-web/dist # Run the server startup project
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;A second option is to build the project and then run the resulting executable file directly. When running the executable directly you can easily add command line options. Add the &lt;code&gt;--help&lt;/code&gt; flag to list details on all the supported command line options.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Build the project&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dotnet build                       # Build the project
cd Jellyfin.Server/bin/Debug/net10.0 # Change into the build output directory
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Execute the build output. On Linux, Mac, etc. use &lt;code&gt;./jellyfin&lt;/code&gt; and on Windows use &lt;code&gt;jellyfin.exe&lt;/code&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Accessing the Hosted Web Client&lt;/h4&gt; 
&lt;p&gt;If the Server is configured to host the Web Client, and the Server is running, the Web Client can be accessed at &lt;code&gt;http://localhost:8096&lt;/code&gt; by default.&lt;/p&gt; 
&lt;p&gt;API documentation can be viewed at &lt;code&gt;http://localhost:8096/api-docs/swagger/index.html&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;Running from GitHub Codespaces&lt;/h3&gt; 
&lt;p&gt;As Jellyfin will run on a container on a GitHub hosted server, JF needs to handle some things differently.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Depending on the selected configuration (if you just click &#39;create codespace&#39; it will create a default configuration one) it might take 20-30 seconds to load all extensions and prepare the environment while VS Code is already open. Just give it some time and wait until you see &lt;code&gt;Downloading .NET version(s) 7.0.15~x64 ...... Done!&lt;/code&gt; in the output tab.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; If you want to access the JF instance from outside, like with a WebClient on another PC, remember to set the &quot;ports&quot; in the lower VS Code window to public.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; When first opening the server instance with any WebUI, you will be sent to the login instead of the setup page. Refresh the login page once and you should be redirected to the Setup.&lt;/p&gt; 
&lt;p&gt;There are two configurations for you to choose from.&lt;/p&gt; 
&lt;h4&gt;Default - Development Jellyfin Server&lt;/h4&gt; 
&lt;p&gt;This creates a container that has everything to run and debug the Jellyfin Media server but does not setup anything else. Each time you create a new container you have to run through the whole setup again. There is also no ffmpeg, webclient or media preloaded. Use the &lt;code&gt;.NET Launch (nowebclient)&lt;/code&gt; launch config to start the server.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Keep in mind that as this has no web client you have to connect to it via an external client. This can be just another codespace container running the WebUI. vuejs does not work from the get-go as it does not support the setup steps.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Development Jellyfin Server ffmpeg&lt;/h4&gt; 
&lt;p&gt;this extends the default server with a default installation of ffmpeg6 though the means described here: &lt;a href=&quot;https://jellyfin.org/docs/general/installation/linux#repository-manual&quot;&gt;https://jellyfin.org/docs/general/installation/linux#repository-manual&lt;/a&gt; If you want to install a specific ffmpeg version, follow the comments embedded in the &lt;code&gt;.devcontainer/Dev - Server Ffmpeg/install.ffmpeg.sh&lt;/code&gt; file.&lt;/p&gt; 
&lt;p&gt;Use the &lt;code&gt;ghcs .NET Launch (nowebclient, ffmpeg)&lt;/code&gt; launch config to run with the jellyfin-ffmpeg enabled.&lt;/p&gt; 
&lt;h3&gt;Running The Tests&lt;/h3&gt; 
&lt;p&gt;This repository also includes unit tests that are used to validate functionality as part of a CI pipeline on Azure. There are several ways to run these tests.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Run tests from the command line using &lt;code&gt;dotnet test&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Run tests in Visual Studio using the &lt;a href=&quot;https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer&quot;&gt;Test Explorer&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Run individual tests in Visual Studio Code using the associated &lt;a href=&quot;https://github.com/OmniSharp/omnisharp-vscode/wiki/How-to-run-and-debug-unit-tests&quot;&gt;CodeLens annotation&lt;/a&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Advanced Configuration&lt;/h3&gt; 
&lt;p&gt;The following sections describe some more advanced scenarios for running the server from source that build upon the standard instructions above.&lt;/p&gt; 
&lt;h4&gt;Hosting The Web Client Separately&lt;/h4&gt; 
&lt;p&gt;It is not necessary to host the frontend web client as part of the backend server. Hosting these two components separately may be useful for frontend developers who would prefer to host the client in a separate webpack development server for a tighter development loop. See the &lt;a href=&quot;https://github.com/jellyfin/jellyfin-web#getting-started&quot;&gt;jellyfin-web&lt;/a&gt; repo for instructions on how to do this.&lt;/p&gt; 
&lt;p&gt;To instruct the server not to host the web content, there is a &lt;code&gt;nowebclient&lt;/code&gt; configuration flag that must be set. This can be specified using the command line switch &lt;code&gt;--nowebclient&lt;/code&gt; or the environment variable &lt;code&gt;JELLYFIN_NOWEBCONTENT=true&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Since this is a common scenario, there is also a separate launch profile defined for Visual Studio called &lt;code&gt;Jellyfin.Server (nowebcontent)&lt;/code&gt; that can be selected from the &#39;Start Debugging&#39; dropdown in the main toolbar.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The setup wizard cannot be run if the web client is hosted separately.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; This project is supported by: &lt;br /&gt; &lt;br /&gt; &lt;a href=&quot;https://www.digitalocean.com&quot;&gt;&lt;img src=&quot;https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg?sanitize=true&quot; height=&quot;50px&quot; alt=&quot;DigitalOcean&quot; /&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://www.jetbrains.com&quot;&gt;&lt;img src=&quot;https://gist.githubusercontent.com/anthonylavado/e8b2403deee9581e0b4cb8cd675af7db/raw/199ae22980ef5da64882ec2de3e8e5c03fe535b8/jetbrains.svg?sanitize=true&quot; height=&quot;50px&quot; alt=&quot;JetBrains logo&quot; /&gt;&lt;/a&gt; &lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/28c9a0dc2157c9cd239365e62f3857ac26a79685fb4c9bcd9f28986ab3fb0019/jellyfin/jellyfin" medium="image" />
      
    </item>
    
    <item>
      <title>OpenRA/OpenRA</title>
      <link>https://github.com/OpenRA/OpenRA</link>
      <description>&lt;p&gt;Open Source real-time strategy game engine for early Westwood games such as Command &amp; Conquer: Red Alert written in C# using SDL and OpenGL. Runs on Windows, Linux, *BSD and Mac OS X.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;OpenRA&lt;/h1&gt; 
&lt;p&gt;A Libre/Free Real Time Strategy game engine supporting early Westwood classics.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Website: &lt;a href=&quot;https://www.openra.net&quot;&gt;https://www.openra.net&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Chat: &lt;a href=&quot;ircs://irc.libera.chat:6697/openra&quot;&gt;#openra on Libera&lt;/a&gt; (&lt;a href=&quot;https://web.libera.chat/#openra&quot;&gt;web&lt;/a&gt;) or &lt;a href=&quot;https://discord.openra.net&quot;&gt;Discord&lt;/a&gt; &lt;img src=&quot;https://discordapp.com/api/guilds/153649279762694144/widget.png&quot; alt=&quot;Discord Badge&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;Repository: &lt;a href=&quot;https://github.com/OpenRA/OpenRA&quot;&gt;https://github.com/OpenRA/OpenRA&lt;/a&gt; &lt;img src=&quot;https://github.com/OpenRA/OpenRA/workflows/Continuous%20Integration/badge.svg?sanitize=true&quot; alt=&quot;Continuous Integration&quot; /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Please read the &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki/FAQ&quot;&gt;FAQ&lt;/a&gt; in our &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki&quot;&gt;Wiki&lt;/a&gt; and report problems at &lt;a href=&quot;https://github.com/OpenRA/OpenRA/issues&quot;&gt;https://github.com/OpenRA/OpenRA/issues&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Join the &lt;a href=&quot;https://forum.openra.net/&quot;&gt;Forum&lt;/a&gt; for discussion.&lt;/p&gt; 
&lt;h2&gt;Play&lt;/h2&gt; 
&lt;p&gt;Distributed mods include a reimagining of&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Command &amp;amp; Conquer: Red Alert&lt;/li&gt; 
 &lt;li&gt;Command &amp;amp; Conquer: Tiberian Dawn&lt;/li&gt; 
 &lt;li&gt;Dune 2000&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;EA has not endorsed and does not support this product.&lt;/p&gt; 
&lt;p&gt;Check our &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki/Playing-the-game&quot;&gt;Playing the Game&lt;/a&gt; Guide to win multiplayer matches.&lt;/p&gt; 
&lt;h2&gt;Contribute&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Please read &lt;a href=&quot;https://github.com/OpenRA/OpenRA/raw/bleed/INSTALL.md&quot;&gt;INSTALL.md&lt;/a&gt; and &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki/Compiling&quot;&gt;Compiling&lt;/a&gt; on how to set up an OpenRA development environment.&lt;/li&gt; 
 &lt;li&gt;See &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki/Hacking&quot;&gt;Hacking&lt;/a&gt; for a (now very outdated) overview of the engine.&lt;/li&gt; 
 &lt;li&gt;Read and follow our &lt;a href=&quot;https://github.com/OpenRA/OpenRA/raw/bleed/CODE_OF_CONDUCT.md&quot;&gt;Code of Conduct&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;To get your patches merged, please adhere to the &lt;a href=&quot;https://github.com/OpenRA/OpenRA/raw/bleed/CONTRIBUTING.md&quot;&gt;Contributing&lt;/a&gt; guidelines.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Mapping&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;We offer a &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki/Mapping&quot;&gt;Mapping&lt;/a&gt; Tutorial as you can change gameplay drastically with custom rules.&lt;/li&gt; 
 &lt;li&gt;For scripted mission have a look at the &lt;a href=&quot;https://docs.openra.net/en/release/lua/&quot;&gt;Lua API&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;If you want to share your maps with the community, upload them at the &lt;a href=&quot;https://resource.openra.net&quot;&gt;OpenRA Resource Center&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Modding&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Download a copy of the &lt;a href=&quot;https://github.com/OpenRA/OpenRAModSDK&quot;&gt;OpenRA Mod SDK&lt;/a&gt; to start your own mod.&lt;/li&gt; 
 &lt;li&gt;Check the &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki/Modding-Guide&quot;&gt;Modding Guide&lt;/a&gt; to create your own classic RTS.&lt;/li&gt; 
 &lt;li&gt;There exists an auto-generated &lt;a href=&quot;https://docs.openra.net/en/latest/release/traits/&quot;&gt;Trait documentation&lt;/a&gt; to get started with yaml files.&lt;/li&gt; 
 &lt;li&gt;Some hints on how to create new OpenRA compatible &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki/Pixelart&quot;&gt;Pixelart&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Upload total conversions at &lt;a href=&quot;https://www.moddb.com/games/openra/mods&quot;&gt;our Mod DB profile&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Sponsor a &lt;a href=&quot;https://github.com/OpenRA/OpenRAWebsiteV3/tree/master/packages&quot;&gt;mirror server&lt;/a&gt; if you have some bandwidth to spare.&lt;/li&gt; 
 &lt;li&gt;You can immediately set up a &lt;a href=&quot;https://github.com/OpenRA/OpenRA/wiki/Dedicated-Server&quot;&gt;Dedicated&lt;/a&gt; Game Server.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Copyright (c) OpenRA Developers and Contributors This file is part of OpenRA, which is free software. It is made available to you under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. For more information, see &lt;a href=&quot;https://github.com/OpenRA/OpenRA/raw/bleed/COPYING&quot;&gt;COPYING&lt;/a&gt;.&lt;/p&gt; 
&lt;h1&gt;Sponsors&lt;/h1&gt; 
&lt;p&gt;Free code signing on Windows provided by &lt;a href=&quot;https://about.signpath.io/&quot;&gt;SignPath.io&lt;/a&gt;, certificate by &lt;a href=&quot;https://signpath.org/&quot;&gt;SignPath Foundation&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/959908/9ae88d80-9492-11eb-8fd2-c5e438bff0b9" medium="image" />
      
    </item>
    
    <item>
      <title>DearVa/Everywhere</title>
      <link>https://github.com/DearVa/Everywhere</link>
      <description>&lt;p&gt;Context-aware AI assistant for your desktop. Ready to respond intelligently, seamlessly integrating multiple LLMs and MCP tools.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a id=&quot;readme-top&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/DearVa/Everywhere/raw/main/README-zh-cn.md&quot;&gt;前往中文版本 »&lt;/a&gt;&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/refs/heads/main/img/banner.webp&quot; alt=&quot;Banner&quot; /&gt; 
 &lt;h1&gt;Every moment, Every place. Your AI - &lt;code&gt;Everywhere&lt;/code&gt;&lt;/h1&gt; 
 &lt;div&gt; 
  &lt;a href=&quot;https://trendshift.io/repositories/15106&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/15106&quot; alt=&quot;DearVa%2FEverywhere | Trendshift&quot; width=&quot;250&quot; /&gt;&lt;/a&gt; 
  &lt;a href=&quot;https://www.producthunt.com/products/everywhere?embed=true&amp;amp;utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_source=badge-everywhere&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1034853&amp;amp;theme=light&amp;amp;t=1762403775174&quot; alt=&quot;Product Hunt&quot; width=&quot;250&quot; /&gt;&lt;/a&gt; 
  &lt;a href=&quot;https://hellogithub.com/repository/DearVa/Everywhere&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=0bd4328c24794902bd6097055cda6f36&amp;amp;claim_uid=LNYEf6O9Qv5JeR2&quot; alt=&quot;Featured｜HelloGitHub&quot; width=&quot;250&quot; /&gt;&lt;/a&gt; 
 &lt;/div&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;a href=&quot;https://dotnet.microsoft.com/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/.NET_10-512BD4?style=for-the-badge&amp;amp;logo=dotnet&amp;amp;logoColor=white&quot; alt=&quot;.NET 10&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://avaloniaui.net/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Avalonia-1c2e5f?style=for-the-badge&amp;amp;logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iODYiIHZpZXdCb3g9IjAgMCA4NiA4NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU5OV8xMTA3KSI+CjxwYXRoIGQ9Ik03NC44NTM1IDg1LjgyMzFDNzUuMDI2MyA4NS44MjMxIDc1LjE5NTQgODUuODIzMSA3NS4zNjc5IDg1LjgyMzFDODAuNzM0NyA4NS44MjMxIDg1LjE0MzkgODEuODAyNyA4NS43NjE0IDc2LjYwMTlMODUuODM1NyA0MS43NjA0Qzg1LjIyNTUgMTguNTkzMSA2Ni4yNTM3IDAgNDIuOTM5MyAwQzE5LjIzOTkgMCAwLjAyNzcxIDE5LjIxMjIgMC4wMjc3MSA0Mi45MTE2QzAuMDI3NzEgNjYuMzU3MyAxOC44MzA5IDg1LjQxOCA0Mi4xOCA4NS44MjMxSDc0Ljg1MzVaIiBmaWxsPSIjRjlGOUZCIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDMuMDU4NSAxNC42MTQzQzI5LjU1MTMgMTQuNjE0MyAxOC4yNTU1IDI0LjA4MiAxNS40NDU0IDM2Ljc0MzJDMTguMTM1NyAzNy40OTc1IDIwLjEwODcgMzkuOTY3OSAyMC4xMDg3IDQyLjg5OTJDMjAuMTA4NyA0NS44MzA1IDE4LjEzNTcgNDguMzAxIDE1LjQ0NTQgNDkuMDU1MkMxOC4yNTU1IDYxLjcxNjQgMjkuNTUxMyA3MS4xODQyIDQzLjA1ODUgNzEuMTg0MkM0Ny45NzU0IDcxLjE4NDIgNTIuNTk5MyA2OS45Mjk2IDU2LjYyNzYgNjcuNzIzVjcwLjk5MjZINzEuMzQzNVY0NC4wNzE2QzcxLjM1NjkgNDMuNzEzOCA3MS4zNDM1IDQzLjI2MDMgNzEuMzQzNSA0Mi44OTkyQzcxLjM0MzUgMjcuMjc3OSA1OC42Nzk5IDE0LjYxNDMgNDMuMDU4NSAxNC42MTQzWk0yOS41MDk2IDQyLjg5OTJDMjkuNTA5NiAzNS40MTY0IDM1LjU3NTcgMjkuMzUwMyA0My4wNTg1IDI5LjM1MDNDNTAuNTQxNCAyOS4zNTAzIDU2LjYwNzQgMzUuNDE2NCA1Ni42MDc0IDQyLjg5OTJDNTYuNjA3NCA1MC4zODIxIDUwLjU0MTQgNTYuNDQ4MSA0My4wNTg1IDU2LjQ0ODFDMzUuNTc1NyA1Ni40NDgxIDI5LjUwOTYgNTAuMzgyMSAyOS41MDk2IDQyLjg5OTJaIiBmaWxsPSIjMTYxQzJEIi8+CjxwYXRoIGQ9Ik0xOC4xMDUgNDIuODgwNUMxOC4xMDUgNDUuMzgwMyAxNi4wNzg1IDQ3LjQwNjggMTMuNTc4NyA0Ny40MDY4QzExLjA3ODkgNDcuNDA2OCA5LjA1MjM3IDQ1LjM4MDMgOS4wNTIzNyA0Mi44ODA1QzkuMDUyMzcgNDAuMzgwNyAxMS4wNzg5IDM4LjM1NDIgMTMuNTc4NyAzOC4zNTQyQzE2LjA3ODUgMzguMzU0MiAxOC4xMDUgNDAuMzgwNyAxOC4xMDUgNDIuODgwNVoiIGZpbGw9IiMxNjFDMkQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81OTlfMTEwNyI+CjxyZWN0IHdpZHRoPSI4NiIgaGVpZ2h0PSI4NiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K&quot; alt=&quot;Avalonia&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/5fyg6nE3yn&quot;&gt;&lt;img src=&quot;https://dcbadge.limes.pink/api/server/5fyg6nE3yn&quot; alt=&quot;Join Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://qm.qq.com/cgi-bin/qm/qr?k=wp9aDBBnLc7pYATqT99tB-N2ZP2ETmJC&amp;amp;jump_from=webapi&amp;amp;authKey=97qUJfsQoI70dUNcgBZ0C3HCZeiEn8inLT7pzg8x+KinbQwfIrHFu3dB2+aHMbRD&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/%E5%8A%A0%E5%85%A5-QQ_%E7%BE%A4-EB1923?style=for-the-badge&amp;amp;logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iODYiIHdpZHRoPSI4NiIgdmlld0JveD0iMCAwIDEyMCAxNDUiPjxwYXRoIGZpbGw9IiNmYWFiMDciIGQ9Ik02MC41MDMgMTQyLjIzN2MtMTIuNTMzIDAtMjQuMDM4LTQuMTk1LTMxLjQ0NS0xMC40Ni0zLjc2MiAxLjEyNC04LjU3NCAyLjkzMi0xMS42MSA1LjE3NS0yLjYgMS45MTgtMi4yNzUgMy44NzQtMS44MDcgNC42NjMgMi4wNTYgMy40NyAzNS4yNzMgMi4yMTYgNDQuODYyIDEuMTM2em0wIDBjMTIuNTM1IDAgMjQuMDM5LTQuMTk1IDMxLjQ0Ny0xMC40NiAzLjc2IDEuMTI0IDguNTczIDIuOTMyIDExLjYxIDUuMTc1IDIuNTk4IDEuOTE4IDIuMjc0IDMuODc0IDEuODA1IDQuNjYzLTIuMDU2IDMuNDctMzUuMjcyIDIuMjE2LTQ0Ljg2MiAxLjEzNnptMCAwIi8+PHBhdGggZD0iTTYwLjU3NiA2Ny4xMTljMjAuNjk4LS4xNCAzNy4yODYtNC4xNDcgNDIuOTA3LTUuNjgzIDEuMzQtLjM2NyAyLjA1Ni0xLjAyNCAyLjA1Ni0xLjAyNC4wMDUtLjE4OS4wODUtMy4zNy4wODUtNS4wMUMxMDUuNjI0IDI3Ljc2OCA5Mi41OC4wMDEgNjAuNSAwIDI4LjQyLjAwMSAxNS4zNzUgMjcuNzY5IDE1LjM3NSA1NS40MDFjMCAxLjY0Mi4wOCA0LjgyMi4wODYgNS4wMSAwIDAgLjU4My42MTUgMS42NS45MTMgNS4xOSAxLjQ0NCAyMi4wOSA1LjY1IDQzLjMxMiA1Ljc5NXptNTYuMjQ1IDIzLjAyYy0xLjI4My00LjEyOS0zLjAzNC04Ljk0NC00LjgwOC0xMy41NjggMCAwLTEuMDItLjEyNi0xLjUzNy4wMjMtMTUuOTEzIDQuNjIzLTM1LjIwMiA3LjU3LTQ5LjkgNy4zOTJoLS4xNTNjLTE0LjYxNi4xNzUtMzMuNzc0LTIuNzM3LTQ5LjYzNC03LjMxNS0uNjA2LS4xNzUtMS44MDItLjEtMS44MDItLjEtMS43NzQgNC42MjQtMy41MjUgOS40NC00LjgwOCAxMy41NjgtNi4xMTkgMTkuNjktNC4xMzYgMjcuODM4LTIuNjI3IDI4LjAyIDMuMjM5LjM5MiAxMi42MDYtMTQuODIxIDEyLjYwNi0xNC44MjEgMCAxNS40NTkgMTMuOTU3IDM5LjE5NSA0NS45MTggMzkuNDEzaC44NDhjMzEuOTYtLjIxOCA0NS45MTctMjMuOTU0IDQ1LjkxNy0zOS40MTMgMCAwIDkuMzY4IDE1LjIxMyAxMi42MDcgMTQuODIyIDEuNTA4LS4xODMgMy40OTEtOC4zMzItMi42MjctMjguMDIxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTQ5LjA4NSA0MC44MjRjLTQuMzUyLjE5Ny04LjA3LTQuNzYtOC4zMDQtMTEuMDYzLS4yMzYtNi4zMDUgMy4wOTgtMTEuNTc2IDcuNDUtMTEuNzczIDQuMzQ3LS4xOTUgOC4wNjQgNC43NiA4LjMgMTEuMDY1LjIzOCA2LjMwNi0zLjA5NyAxMS41NzctNy40NDYgMTEuNzcxbTMxLjEzMy0xMS4wNjNjLS4yMzMgNi4zMDItMy45NTEgMTEuMjYtOC4zMDMgMTEuMDYzLTQuMzUtLjE5NS03LjY4NC01LjQ2NS03LjQ0Ni0xMS43Ny4yMzYtNi4zMDUgMy45NTItMTEuMjYgOC4zLTExLjA2NiA0LjM1Mi4xOTcgNy42ODYgNS40NjggNy40NDkgMTEuNzczIi8+PHBhdGggZmlsbD0iI2ZhYWIwNyIgZD0iTTg3Ljk1MiA0OS43MjVDODYuNzkgNDcuMTUgNzUuMDc3IDQ0LjI4IDYwLjU3OCA0NC4yOGgtLjE1NmMtMTQuNSAwLTI2LjIxMiAyLjg3LTI3LjM3NSA1LjQ0NmEuODYzLjg2MyAwIDAwLS4wODUuMzY3Ljg4Ljg4IDAgMDAuMTYuNDk2Yy45OCAxLjQyNyAxMy45ODUgOC40ODcgMjcuMyA4LjQ4N2guMTU2YzEzLjMxNCAwIDI2LjMxOS03LjA1OCAyNy4yOTktOC40ODdhLjg3My44NzMgMCAwMC4xNi0uNDk4Ljg1Ni44NTYgMCAwMC0uMDg1LS4zNjUiLz48cGF0aCBkPSJNNTQuNDM0IDI5Ljg1NGMuMTk5IDIuNDktMS4xNjcgNC43MDItMy4wNDYgNC45NDMtMS44ODMuMjQyLTMuNTY4LTEuNTgtMy43NjgtNC4wNy0uMTk3LTIuNDkyIDEuMTY3LTQuNzA0IDMuMDQzLTQuOTQ0IDEuODg2LS4yNDQgMy41NzQgMS41OCAzLjc3MSA0LjA3bTExLjk1Ni44MzNjLjM4NS0uNjg5IDMuMDA0LTQuMzEyIDguNDI3LTIuOTkzIDEuNDI1LjM0NyAyLjA4NC44NTcgMi4yMjMgMS4wNTcuMjA1LjI5Ni4yNjIuNzE4LjA1MyAxLjI4Ni0uNDEyIDEuMTI2LTEuMjYzIDEuMDk1LTEuNzM0Ljg3NS0uMzA1LS4xNDItNC4wODItMi42Ni03LjU2MiAxLjA5Ny0uMjQuMjU3LS42NjguMzQ2LTEuMDczLjA0LS40MDctLjMwOC0uNTc0LS45My0uMzM0LTEuMzYyIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTYwLjU3NiA4My4wOGgtLjE1M2MtOS45OTYuMTItMjIuMTE2LTEuMjA0LTMzLjg1NC0zLjUxOC0xLjAwNCA1LjgxOC0xLjYxIDEzLjEzMi0xLjA5IDIxLjg1MyAxLjMxNiAyMi4wNDMgMTQuNDA3IDM1LjkgMzQuNjE0IDM2LjFoLjgyYzIwLjIwOC0uMiAzMy4yOTgtMTQuMDU3IDM0LjYxNi0zNi4xLjUyLTguNzIzLS4wODctMTYuMDM1LTEuMDkyLTIxLjg1NC0xMS43MzkgMi4zMTUtMjMuODYyIDMuNjQtMzMuODYgMy41MTgiLz48cGF0aCBmaWxsPSIjZWIxOTIzIiBkPSJNMzIuMTAyIDgxLjIzNXYyMS42OTNzOS45MzcgMi4wMDQgMTkuODkzLjYxNlY4My41MzVjLTYuMzA3LS4zNTctMTMuMTA5LTEuMTUyLTE5Ljg5My0yLjMiLz48cGF0aCBmaWxsPSIjZWIxOTIzIiBkPSJNMTA1LjUzOSA2MC40MTJzLTE5LjMzIDYuMTAyLTQ0Ljk2MyA2LjI3NWgtLjE1M2MtMjUuNTkxLS4xNzItNDQuODk2LTYuMjU1LTQ0Ljk2Mi02LjI3NUw4Ljk4NyA3Ni41N2MxNi4xOTMgNC44ODIgMzYuMjYxIDguMDI4IDUxLjQzNiA3Ljg0NWguMTUzYzE1LjE3NS4xODMgMzUuMjQyLTIuOTYzIDUxLjQzNy03Ljg0NXptMCAwIi8+PC9zdmc+&quot; alt=&quot;Join QQ Group&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;strong&gt;&lt;a href=&quot;https://everywhere.sylinko.com&quot;&gt;📖 Explore Official Docs&lt;/a&gt;&lt;/strong&gt; &amp;nbsp;·&amp;nbsp; &lt;strong&gt;&lt;a href=&quot;https://youtu.be/BGujYa5hbXo&quot;&gt;🎬 Watch the Trailer&lt;/a&gt;&lt;/strong&gt; &amp;nbsp;·&amp;nbsp; &lt;strong&gt;&lt;a href=&quot;https://github.com/DearVa/Everywhere/issues/new?labels=bug&amp;amp;template=bug-report.md&quot;&gt;🪲 Report a Bug&lt;/a&gt;&lt;/strong&gt; &amp;nbsp;·&amp;nbsp; &lt;strong&gt;&lt;a href=&quot;https://github.com/DearVa/Everywhere/issues/new?labels=enhancement&amp;amp;template=feature-request.md&quot;&gt;💡 Request a Feature&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;details&gt; 
 &lt;summary&gt;📖 &lt;b&gt;Table of Contents&lt;/b&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-about-everywhere&quot;&gt;🦄 About Everywhere&lt;/a&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-experience-examples&quot;&gt;🌟 Experience Examples&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#%EF%B8%8F-technical-features&quot;&gt;🛠️ Technical Features&lt;/a&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#%EF%B8%8F-core-technology--architecture&quot;&gt;⚙️ Core Technology &amp;amp; Architecture&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-system-requirements&quot;&gt;📋 System Requirements&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-getting-started&quot;&gt;🚀 Getting Started&lt;/a&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#acquisition--installation&quot;&gt;Acquisition &amp;amp; Installation&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#help--community&quot;&gt;Help &amp;amp; Community&lt;/a&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-contributing&quot;&gt;🤝 Contributing&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-license&quot;&gt;📄 License&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-sponsor&quot;&gt;💖 Sponsor&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-special-thanks&quot;&gt;🤩 Special Thanks&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#-star-history&quot;&gt;📈 Star History&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;br /&gt; 
&lt;h2&gt;🦄 About Everywhere&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Everywhere&lt;/strong&gt; is an interactive AI assistant with context-aware capabilities, featuring a sleek, modern UI and powerful integrated functionality. Unlike traditional AI tools, Everywhere instantly perceives and understands anything on your screen. No need for screenshots, copying, or switching apps—just press a shortcut key to get the help you need right where you are, delivering seamless AI assistant support.&lt;/p&gt; 
&lt;img width=&quot;100%&quot; alt=&quot;Strategy Engine&quot; src=&quot;https://github.com/user-attachments/assets/2b45476b-ff8a-4b0f-8df0-1a16a47cc27b&quot; /&gt; 
&lt;h3&gt;🌟 Experience Examples&lt;/h3&gt; 
&lt;br /&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;🩺 Troubleshooting Expert&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;You encounter an error message while using your computer but are unsure how to resolve it. Bring up &lt;kbd&gt;Everywhere&lt;/kbd&gt; next to the error message, simply type &lt;em&gt;&quot;What is this error? How to solve it?&quot;&lt;/em&gt;, and &lt;strong&gt;Everywhere&lt;/strong&gt; will capture the message context in place and provide an accurate solution.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;📰 Quick Web Summarization&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;Browsing a lengthy technical article but just need the key points? Bring up &lt;kbd&gt;Everywhere&lt;/kbd&gt; over the webpage, ask &lt;em&gt;&quot;Give me a short summary&quot;&lt;/em&gt;, and instantly receive the main arguments without reading the entire content.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;🌐 Instant Translation&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;Encounter a foreign word while researching literature? Highlight it or just bring up &lt;kbd&gt;Everywhere&lt;/kbd&gt; against the text, tell it to &lt;em&gt;&quot;Translate to Chinese&quot;&lt;/em&gt;, and see an immediate translation without opening a secondary translation tool.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;✉️ Email Draft Assistance&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;Unsure about the tone of an important business email? Bring up &lt;kbd&gt;Everywhere&lt;/kbd&gt; over your draft, enter &lt;em&gt;&quot;Make this email more professional&quot;&lt;/em&gt;, and your casual text is transformed into polished, business-ready communication.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;❔ Is it true?&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;Come across information of uncertain authenticity? Select the relevant text, bring up &lt;kbd&gt;Everywhere&lt;/kbd&gt;, ask &lt;em&gt;&quot;Is this true?&quot;&lt;/em&gt;, and &lt;strong&gt;Everywhere&lt;/strong&gt; will quickly search and verify the reliability of the information.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;🛠️ Technical Features&lt;/h3&gt; 
&lt;table align=&quot;center&quot;&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;width:30%&quot;&gt;Category&lt;/th&gt; 
   &lt;th style=&quot;width:45%&quot;&gt;✅ Currently Supported&lt;/th&gt; 
   &lt;th style=&quot;width:25%&quot;&gt;🚧 Work in Progress&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;🤖 Rich Model Ecosystem&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt; • Everywhere Cloud Service&lt;br /&gt; • &lt;img style=&quot;margin-top:3px;margin-bottom:-3px;&quot; alt=&quot;OpenAI&quot; src=&quot;https://registry.npmmirror.com/@lobehub/icons-static-svg/latest/files/icons/openai.svg?sanitize=true&quot; /&gt; OpenAI&lt;br /&gt; • &lt;img style=&quot;margin-top:3px;margin-bottom:-3px;&quot; alt=&quot;Anthropic&quot; src=&quot;https://registry.npmmirror.com/@lobehub/icons-static-svg/latest/files/icons/anthropic.svg?sanitize=true&quot; /&gt; Anthropic (Claude)&lt;br /&gt; • &lt;img style=&quot;margin-top:3px;margin-bottom:-3px;&quot; alt=&quot;Google&quot; src=&quot;https://registry.npmmirror.com/@lobehub/icons-static-svg/latest/files/icons/gemini-color.svg?sanitize=true&quot; /&gt; Google (Gemini)&lt;br /&gt; • &lt;img style=&quot;margin-top:3px;margin-bottom:-3px;&quot; alt=&quot;DeepSeek&quot; src=&quot;https://registry.npmmirror.com/@lobehub/icons-static-svg/latest/files/icons/deepseek-color.svg?sanitize=true&quot; /&gt; DeepSeek&lt;br /&gt; • &lt;img style=&quot;margin-top:3px;margin-bottom:-3px;&quot; alt=&quot;Moonshot&quot; src=&quot;https://registry.npmmirror.com/@lobehub/icons-static-svg/latest/files/icons/moonshot.svg?sanitize=true&quot; /&gt; Moonshot (Kimi)&lt;br /&gt; • &lt;img style=&quot;margin-top:3px;margin-bottom:-3px;&quot; alt=&quot;MiniMax&quot; src=&quot;https://registry.npmmirror.com/@lobehub/icons-static-svg/latest/files/icons/minimax-color.svg?sanitize=true&quot; /&gt; MiniMax&lt;br /&gt; • &lt;img style=&quot;margin-top:3px;margin-bottom:-3px;&quot; alt=&quot;Ollama&quot; src=&quot;https://registry.npmmirror.com/@lobehub/icons-static-svg/latest/files/icons/ollama.svg?sanitize=true&quot; /&gt; Local Deployment (Ollama)&lt;br /&gt; • Compatible with custom API endpoints&lt;br /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;⚙️ Powerful Agent System&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt; • Web Browser&lt;br /&gt; • Dispatch Sub-agents&lt;br /&gt; • Local File System&lt;br /&gt; • Terminal Script Execution&lt;br /&gt; • MCP Tools&lt;br /&gt; • Everything Fast Search &lt;i&gt;(Windows)&lt;/i&gt;&lt;br /&gt; • Integrated System Apps &lt;i&gt;(macOS)&lt;/i&gt; &lt;/td&gt; 
   &lt;td&gt; • Memory System&lt;br /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;🫧 Seamless Interaction&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt; • Ultimate Modern Frosted Glass UI&lt;br /&gt; • Intelligent Context Awareness&lt;br /&gt; • Global System Hotkeys&lt;br /&gt; • Text Selection Interaction&lt;br /&gt; • Rich Markdown and Math Formula Rendering &lt;/td&gt; 
   &lt;td&gt; • Mouse Shortcuts&lt;br /&gt; • Voice Interaction&lt;br /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;🖥️ Multi-Platform&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt; • 🪟 Windows&lt;br /&gt; • 🍎 macOS &lt;/td&gt; 
   &lt;td&gt; • 🐧 Linux &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;🌐 i18n Support&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt; • Simplified/Traditional Chinese&lt;br /&gt; • English, Deutsch, Español&lt;br /&gt; • Français, Italiano, 日本語&lt;br /&gt; • 한국어, Русский, Türkçe&lt;br /&gt; &lt;/td&gt; 
   &lt;td&gt; Partially AI-assisted translation.&lt;br /&gt;Contributions and corrections are welcome!&lt;br /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;⚙️ Core Technology &amp;amp; Architecture&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;👁️ Broad Context Awareness&lt;/strong&gt;: In addition to supporting traditional screen multi-modality, we have deeply integrated underlying accessibility APIs and UI automation technologies. This allows the application to accurately extract active structured environment data across a huge variety of software with low intrusion.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🧠 Scenario Invocation &amp;amp; Strategy Engine&lt;/strong&gt;: 🚧 The original intention was to completely end the workflow that disrupts your working rhythm. Previously, using LLMs often required: selecting &amp;amp; copying -&amp;gt; switching to the AI window -&amp;gt; pasting -&amp;gt; manually typing to complete your intention. With the advanced features powered by the strategy engine, Everywhere, invoked via shortcut, instantly perceives the scenario or app you are browsing. It pushes shortcut execution strategies tailored to your exact context without the need to explain your request, achieving a true state of flow.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🧱 Commitment to Core Quality&lt;/strong&gt;: We emphasize software performance, code quality, and security. Starting from the system&#39;s core foundation, via modern architecture design and meticulous system engineering, we fundamentally reject pure reliance on &quot;Vibe Coding&quot; and blind agile piling. Every line of code is carefully written and meticulously polished.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📋 System Requirements&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Platform&lt;/th&gt; 
   &lt;th&gt;Minimum System Requirements&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🪟 Windows&lt;/td&gt; 
   &lt;td&gt;Windows 10 (10.0.19041.0)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🍎 macOS&lt;/td&gt; 
   &lt;td&gt;Monterey 12.0&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🐧 Linux&lt;/td&gt; 
   &lt;td&gt;🚧 &lt;strong&gt;In Development&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;🚀 Getting Started&lt;/h2&gt; 
&lt;h3&gt;Acquisition &amp;amp; Installation&lt;/h3&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;We recommend visiting our &lt;a href=&quot;https://everywhere.sylinko.com/download&quot;&gt;official website&lt;/a&gt; to directly download the appropriate version for your system.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;Everywhere-Windows-x64-Setup-vx.x.x.exe&lt;/code&gt;: Full wizard installer package &lt;em&gt;(Recommended)&lt;/em&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;Everywhere-Windows-x64-vx.x.x.zip&lt;/code&gt;: Portable/install-free zip package.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;Everywhere-macOS-arm64-vx.x.x.pkg&lt;/code&gt;: For Apple Silicon (M-series) Mac devices.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;Everywhere-macOS-x64-vx.x.x.pkg&lt;/code&gt;: For Intel Mac devices.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Help &amp;amp; Community&lt;/h3&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;New here? Or looking for deep integration features like MCP? We highly recommend checking out our official guide first!&lt;/p&gt; 
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;📖 Official Documentation&lt;/strong&gt;: &lt;a href=&quot;https://everywhere.sylinko.com&quot;&gt;https://everywhere.sylinko.com&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;👾 Discord Community&lt;/strong&gt;: &lt;a href=&quot;https://discord.gg/5fyg6nE3yn&quot;&gt;Join our channel for support&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;💬 Chinese User Group&lt;/strong&gt;: &lt;a href=&quot;https://qm.qq.com/cgi-bin/qm/qr?k=wp9aDBBnLc7pYATqT99tB-N2ZP2ETmJC&amp;amp;jump_from=webapi&amp;amp;authKey=97qUJfsQoI70dUNcgBZ0C3HCZeiEn8inLT7pzg8x+KinbQwfIrHFu3dB2+aHMbRD&quot;&gt;Click to join our QQ group&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🤝 Contributing&lt;/h2&gt; 
&lt;p&gt;We love open source and welcome your brilliant ideas and code contributions (Pull Requests)! Please see &lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for code styling guidelines and local compilation instructions.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;A massive thanks to all of the outstanding contributors during our inception and growth phases:&lt;/strong&gt;&lt;/p&gt; 
&lt;a href=&quot;https://github.com/DearVa/Everywhere/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=DearVa/Everywhere&quot; alt=&quot;Everywhere Contributors Image&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;📄 License&lt;/h2&gt; 
&lt;p&gt;Copyright © 2026 Sylinko Inc. All rights reserved.&lt;/p&gt; 
&lt;p&gt;This project is released under the Business Source License 1.1. See the &lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file for more information. &lt;em&gt;For Third-Party dependencies and open-source component licenses, see &lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/ThirdPartyNotices.txt&quot;&gt;ThirdPartyNotices.txt&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt; 
&lt;h2&gt;💖 Sponsor&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://share.302.ai/5rzmPr&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/refs/heads/main/img/Sponsors/302-ai-en.jpg&quot; width=&quot;600&quot; alt=&quot;302.ai Sponsor&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://share.302.ai/5rzmPr&quot;&gt;302.AI&lt;/a&gt; is a pay-as-you-go enterprise AI resource hub that offers the latest and most comprehensive AI models and APIs on the market, along with a variety of ready-to-use online AI applications.&lt;/p&gt; 
&lt;h2&gt;🤩 Special Thanks&lt;/h2&gt; 
&lt;p&gt;The Code Signing Certificate for this project is generously sponsored by &lt;a href=&quot;https://www.certumcodesign.cn/&quot;&gt;Certum China&lt;/a&gt;, continuing their great contribution to the open-source community.&lt;/p&gt; 
&lt;h2&gt;📈 Star History&lt;/h2&gt; 
&lt;br /&gt; 
&lt;a href=&quot;https://www.star-history.com/#DearVa/Everywhere&amp;amp;Date&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://api.star-history.com/svg?repos=DearVa/Everywhere&amp;amp;type=Date&amp;amp;theme=dark&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/svg?repos=DearVa/Everywhere&amp;amp;type=Date&quot; /&gt; 
  &lt;img alt=&quot;Everywhere Star History Chart&quot; src=&quot;https://api.star-history.com/svg?repos=DearVa/Everywhere&amp;amp;type=Date&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt; 
&lt;br /&gt; 
&lt;p align=&quot;right&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DearVa/Everywhere/main/#readme-top&quot;&gt;⬆️ Back to top&lt;/a&gt;&lt;/p&gt; 
&lt;!-- MARKDOWN LINKS &amp; IMAGES --&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/971243074/d778eac3-ba78-492a-bba6-d0d95823fc77" medium="image" />
      
    </item>
    
    <item>
      <title>lucasg/Dependencies</title>
      <link>https://github.com/lucasg/Dependencies</link>
      <description>&lt;p&gt;A rewrite of the old legacy software &quot;depends.exe&quot; in C# for Windows devs to troubleshoot dll load dependencies issues.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Dependencies - An open-source modern Dependency Walker&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://ci.appveyor.com/project/lucasg/dependencies&quot;&gt;&lt;img src=&quot;https://ci.appveyor.com/api/projects/status/wtr5v8ksndbkkqxg?svg=true&quot; alt=&quot;Build status&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.11.1/Dependencies_x64_Release.zip&quot;&gt;Download here&lt;/a&gt;&lt;/h3&gt; 
&lt;h4&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.11.1/Dependencies_x64_Release_.without.peview.exe.zip&quot;&gt;(If you&#39;re running an AV, use this download instead)&lt;/a&gt;&lt;/h4&gt; 
&lt;p&gt;NB : due to &lt;a href=&quot;https://msdn.microsoft.com/en-us/library/ffkc918h.aspx&quot;&gt;limitations on /clr compilation&lt;/a&gt;, &lt;code&gt;Dependencies&lt;/code&gt; needs &lt;a href=&quot;https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads&quot;&gt;Visual C++ Redistributable&lt;/a&gt; installed to run properly.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img alt=&quot;Usage Exemple&quot; src=&quot;https://raw.githubusercontent.com/lucasg/Dependencies/master/screenshots/UsageExemple.gif&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;Dependencies&lt;/code&gt; is a rewrite of the legacy software &lt;a href=&quot;http://www.dependencywalker.com/&quot;&gt;Dependency Walker&lt;/a&gt; which was shipped along Windows SDKs, but whose development stopped around 2006. &lt;code&gt;Dependencies&lt;/code&gt; can help Windows developers troubleshooting their dll load dependencies issues.&lt;/p&gt; 
&lt;h2&gt;Releases&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.11.1/Dependencies_x64_Release.zip&quot;&gt;v1.11&lt;/a&gt; : 
  &lt;ul&gt; 
   &lt;li&gt;lots of bugfixes and incremental improvements&lt;/li&gt; 
   &lt;li&gt;covid pandemic&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.10/Dependencies_x64_Release.zip&quot;&gt;v1.10&lt;/a&gt; : 
  &lt;ul&gt; 
   &lt;li&gt;lots of bugfixes and incremental improvements&lt;/li&gt; 
   &lt;li&gt;support of Windows 8.1 apisets parsing&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.9/Dependencies_x64_Release.zip&quot;&gt;v1.9&lt;/a&gt; : 
  &lt;ul&gt; 
   &lt;li&gt;Display imports and exports the way Depends.exe does.&lt;/li&gt; 
   &lt;li&gt;Added user customization for search folders and working directory&lt;/li&gt; 
   &lt;li&gt;Added LLVM demangler to availables symbol demangling&lt;/li&gt; 
   &lt;li&gt;Fixed Wow64 FsRedirection bugs&lt;/li&gt; 
   &lt;li&gt;F5 can now refresh the analysis&lt;/li&gt; 
   &lt;li&gt;Added CLR assembly dependencies enumeration&lt;/li&gt; 
   &lt;li&gt;Added a packaging option without Peview.exe (which triggers some AV).&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.8/Dependencies_x64_Release.zip&quot;&gt;v1.8&lt;/a&gt; : 
  &lt;ul&gt; 
   &lt;li&gt;Add x86/x64 variants for Dependencies&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.7/Dependencies.zip&quot;&gt;v1.7&lt;/a&gt; : 
  &lt;ul&gt; 
   &lt;li&gt;Add CLI tool &quot;dependencies.exe&quot;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.6/Dependencies.zip&quot;&gt;v1.6&lt;/a&gt; : 
  &lt;ul&gt; 
   &lt;li&gt;Add appx packaging&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.5/Dependencies.zip&quot;&gt;v1.5&lt;/a&gt; : 
  &lt;ul&gt; 
   &lt;li&gt;Support of Sxs parsing&lt;/li&gt; 
   &lt;li&gt;Support of api set schema parsing&lt;/li&gt; 
   &lt;li&gt;API and Modules list can be filtered&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucasg/Dependencies/releases/download/v1.0/Dependencies.zip&quot;&gt;v1.0&lt;/a&gt; -- Initial release&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation and Usage&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;Dependencies&lt;/code&gt; is currently shipped as two binaries (no installer present) : &lt;code&gt;Dependencies.exe&lt;/code&gt; as a CLI tool and &lt;code&gt;DependenciesGui.exe&lt;/code&gt; for its GUI counterpart (see screenshot). Just click on one of the release numbers above (preferably the latest), download and uncompress the archive and run &lt;code&gt;DependenciesGui.exe&lt;/code&gt;. Since the binary is not signed, &lt;code&gt;SmartScreen&lt;/code&gt; might scream at runtime. &lt;code&gt;Dependencies&lt;/code&gt; also bundle &lt;code&gt;ClrPhTester.exe&lt;/code&gt;, a dumpbin-like executable used to test for non-regressions.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;Dependencies&lt;/code&gt; currently does not recursively resolve child imports when parsing a new PE since it can be really memory-hungry to do so ( it can over a GB even for &quot;simple&quot; PEs ). This behavior can be overridden (app-wide) via a property located in &quot;Options-&amp;gt;Properties-&amp;gt;Tree build behaviour&quot;.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img alt=&quot;User options&quot; src=&quot;https://raw.githubusercontent.com/lucasg/Dependencies/master/screenshots/UserOptions.png&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;Tree build behaviours available :&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;ChildOnly&lt;/code&gt; (default) : only process PE child imports and nothing beyond.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;RecursiveOnlyOnDirectImports&lt;/code&gt; : do not process delayload dlls.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;Recursive&lt;/code&gt; : Full recursive analysis. You better have time and RAM on your hands if you activate this setting :&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img alt=&quot;Yes that&#39;s 7 GB of RAM being consumed. I&#39;m impressed the application didn&#39;t even crash&quot; src=&quot;https://raw.githubusercontent.com/lucasg/Dependencies/master/screenshots/RamEater.PNG&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Limitations&lt;/h2&gt; 
&lt;p&gt;At the moment, &lt;code&gt;Dependencies&lt;/code&gt; recreates features and &quot;features&quot; of &lt;code&gt;depends.exe&lt;/code&gt;, which means :&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Only direct, forwarded and delay load dependencies are supported. Dynamic loading via &lt;code&gt;LoadLibrary&lt;/code&gt; are not supported (and probably won&#39;t ever be).&lt;/li&gt; 
 &lt;li&gt;Support of api set schema redirection since 1.5&lt;/li&gt; 
 &lt;li&gt;Checks between Api Imports and Exports.&lt;/li&gt; 
 &lt;li&gt;Minimal support of sxs private manifests search only.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Building&lt;/h2&gt; 
&lt;p&gt;Building is pretty straightforward. The only caveat is you need to select the &quot;Debug&quot; or &quot;Release&quot; configuration and &quot;x64&quot; or &quot;x86&quot; platform which may not be the default.&lt;/p&gt; 
&lt;h2&gt;Credits and licensing&lt;/h2&gt; 
&lt;p&gt;Special thanks to :&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/processhacker2/processhacker&quot;&gt;ProcessHacker2&lt;/a&gt; for : 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;phlib&lt;/code&gt;, which does the heavy lifting for processing PE informations.&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;peview&lt;/code&gt;, a powerful and lightweight PE informations viewer.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ButchersBoy/Dragablz&quot;&gt;Dragablz&lt;/a&gt; a C#/XAML library which implement dockable and dragable UI elements, and can recreate the &lt;a href=&quot;https://en.wikipedia.org/wiki/Multiple_document_interface&quot;&gt;MDI programming model&lt;/a&gt; in &lt;code&gt;WPF&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;@aionescu, @zodiacon and Quarkslab for their public infos on ApiSets schema.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.thomaslevesque.com&quot;&gt;Thomas levesque&#39;s blog&lt;/a&gt; which pretty much solved all my &lt;code&gt;WPF&lt;/code&gt; programming issues. His &lt;a href=&quot;http://www.thomaslevesque.com/2009/08/04/wpf-automatically-sort-a-gridview-continued/&quot;&gt;&lt;code&gt;AutoGridSort&lt;/code&gt;&lt;/a&gt; is used in this project&lt;/li&gt; 
 &lt;li&gt;Venkatesh Mookkan &lt;a href=&quot;https://www.codeproject.com/Articles/170095/WPF-Custom-Control-FilterControl-for-ListBox-ListV&quot;&gt;for it&#39;s &lt;code&gt;FilterControl&lt;/code&gt; for ListView used in this project&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nico/demumble&quot;&gt;demumble&lt;/a&gt; for demangling GCC symbols on Windows&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/7b5b6269910f1b0d54398cb6421fd2b9b9d4532dea2fefc39aeec4b8aef099ea/lucasg/Dependencies" medium="image" />
      
    </item>
    
  </channel>
</rss>
