<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>UI on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/ui/</link>
        <description>Recent content in UI on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sat, 06 Dec 2025 15:28:00 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/ui/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>react</title>
        <link>https://producthunt.programnotes.cn/en/p/react/</link>
        <pubDate>Sat, 06 Dec 2025 15:28:00 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/react/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1756745678835-00315541d465?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NjUwMDYwMzZ8&amp;ixlib=rb-4.1.0" alt="Featured image of post react" /&gt;&lt;h1 id=&#34;facebookreact&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;facebook/react&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;react--github-license-npm-version-runtime-build-and-test-compiler-typescript-prs-welcome&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;React&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react/blob/main/LICENSE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/license-MIT-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub license&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/react&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/npm/v/react.svg?style=flat&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;npm version&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react/actions/workflows/runtime_build_and_test.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/facebook/react/actions/workflows/runtime_build_and_test.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;(Runtime) Build and Test&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react/actions/workflows/compiler_typescript.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/facebook/react/actions/workflows/compiler_typescript.yml/badge.svg?branch=main&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;(Compiler) TypeScript&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://legacy.reactjs.org/docs/how-to-contribute.html#your-first-pull-request&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/PRs-welcome-brightgreen.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PRs Welcome&#34;
	
	
&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;React is a JavaScript library for building user interfaces.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Declarative:&lt;/strong&gt; React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes. Declarative views make your code more predictable, simpler to understand, and easier to debug.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Component-Based:&lt;/strong&gt; Build encapsulated components that manage their own state, then compose them to make complex UIs. Since component logic is written in JavaScript instead of templates, you can easily pass rich data through your app and keep the state out of the DOM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn Once, Write Anywhere:&lt;/strong&gt; We don&amp;rsquo;t make assumptions about the rest of your technology stack, so you can develop new features in React without rewriting existing code. React can also render on the server using &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/en&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node&lt;/a&gt; and power mobile apps using &lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;React Native&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Learn how to use React in your project&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;React has been designed for gradual adoption from the start, and &lt;strong&gt;you can use as little or as much React as you need&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Quick Start&lt;/a&gt; to get a taste of React.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/add-react-to-an-existing-project&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Add React to an Existing Project&lt;/a&gt; to use as little or as much React as you need.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/start-a-new-react-project&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create a New React App&lt;/a&gt; if you&amp;rsquo;re looking for a powerful JavaScript toolchain.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;p&gt;You can find the React documentation &lt;a class=&#34;link&#34; href=&#34;https://react.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;on the website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Getting Started&lt;/a&gt; page for a quick overview.&lt;/p&gt;
&lt;p&gt;The documentation is divided into several sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/tutorial-tic-tac-toe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/thinking-in-react&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thinking in React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/describing-the-ui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Describing the UI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/adding-interactivity&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Adding Interactivity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/managing-state&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Managing State&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn/escape-hatches&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Advanced Guides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/reference/react&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://react.dev/community&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Where to Get Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://legacy.reactjs.org/docs/how-to-contribute.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can improve it by sending pull requests to &lt;a class=&#34;link&#34; href=&#34;https://github.com/reactjs/react.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;this repository&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples
&lt;/h2&gt;&lt;p&gt;We have several examples &lt;a class=&#34;link&#34; href=&#34;https://react.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;on the website&lt;/a&gt;. Here is the first one to get you started:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-jsx&#34; data-lang=&#34;jsx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createRoot&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;react-dom/client&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;HelloMessage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Hello&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;root&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createRoot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementById&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;container&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;render&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;HelloMessage&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Taylor&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This example will render &amp;ldquo;Hello Taylor&amp;rdquo; into a container on the page.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll notice that we used an HTML-like syntax; &lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn#writing-markup-with-jsx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;we call it JSX&lt;/a&gt;. JSX is not required to use React, but it makes code more readable, and writing it feels like writing HTML.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;The main purpose of this repository is to continue evolving React core, making it faster and easier to use. Development of React happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving React.&lt;/p&gt;
&lt;h3 id=&#34;code-of-conduct&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.fb.com/codeofconduct&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code of Conduct&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read &lt;a class=&#34;link&#34; href=&#34;https://code.fb.com/codeofconduct&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;the full text&lt;/a&gt; so that you can understand what actions will and will not be tolerated.&lt;/p&gt;
&lt;h3 id=&#34;contributing-guide&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://legacy.reactjs.org/docs/how-to-contribute.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing Guide&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Read our &lt;a class=&#34;link&#34; href=&#34;https://legacy.reactjs.org/docs/how-to-contribute.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;contributing guide&lt;/a&gt; to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to React.&lt;/p&gt;
&lt;h3 id=&#34;good-first-issues&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react/labels/good%20first%20issue&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Good First Issues&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;To help you get your feet wet and get you familiar with our contribution process, we have a list of &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react/labels/good%20first%20issue&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;good first issues&lt;/a&gt; that contain bugs that have a relatively limited scope. This is a great place to get started.&lt;/p&gt;
&lt;h3 id=&#34;license&#34;&gt;License
&lt;/h3&gt;&lt;p&gt;React is &lt;a class=&#34;link&#34; href=&#34;./LICENSE&#34; &gt;MIT licensed&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>flutter</title>
        <link>https://producthunt.programnotes.cn/en/p/flutter/</link>
        <pubDate>Sun, 21 Sep 2025 15:23:40 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/flutter/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1597219911221-0c49f5d2a3b7?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTg0MzkzOTB8&amp;ixlib=rb-4.1.0" alt="Featured image of post flutter" /&gt;&lt;h1 id=&#34;flutterflutter&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/flutter/flutter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;flutter/flutter&lt;/a&gt;
&lt;/h1&gt;&lt;a href=&#34;https://flutter.dev/&#34;&gt;
  &lt;h1 align=&#34;center&#34;&gt;
    &lt;picture&gt;
      &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://storage.googleapis.com/cms-storage-bucket/6e19fee6b47b36ca613f.png&#34;&gt;
      &lt;img alt=&#34;Flutter&#34; src=&#34;https://storage.googleapis.com/cms-storage-bucket/c823e53b3a1a7b0d36a9.png&#34;&gt;
    &lt;/picture&gt;
  &lt;/h1&gt;
&lt;/a&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://flutter-dashboard.appspot.com/#/build?repo=flutter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://flutter-dashboard.appspot.com/api/public/build-status-badge?repo=flutter&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Flutter CI Status&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;./docs/contributing/Chat.md&#34; &gt;&lt;img src=&#34;https://img.shields.io/discord/608014603317936148?logo=discord&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Discord badge&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://twitter.com/intent/follow?screen_name=flutterdev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/twitter/follow/flutterdev.svg?style=social&amp;amp;label=Follow&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Twitter handle&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://bsky.app/profile/flutter.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Bluesky-0285FF?logo=bluesky&amp;amp;logoColor=fff&amp;amp;label=Follow%20me%20on&amp;amp;color=0285FF&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;BlueSky badge&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://codecov.io/gh/flutter/flutter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://codecov.io/gh/flutter/flutter/branch/master/graph/badge.svg?token=11yDrJU2M2&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;codecov&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://bestpractices.coreinfrastructure.org/projects/5631&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://bestpractices.coreinfrastructure.org/projects/5631/badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CII Best Practices&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://slsa.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://slsa.dev/images/gh-badge-level1.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;SLSA 1&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Flutter is Google&amp;rsquo;s SDK for crafting beautiful, fast user experiences for
mobile, web, and desktop from a single codebase. Flutter works with existing
code, is used by developers and organizations around the world, and is free and
open source.&lt;/p&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://flutter.dev/get-started/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Install Flutter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Flutter documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./docs/README.md&#34; &gt;Development wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/flutter/flutter/blob/main/CONTRIBUTING.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing to Flutter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For announcements about new releases, follow the
&lt;a class=&#34;link&#34; href=&#34;https://groups.google.com/forum/#!forum/flutter-announce&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;flutter-announce@googlegroups.com&lt;/a&gt;
mailing list. Our documentation also tracks &lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/release/breaking-changes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;breaking
changes&lt;/a&gt; across releases.&lt;/p&gt;
&lt;h2 id=&#34;terms-of-service&#34;&gt;Terms of service
&lt;/h2&gt;&lt;p&gt;The Flutter tool may occasionally download resources from Google servers. By
downloading or using the Flutter SDK, you agree to the Google Terms of Service:
&lt;a class=&#34;link&#34; href=&#34;https://policies.google.com/terms&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://policies.google.com/terms&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For example, when installed from GitHub (as opposed to from a prepackaged
archive), the Flutter tool will download the Dart SDK from Google servers
immediately when first run, as it is used to execute the &lt;code&gt;flutter&lt;/code&gt; tool itself.
This will also occur when Flutter is upgraded (e.g. by running the &lt;code&gt;flutter upgrade&lt;/code&gt; command).&lt;/p&gt;
&lt;h2 id=&#34;about-flutter&#34;&gt;About Flutter
&lt;/h2&gt;&lt;p&gt;We think Flutter will help you create beautiful, fast apps, with a productive,
extensible and open development model, whether you&amp;rsquo;re targeting iOS or Android,
web, Windows, macOS, Linux or embedding it as the UI toolkit for a platform of
your choice.&lt;/p&gt;
&lt;h3 id=&#34;beautiful-user-experiences&#34;&gt;Beautiful user experiences
&lt;/h3&gt;&lt;p&gt;We want to enable designers to deliver their full creative vision without being
forced to water it down due to limitations of the underlying framework.
Flutter&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/resources/inside-flutter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;layered architecture&lt;/a&gt; gives you control over every pixel on the
screen and its powerful compositing capabilities let you overlay and animate
graphics, video, text, and controls without limitation. Flutter includes a full
&lt;a class=&#34;link&#34; href=&#34;https://flutter.dev/widgets/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;set of widgets&lt;/a&gt; that deliver pixel-perfect experiences whether
you&amp;rsquo;re building for iOS (&lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/ui/widgets/cupertino&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cupertino&lt;/a&gt;) or other platforms (&lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/ui/widgets/material&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Material&lt;/a&gt;), along with
support for customizing or creating entirely new visual components.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;https://github.com/flutter/website/blob/main/src/content/assets/images/docs/homepage/reflectly-hero-600px.png?raw=true&#34; alt=&#34;Reflectly hero image&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;fast-results&#34;&gt;Fast results
&lt;/h3&gt;&lt;p&gt;Flutter is fast. It&amp;rsquo;s powered by hardware-accelerated 2D graphics
libraries like &lt;a class=&#34;link&#34; href=&#34;https://skia.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Skia&lt;/a&gt; (which underpins Chrome and Android) and
&lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/perf/impeller&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Impeller&lt;/a&gt;. We architected Flutter to
support glitch-free, jank-free graphics at the native speed of your device.&lt;/p&gt;
&lt;p&gt;Flutter code is powered by the world-class &lt;a class=&#34;link&#34; href=&#34;https://dart.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Dart platform&lt;/a&gt;, which enables
compilation to 32-bit and 64-bit ARM machine code for iOS and Android,
JavaScript and WebAssembly for the web, as well as Intel x64 and ARM
for desktop devices.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;https://github.com/flutter/website/blob/main/src/content/assets/images/docs/homepage/dart-diagram-small.png?raw=true&#34; alt=&#34;Dart diagram&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;productive-development&#34;&gt;Productive development
&lt;/h3&gt;&lt;p&gt;Flutter offers &lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/tools/hot-reload&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;stateful hot reload&lt;/a&gt;, allowing you to make changes to your code
and see the results instantly without restarting your app or losing its state.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/tools/hot-reload&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/flutter/website/blob/main/src/content/assets/images/docs/tools/android-studio/hot-reload.gif?raw=true&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Hot reload animation&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;extensible-and-open-model&#34;&gt;Extensible and open model
&lt;/h3&gt;&lt;p&gt;Flutter works with any development tool (or none at all), and also includes
editor plug-ins for both &lt;a class=&#34;link&#34; href=&#34;https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Visual Studio Code&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://plugins.jetbrains.com/plugin/9212-flutter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IntelliJ / Android Studio&lt;/a&gt;.
Flutter provides &lt;a class=&#34;link&#34; href=&#34;https://pub.dev/flutter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tens of thousands of packages&lt;/a&gt; to speed your
development, regardless of your target platform. And accessing other native code
is easy, with support for both FFI (&lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/platform-integration/android/c-interop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;on Android&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/platform-integration/ios/c-interop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;on iOS&lt;/a&gt;,
&lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/platform-integration/macos/c-interop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;on macOS&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/platform-integration/windows/building#integrating-with-windows&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;on Windows&lt;/a&gt;) as well as
&lt;a class=&#34;link&#34; href=&#34;https://docs.flutter.dev/development/platform-integration/platform-channels&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;platform-specific APIs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Flutter is a fully open-source project, and we welcome contributions.
Information on how to get started can be found in our
&lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;contributor guide&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>kotaemon</title>
        <link>https://producthunt.programnotes.cn/en/p/kotaemon/</link>
        <pubDate>Wed, 10 Sep 2025 15:28:12 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/kotaemon/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1676309973406-1153db3131ee?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTc0ODkyMzB8&amp;ixlib=rb-4.1.0" alt="Featured image of post kotaemon" /&gt;&lt;h1 id=&#34;cinnamonkotaemon&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Cinnamon/kotaemon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cinnamon/kotaemon&lt;/a&gt;
&lt;/h1&gt;&lt;div align=&#34;center&#34;&gt;
&lt;h1 id=&#34;kotaemon&#34;&gt;kotaemon
&lt;/h1&gt;&lt;p&gt;An open-source clean &amp;amp; customizable RAG UI for chatting with your documents. Built with both end users and
developers in mind.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Cinnamon/kotaemon/main/docs/images/preview-graph.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Preview&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://trendshift.io/repositories/11607&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://trendshift.io/api/badge/repositories/11607&#34; alt=&#34;Cinnamon%2Fkotaemon | Trendshift&#34; style=&#34;width: 250px; height: 55px;&#34; width=&#34;250&#34; height=&#34;55&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/spaces/cin-model/kotaemon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Live Demo #1&lt;/a&gt; |
&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/spaces/cin-model/kotaemon-demo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Live Demo #2&lt;/a&gt; |
&lt;a class=&#34;link&#34; href=&#34;https://cinnamon.github.io/kotaemon/online_install/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Online Install&lt;/a&gt; |
&lt;a class=&#34;link&#34; href=&#34;https://colab.research.google.com/drive/1eTfieec_UOowNizTJA1NjawBJH9y_1nn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Colab Notebook (Local RAG)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://cinnamon.github.io/kotaemon/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;User Guide&lt;/a&gt; |
&lt;a class=&#34;link&#34; href=&#34;https://cinnamon.github.io/kotaemon/development/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Developer Guide&lt;/a&gt; |
&lt;a class=&#34;link&#34; href=&#34;https://github.com/Cinnamon/kotaemon/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Feedback&lt;/a&gt; |
&lt;a class=&#34;link&#34; href=&#34;mailto:kotaemon.support@cinnamon.is&#34; &gt;Contact&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.python.org/downloads/release/python-31013/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/python-3.10&amp;#43;-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Python 3.10&amp;#43;&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/psf/black&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/code%20style-black-000000.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Code style: black&#34;
	
	
&gt;&lt;/a&gt;
&lt;a href=&#34;https://github.com/Cinnamon/kotaemon/pkgs/container/kotaemon&#34; target=&#34;_blank&#34;&gt;
&lt;img src=&#34;https://img.shields.io/badge/docker_pull-kotaemon:latest-brightgreen&#34; alt=&#34;docker pull ghcr.io/cinnamon/kotaemon:latest&#34;&gt;&lt;/a&gt;
&lt;img src=&#34;https://img.shields.io/github/downloads/Cinnamon/kotaemon/total.svg?label=downloads&amp;amp;color=blue&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;download&#34;
	
	
&gt;
&lt;a href=&#39;https://huggingface.co/spaces/cin-model/kotaemon-demo&#39;&gt;&lt;img src=&#39;https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue&#39;&gt;&lt;/a&gt;
&lt;a href=&#34;https://hellogithub.com/en/repository/d3141471a0244d5798bc654982b263eb&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=d3141471a0244d5798bc654982b263eb&amp;claim_uid=RLiD9UZ1rEHNaMf&amp;theme=small&#34; alt=&#34;Featured｜HelloGitHub&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- start-intro --&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction
&lt;/h2&gt;&lt;p&gt;This project serves as a functional RAG UI for both end users who want to do QA on their
documents and developers who want to build their own RAG pipeline.
&lt;br&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;+----------------------------------------------------------------------------+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;| End users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Those who use apps built with `kotaemon`.                       |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;| (You use an app like the one in the demo above)                            |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;|     +----------------------------------------------------------------+     |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;|     | Developers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Those who built with `kotaemon`.                   |     |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;|     | (You have `import kotaemon` somewhere in your project)         |     |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;|     |     +----------------------------------------------------+     |     |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;|     |     | Contributors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Those who make `kotaemon` better.    |     |     |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;|     |     | (You make PR to this repo)                         |     |     |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;|     |     +----------------------------------------------------+     |     |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;|     +----------------------------------------------------------------+     |&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;+----------------------------------------------------------------------------+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;for-end-users&#34;&gt;For end users
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clean &amp;amp; Minimalistic UI&lt;/strong&gt;: A user-friendly interface for RAG-based QA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support for Various LLMs&lt;/strong&gt;: Compatible with LLM API providers (OpenAI, AzureOpenAI, Cohere, etc.) and local LLMs (via &lt;code&gt;ollama&lt;/code&gt; and &lt;code&gt;llama-cpp-python&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Easy Installation&lt;/strong&gt;: Simple scripts to get you started quickly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;for-developers&#34;&gt;For developers
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Framework for RAG Pipelines&lt;/strong&gt;: Tools to build your own RAG-based document QA pipeline.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customizable UI&lt;/strong&gt;: See your RAG pipeline in action with the provided UI, built with &lt;a href=&#39;https://github.com/gradio-app/gradio&#39;&gt;Gradio &lt;img src=&#39;https://img.shields.io/github/stars/gradio-app/gradio&#39;&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gradio Theme&lt;/strong&gt;: If you use Gradio for development, check out our theme here: &lt;a class=&#34;link&#34; href=&#34;https://github.com/lone17/kotaemon-gradio-theme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;kotaemon-gradio-theme&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;key-features&#34;&gt;Key Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Host your own document QA (RAG) web-UI&lt;/strong&gt;: Support multi-user login, organize your files in private/public collections, collaborate and share your favorite chat with others.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Organize your LLM &amp;amp; Embedding models&lt;/strong&gt;: Support both local LLMs &amp;amp; popular API providers (OpenAI, Azure, Ollama, Groq).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hybrid RAG pipeline&lt;/strong&gt;: Sane default RAG pipeline with hybrid (full-text &amp;amp; vector) retriever and re-ranking to ensure best retrieval quality.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Multi-modal QA support&lt;/strong&gt;: Perform Question Answering on multiple documents with figures and tables support. Support multi-modal document parsing (selectable options on UI).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Advanced citations with document preview&lt;/strong&gt;: By default the system will provide detailed citations to ensure the correctness of LLM answers. View your citations (incl. relevant score) directly in the &lt;em&gt;in-browser PDF viewer&lt;/em&gt; with highlights. Warning when retrieval pipeline return low relevant articles.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Support complex reasoning methods&lt;/strong&gt;: Use question decomposition to answer your complex/multi-hop question. Support agent-based reasoning with &lt;code&gt;ReAct&lt;/code&gt;, &lt;code&gt;ReWOO&lt;/code&gt; and other agents.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configurable settings UI&lt;/strong&gt;: You can adjust most important aspects of retrieval &amp;amp; generation process on the UI (incl. prompts).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Extensible&lt;/strong&gt;: Being built on Gradio, you are free to customize or add any UI elements as you like. Also, we aim to support multiple strategies for document indexing &amp;amp; retrieval. &lt;code&gt;GraphRAG&lt;/code&gt; indexing pipeline is provided as an example.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Cinnamon/kotaemon/main/docs/images/preview.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Preview&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;If you are not a developer and just want to use the app, please check out our easy-to-follow &lt;a class=&#34;link&#34; href=&#34;https://cinnamon.github.io/kotaemon/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;User Guide&lt;/a&gt;. Download the &lt;code&gt;.zip&lt;/code&gt; file from the &lt;a class=&#34;link&#34; href=&#34;https://github.com/Cinnamon/kotaemon/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest release&lt;/a&gt; to get all the newest features and bug fixes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;system-requirements&#34;&gt;System requirements
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.python.org/downloads/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Python&lt;/a&gt; &amp;gt;= 3.10&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.docker.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt;: optional, if you &lt;a class=&#34;link&#34; href=&#34;#with-docker-recommended&#34; &gt;install with Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.unstructured.io/open-source/installation/full-installation#full-installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Unstructured&lt;/a&gt; if you want to process files other than &lt;code&gt;.pdf&lt;/code&gt;, &lt;code&gt;.html&lt;/code&gt;, &lt;code&gt;.mhtml&lt;/code&gt;, and &lt;code&gt;.xlsx&lt;/code&gt; documents. Installation steps differ depending on your operating system. Please visit the link and follow the specific instructions provided there.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;with-docker-recommended&#34;&gt;With Docker (recommended)
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;We support both &lt;code&gt;lite&lt;/code&gt; &amp;amp; &lt;code&gt;full&lt;/code&gt; version of Docker images. With &lt;code&gt;full&lt;/code&gt; version, the extra packages of &lt;code&gt;unstructured&lt;/code&gt; will be installed, which can support additional file types (&lt;code&gt;.doc&lt;/code&gt;, &lt;code&gt;.docx&lt;/code&gt;, &amp;hellip;) but the cost is larger docker image size. For most users, the &lt;code&gt;lite&lt;/code&gt; image should work well in most cases.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To use the &lt;code&gt;full&lt;/code&gt; version.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-e &lt;span class=&#34;nv&#34;&gt;GRADIO_SERVER_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.0.0.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-e &lt;span class=&#34;nv&#34;&gt;GRADIO_SERVER_PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;7860&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v ./ktem_app_data:/app/ktem_app_data &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p 7860:7860 -it --rm &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghcr.io/cinnamon/kotaemon:main-full
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To use the &lt;code&gt;full&lt;/code&gt; version with bundled &lt;strong&gt;Ollama&lt;/strong&gt; for &lt;em&gt;local / private RAG&lt;/em&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# change image name to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run &amp;lt;...&amp;gt; ghcr.io/cinnamon/kotaemon:main-ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To use the &lt;code&gt;lite&lt;/code&gt; version.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;c1&#34;&gt;# change image name to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; docker run &amp;lt;...&amp;gt; ghcr.io/cinnamon/kotaemon:main-lite
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We currently support and test two platforms: &lt;code&gt;linux/amd64&lt;/code&gt; and &lt;code&gt;linux/arm64&lt;/code&gt; (for newer Mac). You can specify the platform by passing &lt;code&gt;--platform&lt;/code&gt; in the &lt;code&gt;docker run&lt;/code&gt; command. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# To run docker with platform linux/arm64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-e &lt;span class=&#34;nv&#34;&gt;GRADIO_SERVER_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.0.0.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-e &lt;span class=&#34;nv&#34;&gt;GRADIO_SERVER_PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;7860&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v ./ktem_app_data:/app/ktem_app_data &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p 7860:7860 -it --rm &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--platform linux/arm64 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghcr.io/cinnamon/kotaemon:main-lite
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once everything is set up correctly, you can go to &lt;code&gt;http://localhost:7860/&lt;/code&gt; to access the WebUI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We use &lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GHCR&lt;/a&gt; to store docker images, all images can be found &lt;a class=&#34;link&#34; href=&#34;https://github.com/Cinnamon/kotaemon/pkgs/container/kotaemon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;without-docker&#34;&gt;Without Docker
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone and install required packages on a fresh python environment.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# optional (setup env)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda create -n kotaemon &lt;span class=&#34;nv&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;3.10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda activate kotaemon
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# clone this repo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Cinnamon/kotaemon
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; kotaemon
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;libs/kotaemon[all]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;libs/ktem&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a &lt;code&gt;.env&lt;/code&gt; file in the root of this project. Use &lt;code&gt;.env.example&lt;/code&gt; as a template&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;.env&lt;/code&gt; file is there to serve use cases where users want to pre-config the models before starting up the app (e.g. deploy the app on HF hub). The file will only be used to populate the db once upon the first run, it will no longer be used in consequent runs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(Optional) To enable in-browser &lt;code&gt;PDF_JS&lt;/code&gt; viewer, download &lt;a class=&#34;link&#34; href=&#34;https://github.com/mozilla/pdf.js/releases/download/v4.0.379/pdfjs-4.0.379-dist.zip&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PDF_JS_DIST&lt;/a&gt; then extract it to &lt;code&gt;libs/ktem/ktem/assets/prebuilt&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&#34;https://raw.githubusercontent.com/Cinnamon/kotaemon/main/docs/images/pdf-viewer-setup.png&#34; alt=&#34;pdf-setup&#34; width=&#34;300&#34;&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;
&lt;p&gt;Start the web server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python app.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;The app will be automatically launched in your browser.&lt;/li&gt;
&lt;li&gt;Default username and password are both &lt;code&gt;admin&lt;/code&gt;. You can set up additional users directly through the UI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Cinnamon/kotaemon/main/docs/images/chat-tab.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Chat tab&#34;
	
	
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check the &lt;code&gt;Resources&lt;/code&gt; tab and &lt;code&gt;LLMs and Embeddings&lt;/code&gt; and ensure that your &lt;code&gt;api_key&lt;/code&gt; value is set correctly from your &lt;code&gt;.env&lt;/code&gt; file. If it is not set, you can set it there.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;setup-graphrag&#34;&gt;Setup GraphRAG
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
Official MS GraphRAG indexing only works with OpenAI or Ollama API.
We recommend most users to use NanoGraphRAG implementation for straightforward integration with Kotaemon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;details&gt;
&lt;summary&gt;Setup Nano GRAPHRAG&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;Install nano-GraphRAG: &lt;code&gt;pip install nano-graphrag&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nano-graphrag&lt;/code&gt; install might introduce version conflicts, see &lt;a class=&#34;link&#34; href=&#34;https://github.com/Cinnamon/kotaemon/issues/440&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;this issue&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;To quickly fix: &lt;code&gt;pip uninstall hnswlib chroma-hnswlib &amp;amp;&amp;amp; pip install chroma-hnswlib&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Launch Kotaemon with &lt;code&gt;USE_NANO_GRAPHRAG=true&lt;/code&gt; environment variable.&lt;/li&gt;
&lt;li&gt;Set your default LLM &amp;amp; Embedding models in Resources setting and it will be recognized automatically from NanoGraphRAG.&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Setup LIGHTRAG&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;Install LightRAG: &lt;code&gt;pip install git+https://github.com/HKUDS/LightRAG.git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LightRAG&lt;/code&gt; install might introduce version conflicts, see &lt;a class=&#34;link&#34; href=&#34;https://github.com/Cinnamon/kotaemon/issues/440&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;this issue&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;To quickly fix: &lt;code&gt;pip uninstall hnswlib chroma-hnswlib &amp;amp;&amp;amp; pip install chroma-hnswlib&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Launch Kotaemon with &lt;code&gt;USE_LIGHTRAG=true&lt;/code&gt; environment variable.&lt;/li&gt;
&lt;li&gt;Set your default LLM &amp;amp; Embedding models in Resources setting and it will be recognized automatically from LightRAG.&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Setup MS GRAPHRAG&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Non-Docker Installation&lt;/strong&gt;: If you are not using Docker, install GraphRAG with the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;graphrag&amp;lt;=0.3.6&amp;#34;&lt;/span&gt; future
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Setting Up API KEY&lt;/strong&gt;: To use the GraphRAG retriever feature, ensure you set the &lt;code&gt;GRAPHRAG_API_KEY&lt;/code&gt; environment variable. You can do this directly in your environment or by adding it to a &lt;code&gt;.env&lt;/code&gt; file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Using Local Models and Custom Settings&lt;/strong&gt;: If you want to use GraphRAG with local models (like &lt;code&gt;Ollama&lt;/code&gt;) or customize the default LLM and other configurations, set the &lt;code&gt;USE_CUSTOMIZED_GRAPHRAG_SETTING&lt;/code&gt; environment variable to true. Then, adjust your settings in the &lt;code&gt;settings.yaml.example&lt;/code&gt; file.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id=&#34;setup-local-models-for-localprivate-rag&#34;&gt;Setup Local Models (for local/private RAG)
&lt;/h3&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;docs/local_model.md&#34; &gt;Local model setup&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;setup-multimodal-document-parsing-ocr-table-parsing-figure-extraction&#34;&gt;Setup multimodal document parsing (OCR, table parsing, figure extraction)
&lt;/h3&gt;&lt;p&gt;These options are available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/en-us/products/ai-services/ai-document-intelligence&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Azure Document Intelligence (API)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developer.adobe.com/document-services/docs/overview/pdf-extract-api/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Adobe PDF Extract (API)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/DS4SD/docling&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docling (local, open-source)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;To use Docling, first install required dependencies: &lt;code&gt;pip install docling&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Select corresponding loaders in &lt;code&gt;Settings -&amp;gt; Retrieval Settings -&amp;gt; File loader&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;customize-your-application&#34;&gt;Customize your application
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;By default, all application data is stored in the &lt;code&gt;./ktem_app_data&lt;/code&gt; folder. You can back up or copy this folder to transfer your installation to a new machine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For advanced users or specific use cases, you can customize these files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;flowsettings.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;flowsettingspy&#34;&gt;&lt;code&gt;flowsettings.py&lt;/code&gt;
&lt;/h4&gt;&lt;p&gt;This file contains the configuration of your application. You can use the example
&lt;a class=&#34;link&#34; href=&#34;flowsettings.py&#34; &gt;here&lt;/a&gt; as the starting point.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Notable settings&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# setup your preferred document store (with full-text search capabilities)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;KH_DOCSTORE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Elasticsearch&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;LanceDB&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SimpleFileDocumentStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# setup your preferred vectorstore (for vector-based search)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;KH_VECTORSTORE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ChromaDB&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;LanceDB&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;InMemory&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Milvus&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qdrant&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Enable / disable multimodal QA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;KH_REASONINGS_USE_MULTIMODAL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Setup your new reasoning pipeline or modify existing one.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;KH_REASONINGS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;ktem.reasoning.simple.FullQAPipeline&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;ktem.reasoning.simple.FullDecomposeQAPipeline&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;ktem.reasoning.react.ReactAgentPipeline&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;ktem.reasoning.rewoo.RewooAgentPipeline&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;h4 id=&#34;env&#34;&gt;&lt;code&gt;.env&lt;/code&gt;
&lt;/h4&gt;&lt;p&gt;This file provides another way to configure your models and credentials.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Configure model via the .env file&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Alternatively, you can configure the models via the &lt;code&gt;.env&lt;/code&gt; file with the information needed to connect to the LLMs. This file is located in the folder of the application. If you don&amp;rsquo;t see it, you can create one.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Currently, the following providers are supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenAI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the &lt;code&gt;.env&lt;/code&gt; file, set the &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; variable with your OpenAI API key in order
to enable access to OpenAI&amp;rsquo;s models. There are other variables that can be modified,
please feel free to edit them to fit your case. Otherwise, the default parameter should
work for most people.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_BASE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://api.openai.com/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;your OpenAI API key here&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_CHAT_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-3.5-turbo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_EMBEDDINGS_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;text-embedding-ada-002
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Azure OpenAI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For OpenAI models via Azure platform, you need to provide your Azure endpoint and API
key. Your might also need to provide your developments&amp;rsquo; name for the chat model and the
embedding model depending on how you set up Azure development.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;AZURE_OPENAI_ENDPOINT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;AZURE_OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_VERSION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2024-02-15-preview
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;AZURE_OPENAI_CHAT_DEPLOYMENT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-35-turbo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;text-embedding-ada-002
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Local Models&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Using &lt;code&gt;ollama&lt;/code&gt; OpenAI compatible server:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install &lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ollama&lt;/a&gt; and start the application.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pull your model, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull llama3.1:8b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull nomic-embed-text
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set the model names on web UI and make it as default:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Cinnamon/kotaemon/main/docs/images/models.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Models&#34;
	
	
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Using &lt;code&gt;GGUF&lt;/code&gt; with &lt;code&gt;llama-cpp-python&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can search and download a LLM to be ran locally from the &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugging Face Hub&lt;/a&gt;. Currently, these model formats are supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;GGUF&lt;/p&gt;
&lt;p&gt;You should choose a model whose size is less than your device&amp;rsquo;s memory and should leave
about 2 GB. For example, if you have 16 GB of RAM in total, of which 12 GB is available,
then you should choose a model that takes up at most 10 GB of RAM. Bigger models tend to
give better generation but also take more processing time.&lt;/p&gt;
&lt;p&gt;Here are some recommendations and their size in memory:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat-GGUF/resolve/main/qwen1_5-1_8b-chat-q8_0.gguf?download=true&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen1.5-1.8B-Chat-GGUF&lt;/a&gt;: around 2 GB&lt;/p&gt;
&lt;p&gt;Add a new LlamaCpp model with the provided model name on the web UI.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;adding-your-own-rag-pipeline&#34;&gt;Adding your own RAG pipeline
&lt;/h3&gt;&lt;h4 id=&#34;custom-reasoning-pipeline&#34;&gt;Custom Reasoning Pipeline
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Check the default pipeline implementation in &lt;a class=&#34;link&#34; href=&#34;libs/ktem/ktem/reasoning/simple.py&#34; &gt;here&lt;/a&gt;. You can make quick adjustment to how the default QA pipeline work.&lt;/li&gt;
&lt;li&gt;Add new &lt;code&gt;.py&lt;/code&gt; implementation in &lt;code&gt;libs/ktem/ktem/reasoning/&lt;/code&gt; and later include it in &lt;code&gt;flowssettings&lt;/code&gt; to enable it on the UI.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;custom-indexing-pipeline&#34;&gt;Custom Indexing Pipeline
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Check sample implementation in &lt;code&gt;libs/ktem/ktem/index/file/graph&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;(more instruction WIP).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- end-intro --&gt;
&lt;h2 id=&#34;citation&#34;&gt;Citation
&lt;/h2&gt;&lt;p&gt;Please cite this project as&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-BibTeX&#34; data-lang=&#34;BibTeX&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nc&#34;&gt;@misc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nl&#34;&gt;kotaemon2024&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;{Kotaemon - An open-source RAG-based tool for chatting with any content.}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;author&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;{The Kotaemon Team}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;year&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;{2024}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;na&#34;&gt;howpublished&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;{\url{https://github.com/Cinnamon/kotaemon}}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;star-history&#34;&gt;Star History
&lt;/h2&gt;&lt;a href=&#34;https://star-history.com/#Cinnamon/kotaemon&amp;Date&#34;&gt;
 &lt;picture&gt;
   &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/svg?repos=Cinnamon/kotaemon&amp;type=Date&amp;theme=dark&#34; /&gt;
   &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/svg?repos=Cinnamon/kotaemon&amp;type=Date&#34; /&gt;
   &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/svg?repos=Cinnamon/kotaemon&amp;type=Date&#34; /&gt;
 &lt;/picture&gt;
&lt;/a&gt;
&lt;h2 id=&#34;contribution&#34;&gt;Contribution
&lt;/h2&gt;&lt;p&gt;Since our project is actively being developed, we greatly value your feedback and contributions. Please see our &lt;a class=&#34;link&#34; href=&#34;https://github.com/Cinnamon/kotaemon/blob/main/CONTRIBUTING.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing Guide&lt;/a&gt; to get started. Thank you to all our contributors!&lt;/p&gt;
&lt;a href=&#34;https://github.com/Cinnamon/kotaemon/graphs/contributors&#34;&gt;
  &lt;img src=&#34;https://contrib.rocks/image?repo=Cinnamon/kotaemon&#34; /&gt;
&lt;/a&gt;
</description>
        </item>
        <item>
        <title>base-ui</title>
        <link>https://producthunt.programnotes.cn/en/p/base-ui/</link>
        <pubDate>Sat, 28 Jun 2025 15:28:55 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/base-ui/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1496046596374-a16aa8b8ae63?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTEwOTU2MjR8&amp;ixlib=rb-4.1.0" alt="Featured image of post base-ui" /&gt;&lt;h1 id=&#34;muibase-ui&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mui/base-ui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mui/base-ui&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;baseui&#34;&gt;Base UI
&lt;/h1&gt;&lt;p&gt;From the creators of Radix, Floating UI, and Material UI, Base UI is an unstyled UI component library for building accessible user interfaces.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;p&gt;To get started, check out the &lt;a class=&#34;link&#34; href=&#34;https://base-ui.com/react/overview/quick-start&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Base UI documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;Read our &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;contributing guide&lt;/a&gt; to learn about our development process, how to propose bug fixes and improvements, and how to build and test your changes.&lt;/p&gt;
&lt;h2 id=&#34;releases&#34;&gt;Releases
&lt;/h2&gt;&lt;p&gt;To see the latest updates, check out the &lt;a class=&#34;link&#34; href=&#34;https://base-ui.com/react/overview/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;releases&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;community&#34;&gt;Community
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Discord&lt;/strong&gt; For community support, questions, and tips, join our &lt;a class=&#34;link&#34; href=&#34;https://discord.gg/g6C3hUtuxz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;X&lt;/strong&gt; To stay up-to-date on new releases and announcements follow &lt;a class=&#34;link&#34; href=&#34;https://x.com/base_ui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Base UI on X&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bluesky&lt;/strong&gt; We&amp;rsquo;re also on &lt;a class=&#34;link&#34; href=&#34;https://bsky.app/profile/base-ui.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bluesky&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;team&#34;&gt;Team
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Colm Tuite&lt;/strong&gt; (Radix) &lt;a class=&#34;link&#34; href=&#34;https://x.com/colmtuite&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@colmtuite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vlad Moroz&lt;/strong&gt; (Radix) &lt;a class=&#34;link&#34; href=&#34;https://x.com/vladyslavmoroz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@vladyslavmoroz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;James Nelson&lt;/strong&gt; (Floating UI) &lt;a class=&#34;link&#34; href=&#34;https://x.com/atomiksdev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@atomiksdev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Michał Dudak&lt;/strong&gt; (Material UI) &lt;a class=&#34;link&#34; href=&#34;https://x.com/michaldudak&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@michaldudak&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Marija Najdova&lt;/strong&gt; (Material UI + Fluent UI) &lt;a class=&#34;link&#34; href=&#34;https://x.com/marijanajdova&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@marijanajdova&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Albert Yu&lt;/strong&gt; (Material UI) &lt;a class=&#34;link&#34; href=&#34;https://github.com/mj12albert&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mj12albert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;This project is licensed under the terms of the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/LICENSE&#34; &gt;MIT license&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>microui</title>
        <link>https://producthunt.programnotes.cn/en/p/microui/</link>
        <pubDate>Sat, 28 Jun 2025 15:28:15 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/microui/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1590276886530-199d30a73a6d?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTEwOTU2MjR8&amp;ixlib=rb-4.1.0" alt="Featured image of post microui" /&gt;&lt;h1 id=&#34;rximicroui&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/rxi/microui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rxi/microui&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;microui&#34;&gt;&lt;img src=&#34;https://user-images.githubusercontent.com/3920290/75171571-be83c500-5723-11ea-8a50-504cc2ae1109.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;microui&#34;
	
	
&gt;
&lt;/h1&gt;&lt;p&gt;A &lt;em&gt;tiny&lt;/em&gt;, portable, immediate-mode UI library written in ANSI C&lt;/p&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Tiny: around &lt;code&gt;1100 sloc&lt;/code&gt; of ANSI C&lt;/li&gt;
&lt;li&gt;Works within a fixed-sized memory region: no additional memory is allocated&lt;/li&gt;
&lt;li&gt;Built-in controls: window, scrollable panel, button, slider, textbox, label,
checkbox, wordwrapped text&lt;/li&gt;
&lt;li&gt;Works with any rendering system that can draw rectangles and text&lt;/li&gt;
&lt;li&gt;Designed to allow the user to easily add custom controls&lt;/li&gt;
&lt;li&gt;Simple layout system&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;example&#34;&gt;Example
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://user-images.githubusercontent.com/3920290/75187058-2b598800-5741-11ea-9358-38caf59f8791.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;example&#34;
	
	
&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mu_begin_window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;My Window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;mu_rect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;140&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;86&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;mu_layout_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;mu_label&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;First:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mu_button&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Button1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Button1 pressed&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;mu_label&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Second:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mu_button&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Button2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;mu_open_popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;My Popup&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mu_begin_popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;My Popup&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;mu_label&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Hello world!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;mu_end_popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;mu_end_window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;screenshot&#34;&gt;Screenshot
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://user-images.githubusercontent.com/3920290/75188642-63ae9580-5744-11ea-9eee-d753ff5c0aa7.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;screenshot&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://floooh.github.io/sokol-html5/sgl-microui-sapp.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Browser Demo&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;See &lt;a class=&#34;link&#34; href=&#34;doc/usage.md&#34; &gt;&lt;code&gt;doc/usage.md&lt;/code&gt;&lt;/a&gt; for usage instructions&lt;/li&gt;
&lt;li&gt;See the &lt;a class=&#34;link&#34; href=&#34;demo&#34; &gt;&lt;code&gt;demo&lt;/code&gt;&lt;/a&gt; directory for a usage example&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes
&lt;/h2&gt;&lt;p&gt;The library expects the user to provide input and handle the resultant drawing
commands, it does not do any drawing itself.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;The library is designed to be lightweight, providing a foundation to which you
can easily add custom controls and UI elements; pull requests adding additional
features will likely not be merged. Bug reports are welcome.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;This library is free software; you can redistribute it and/or modify it under
the terms of the MIT license. See &lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;LICENSE&lt;/a&gt; for details.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>filebrowser</title>
        <link>https://producthunt.programnotes.cn/en/p/filebrowser/</link>
        <pubDate>Tue, 17 Jun 2025 15:30:09 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/filebrowser/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1654483143648-cb97703e2979?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTAxNDUzNDN8&amp;ixlib=rb-4.1.0" alt="Featured image of post filebrowser" /&gt;&lt;h1 id=&#34;gtsteffaniakfilebrowser&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gtsteffaniak/filebrowser&lt;/a&gt;
&lt;/h1&gt;&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://goreportcard.com/report/github.com/gtsteffaniak/filebrowser/backend&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://goreportcard.com/badge/github.com/gtsteffaniak/filebrowser/backend&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Go Report Card&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.codacy.com/gh/gtsteffaniak/filebrowser/dashboard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://app.codacy.com/project/badge/Grade/1c48cfb7646d4009aa8c6f71287670b8&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Codacy Badge&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/release/gtsteffaniak/filebrowser/all.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;latest version&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/gtstef/filebrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/docker/pulls/gtstef/filebrowser?label=latest%20Docker%20pulls&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;DockerHub Pulls&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.apache.org/licenses/LICENSE-2.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/License-Apache_2.0-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Apache-2.0 License&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.paypal.com/donate/?business=W5XKNXHJM2WPE&amp;amp;no_recurring=0&amp;amp;currency_code=USD&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Donate&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;img width=&#34;150&#34; src=&#34;https://github.com/user-attachments/assets/59986a2a-f960-4536-aa35-4a9a7c98ad48&#34; title=&#34;Logo&#34;&gt;
  &lt;h3&gt;FileBrowser Quantum&lt;/h3&gt;
  The best free self-hosted web-based file manager.
  &lt;br/&gt;&lt;br/&gt;
  &lt;img width=&#34;800&#34; src=&#34;https://github.com/user-attachments/assets/95af22fa-7760-4f7b-9c20-51fdcfe8f4ea&#34; title=&#34;Main Screenshot&#34;&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
There is no stable version &amp;ndash; :construction: planned for 2025. (&lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/discussions/628&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Read more&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Poll: &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/discussions/787&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;how much RAM does your install use?&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;about&#34;&gt;About
&lt;/h2&gt;&lt;p&gt;FileBrowser Quantum provides an easy way to access and manage your files from the web. It has has a web page interface that allows you to create secure shared links, users with their own specific permissions and settings, and offers a great viewing experience for many file types.&lt;/p&gt;
&lt;p&gt;This version is called &amp;ldquo;Quantum&amp;rdquo; because it packs tons of advanced features into a tiny easy to run file. Unlike the majority of alternative options, FileBrowser Quantum is simple to install and easy to configure.&lt;/p&gt;
&lt;p&gt;The goal for this repo is to become the best open-source self-hosted file browsing application that exists &amp;ndash; &lt;strong&gt;all for free&lt;/strong&gt;. This repo will always be free and open-source.&lt;/p&gt;
&lt;p&gt;Ready to try it out? See &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/Getting-Started&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Getting Started Wiki&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;how-its-different&#34;&gt;How its different
&lt;/h2&gt;&lt;p&gt;FileBrowser Quantum is a massive fork of the file browser open-source project with the following changes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;✅ Multiple sources support&lt;/li&gt;
&lt;li&gt;✅ Login support for OIDC, password + 2FA, and proxy.&lt;/li&gt;
&lt;li&gt;✅ Revamped UI&lt;/li&gt;
&lt;li&gt;✅ Simplified configuration via &lt;code&gt;config.yaml&lt;/code&gt; config file.&lt;/li&gt;
&lt;li&gt;✅ Ultra-efficient &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/Indexing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;indexing&lt;/a&gt; and real-time updates
&lt;ul&gt;
&lt;li&gt;Real-time search results as you type.&lt;/li&gt;
&lt;li&gt;Real-time monitoring and updates in the UI.&lt;/li&gt;
&lt;li&gt;Search supports file and folder sizes, along with various filters.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;✅ Better listing browsing
&lt;ul&gt;
&lt;li&gt;More file type previews, such as &lt;strong&gt;office&lt;/strong&gt; and &lt;strong&gt;video&lt;/strong&gt; file previews&lt;/li&gt;
&lt;li&gt;Instantly switches view modes and sort order without reloading data.&lt;/li&gt;
&lt;li&gt;Folder sizes are displayed.&lt;/li&gt;
&lt;li&gt;Navigating remembers the last scroll position.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;✅ Developer API support
&lt;ul&gt;
&lt;li&gt;Ability to create long-lived API Tokens.&lt;/li&gt;
&lt;li&gt;A helpful Swagger page is available at &lt;code&gt;/swagger&lt;/code&gt; endpoint for API enabled users.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Notable features that this fork &lt;em&gt;does not&lt;/em&gt; have (removed):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;:construction: jobs are not supported yet.&lt;/li&gt;
&lt;li&gt;:construction: rules are not supported yet.&lt;/li&gt;
&lt;li&gt;❌ shell commands are completely removed and will not be returned.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
Every file and directory in the source gets indexed (by default). This enables powerful features such as instant search, but large source filesystems can increase your system requirements. &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/Indexing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;See indexing wiki&lt;/a&gt; for more info.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;FileBrowser Quantum differs significantly from the original version. Many of these changes required a significant overhaul. Creating a fork was a necessary process to make the program better. There have been many growing pains, but a stable release is planned and coming soon.&lt;/p&gt;
&lt;h2 id=&#34;the-ui&#34;&gt;The UI
&lt;/h2&gt;&lt;p&gt;The UI has a simple three-component navigation system:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;(Left) Multi-action button with slide-out panel.&lt;/li&gt;
&lt;li&gt;(Middle) The powerful search bar.&lt;/li&gt;
&lt;li&gt;(Right) The view change toggle.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All other functions are moved either into the action menu or pop-up menus.
If the action does not depend on context, it will exist in the slide-out
action panel. If the action is available based on context, it will show up as
a pop-up menu.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img width=&#34;1000&#34; src=&#34;https://github.com/user-attachments/assets/aa32b05c-f917-47bb-b07f-857edc5e47f7&#34; title=&#34;Search GIF&#34;&gt;
&lt;/p&gt;
&lt;h2 id=&#34;install-and-configuration&#34;&gt;Install and Configuration
&lt;/h2&gt;&lt;p&gt;Check out the &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/Getting-Started&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Getting Started Wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For help configuring your filebrowser see &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/Configuration-And-Examples&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Configuration Wiki&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;command-line-usage&#34;&gt;Command Line Usage
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/CLI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CLI Wiki&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;api-usage&#34;&gt;API Usage
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/API&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;API Wiki&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;office-file-support&#34;&gt;Office File Support
&lt;/h2&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/Office-Support#adding-open-office-integration-for-docker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Office Support Wiki&lt;/a&gt; on how to enable office file editing and office-related features.&lt;/p&gt;
&lt;h2 id=&#34;migration-from-the-original-filebrowser&#34;&gt;Migration from the original filebrowser
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/Migration&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Migration Wiki&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;other-questions&#34;&gt;Other Questions
&lt;/h2&gt;&lt;p&gt;For more, see the &lt;a class=&#34;link&#34; href=&#34;https://github.com/gtsteffaniak/filebrowser/wiki/Q&amp;amp;A&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Q&amp;amp;A Wiki&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;comparison-chart&#34;&gt;Comparison Chart
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Application Name&lt;/th&gt;
          &lt;th&gt;&lt;img width=&#34;48&#34; src=&#34;https://github.com/user-attachments/assets/59986a2a-f960-4536-aa35-4a9a7c98ad48&#34; &gt; Quantum&lt;/th&gt;
          &lt;th&gt;&lt;img width=&#34;48&#34; src=&#34;https://github.com/filebrowser/filebrowser/blob/master/frontend/public/img/logo.svg&#34; &gt; Filebrowser&lt;/th&gt;
          &lt;th&gt;&lt;img width=&#34;48&#34; src=&#34;https://github.com/mickael-kerjean/filestash/blob/master/public/assets/logo/app_icon.png?raw=true&#34; &gt; Filestash&lt;/th&gt;
          &lt;th&gt;&lt;img width=&#34;48&#34; src=&#34;https://avatars.githubusercontent.com/u/19211038?s=200&amp;v=4&#34; &gt;  Nextcloud&lt;/th&gt;
          &lt;th&gt;&lt;img width=&#34;48&#34; src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Google_Drive_logo.png/480px-Google_Drive_logo.png&#34; &gt; Google_Drive&lt;/th&gt;
          &lt;th&gt;&lt;img width=&#34;48&#34; src=&#34;https://avatars.githubusercontent.com/u/6422152?v=4&#34; &gt; FileRun&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Filesystem support&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Mac&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Self hostable&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Has Stable Release?&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;S3 support&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;webdav support&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FTP support&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Dedicated docs site?&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Multiple sources at once&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Docker image size&lt;/td&gt;
          &lt;td&gt;200 MB (with ffmpeg)&lt;/td&gt;
          &lt;td&gt;31 MB&lt;/td&gt;
          &lt;td&gt;240 MB (main image)&lt;/td&gt;
          &lt;td&gt;250 MB&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;&amp;gt; 2 GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Min. Memory Requirements&lt;/td&gt;
          &lt;td&gt;256 MB&lt;/td&gt;
          &lt;td&gt;128 MB&lt;/td&gt;
          &lt;td&gt;128 MB (main image)&lt;/td&gt;
          &lt;td&gt;512 MB&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;512 MB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;has standalone binary&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;price&lt;/td&gt;
          &lt;td&gt;free&lt;/td&gt;
          &lt;td&gt;free&lt;/td&gt;
          &lt;td&gt;free&lt;/td&gt;
          &lt;td&gt;free tier&lt;/td&gt;
          &lt;td&gt;free tier&lt;/td&gt;
          &lt;td&gt;$99+&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;rich media preview&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Upload files from the web?&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Advanced Search?&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;configurable&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Indexed Search?&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;configurable&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Content-aware search?&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;configurable&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Custom job support&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Multiple users&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Single sign-on support&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;LDAP sign-on support&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Long-live API key support&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;API documentation page&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Mobile App&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;open source?&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tags support&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;shareable web links?&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Event-based notifications&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Metrics&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;file space quotas&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;text-based files editor&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Office file support&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Office file previews&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Themes&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Branding support&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;activity log&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Comments support&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;trash support&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Starred/pinned files&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;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chromecast support&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;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Share collections of files&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Can archive selected files&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Can browse archive files&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Can convert documents&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Can convert videos&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Can convert photos&lt;/td&gt;
          &lt;td&gt;:construction:&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;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</description>
        </item>
        <item>
        <title>mui-x</title>
        <link>https://producthunt.programnotes.cn/en/p/mui-x/</link>
        <pubDate>Mon, 02 Jun 2025 15:32:29 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/mui-x/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1635799944379-7c20f383d352?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDg4NDk0MTN8&amp;ixlib=rb-4.1.0" alt="Featured image of post mui-x" /&gt;&lt;h1 id=&#34;muimui-x&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mui/mui-x&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mui/mui-x&lt;/a&gt;
&lt;/h1&gt;&lt;!-- markdownlint-disable-next-line --&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://mui.com/x/&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;&lt;img width=&#34;150&#34; height=&#34;133&#34; src=&#34;https://mui.com/static/logo.svg&#34; alt=&#34;MUI X logo&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h1 align=&#34;center&#34;&gt;MUI X&lt;/h1&gt;
&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mui/mui-x/blob/HEAD/LICENSE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/license-MIT-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-data-grid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/npm/v/@mui/x-data-grid/latest.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;npm latest package&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-data-grid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/npm/dm/@mui/x-data-grid.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;npm downloads&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/mui/mui-x/commits/HEAD/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/checks-status/mui/mui-x/HEAD&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub branch status&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://codecov.io/gh/mui/mui-x/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/codecov/c/github/mui/mui-x.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Coverage status&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://x.com/MUI_X_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/twitter/follow/MUI_X_.svg?label=follow&amp;#43;MUI&amp;#43;X&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Follow on X&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/mui/mui-x/issues/2081&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/renovate-enabled-brightgreen.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Renovate status&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://isitmaintained.com/project/mui/mui-x&#34;  title=&#34;Average time to resolve an issue&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://isitmaintained.com/badge/resolution/mui/mui-x.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Average time to resolve an issue&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://opencollective.com/mui-org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/opencollective/all/mui-org&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Open Collective backers and sponsors&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.bestpractices.dev/projects/6293&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://www.bestpractices.dev/projects/6293/badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenSSF Best Practices&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MUI X&lt;/a&gt; is a suite of advanced React UI components for a wide range of complex use cases.
Each component provides best-in-class UX and DX, with sophisticated UX workflows for data-rich applications.
Components include the Data Grid, Date and Time Pickers, Charts, and Tree View.&lt;/p&gt;
&lt;p&gt;MUI X extends the core functionality of &lt;a class=&#34;link&#34; href=&#34;https://github.com/mui/material-ui/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Material UI&lt;/a&gt;, but the advanced components also stand on their own and can be fully customized to meet the needs of any design system.&lt;/p&gt;
&lt;p&gt;MUI X is &lt;strong&gt;open-core&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;#community-plan&#34; &gt;Community&lt;/a&gt; components are MIT-licensed and free forever, while more advanced features and components require a &lt;a class=&#34;link&#34; href=&#34;#pro-plan&#34; &gt;Pro&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;#premium-plan&#34; &gt;Premium&lt;/a&gt; commercial license.
See &lt;a class=&#34;link&#34; href=&#34;#licensing&#34; &gt;Licensing&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;p&gt;Get started in the &lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/introduction/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MUI X documentation&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/react-data-grid/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Data Grid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/react-date-pickers/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Date and Time Pickers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/react-charts/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Charts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/react-tree-view/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tree View&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/react-data-grid/quickstart/#installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Data Grid installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/react-date-pickers/quickstart/#installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Date and Time Pickers installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/react-charts/quickstart/#installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Charts installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/react-tree-view/quickstart/#installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tree View installation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;licensing&#34;&gt;Licensing
&lt;/h2&gt;&lt;p&gt;The MUI X team has been building MIT-licensed React components since 2014, starting with Material UI, and we&amp;rsquo;re committed to the continued advancement of our open-source libraries.
Anything we release under an MIT license will remain MIT-licensed forever.
Learn more about &lt;a class=&#34;link&#34; href=&#34;https://mui-org.notion.site/Stewardship-542a2226043d4f4a96dfb429d16cf5bd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;our stewardship ethos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We offer commercial licenses to developers who need the most advanced components and features that can&amp;rsquo;t reasonably be maintained by the open-source community alone.
These licenses make it possible for us to support a full-time staff of engineers.&lt;/p&gt;
&lt;p&gt;Rest assured that when we release features commercially, it&amp;rsquo;s only because we believe you won&amp;rsquo;t find a better MIT-licensed alternative anywhere else.&lt;/p&gt;
&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/introduction/licensing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Licensing page&lt;/a&gt; for complete details.&lt;/p&gt;
&lt;h3 id=&#34;plans&#34;&gt;Plans
&lt;/h3&gt;&lt;h4 id=&#34;community-plan&#34;&gt;Community plan
&lt;/h4&gt;&lt;p&gt;The free Community version of MUI X contains components and features that we believe are maintainable by contributions from the open-source community.
It&amp;rsquo;s published under an &lt;a class=&#34;link&#34; href=&#34;https://www.tldrlegal.com/license/mit-license&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MIT license&lt;/a&gt; and it&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://mui-org.notion.site/Stewardship-542a2226043d4f4a96dfb429d16cf5bd#20f609acab4441cf9346614119fbbac1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;free forever&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-data-grid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-data-grid&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-date-pickers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-date-pickers&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-charts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-charts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-tree-view&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-tree-view&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;pro-plan&#34;&gt;Pro plan
&lt;/h4&gt;&lt;p&gt;MUI X Pro expands on the Community version with more advanced features and functionality.
The Data Grid Pro comes with multi-filtering, multi-sorting, column resizing, and column pinning; you also gain access to the Date and Time Range Picker components, advanced Charts, and drag-and-drop reordering for the Tree View.&lt;/p&gt;
&lt;p&gt;The Pro version is available under a commercial license—visit the &lt;a class=&#34;link&#34; href=&#34;https://mui.com/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pricing page&lt;/a&gt; for details.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-data-grid-pro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-data-grid-pro&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-date-pickers-pro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-date-pickers-pro&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-charts-pro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-charts-pro&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-tree-view-pro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-tree-view-pro&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;premium-plan&#34;&gt;Premium plan
&lt;/h4&gt;&lt;p&gt;MUI X Premium unlocks the most advanced features of the Data Grid, including row grouping and Excel exporting, as well as everything offered in the Pro plan.&lt;/p&gt;
&lt;p&gt;The Premium version is available under a commercial license—visit the &lt;a class=&#34;link&#34; href=&#34;https://mui.com/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pricing page&lt;/a&gt; for details.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/@mui/x-data-grid-premium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;@mui/x-data-grid-premium&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;support&#34;&gt;Support
&lt;/h2&gt;&lt;p&gt;From community guidance to critical business support, we&amp;rsquo;re here to help.
Read the &lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/introduction/support/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Support guide&lt;/a&gt; for details.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;Read the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;Contributing guide&lt;/a&gt; to learn about our development process, how to propose bug fixes and improvements, and how to build and test your changes.&lt;/p&gt;
&lt;p&gt;Contributing to MUI X is about more than just issues and pull requests!
There are many other ways to &lt;a class=&#34;link&#34; href=&#34;https://mui.com/material-ui/getting-started/faq/#mui-is-an-awesome-organization-how-can-i-support-it&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;support MUI X&lt;/a&gt; beyond contributing to the code base.&lt;/p&gt;
&lt;h2 id=&#34;changelog&#34;&gt;Changelog
&lt;/h2&gt;&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;https://github.com/mui/mui-x/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;changelog&lt;/a&gt; is regularly updated to reflect what&amp;rsquo;s changed in each new release.&lt;/p&gt;
&lt;h2 id=&#34;roadmap&#34;&gt;Roadmap
&lt;/h2&gt;&lt;p&gt;Future plans and high-priority features and enhancements can be found in the &lt;a class=&#34;link&#34; href=&#34;https://mui.com/x/introduction/roadmap/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;roadmap&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;security&#34;&gt;Security
&lt;/h2&gt;&lt;p&gt;For details on supported versions and contact information for reporting security issues, please refer to the &lt;a class=&#34;link&#34; href=&#34;https://github.com/mui/mui-x/security/policy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;security policy&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>react-native</title>
        <link>https://producthunt.programnotes.cn/en/p/react-native/</link>
        <pubDate>Fri, 30 May 2025 15:30:06 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/react-native/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1624291732728-651136d8a3d4?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDg1OTAxMDZ8&amp;ixlib=rb-4.1.0" alt="Featured image of post react-native" /&gt;&lt;h1 id=&#34;facebookreact-native&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react-native&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;facebook/react-native&lt;/a&gt;
&lt;/h1&gt;&lt;h1 align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://reactnative.dev/&#34;&gt;
    React Native
  &lt;/a&gt;
&lt;/h1&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;strong&gt;Learn once, write anywhere:&lt;/strong&gt;&lt;br&gt;
  Build mobile apps with React.
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://github.com/facebook/react-native/blob/HEAD/LICENSE&#34;&gt;
    &lt;img src=&#34;https://img.shields.io/badge/license-MIT-blue.svg&#34; alt=&#34;React Native is released under the MIT license.&#34; /&gt;
  &lt;/a&gt;
  &lt;a href=&#34;https://www.npmjs.org/package/react-native&#34;&gt;
    &lt;img src=&#34;https://img.shields.io/npm/v/react-native?color=brightgreen&amp;label=npm%20package&#34; alt=&#34;Current npm package version.&#34; /&gt;
  &lt;/a&gt;
  &lt;a href=&#34;https://reactnative.dev/docs/contributing&#34;&gt;
    &lt;img src=&#34;https://img.shields.io/badge/PRs-welcome-brightgreen.svg&#34; alt=&#34;PRs welcome!&#34; /&gt;
  &lt;/a&gt;
  &lt;a href=&#34;https://twitter.com/intent/follow?screen_name=reactnative&#34;&gt;
    &lt;img src=&#34;https://img.shields.io/twitter/follow/reactnative.svg?label=Follow%20@reactnative&#34; alt=&#34;Follow @reactnative&#34; /&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;h3 align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://reactnative.dev/docs/getting-started&#34;&gt;Getting Started&lt;/a&gt;
  &lt;span&gt; · &lt;/span&gt;
  &lt;a href=&#34;https://reactnative.dev/docs/tutorial&#34;&gt;Learn the Basics&lt;/a&gt;
  &lt;span&gt; · &lt;/span&gt;
  &lt;a href=&#34;https://reactnative.dev/showcase&#34;&gt;Showcase&lt;/a&gt;
  &lt;span&gt; · &lt;/span&gt;
  &lt;a href=&#34;https://reactnative.dev/docs/contributing&#34;&gt;Contribute&lt;/a&gt;
  &lt;span&gt; · &lt;/span&gt;
  &lt;a href=&#34;https://reactnative.dev/help&#34;&gt;Community&lt;/a&gt;
  &lt;span&gt; · &lt;/span&gt;
  &lt;a href=&#34;https://github.com/facebook/react-native/blob/HEAD/.github/SUPPORT.md&#34;&gt;Support&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;React Native brings &lt;a class=&#34;link&#34; href=&#34;https://react.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;React&lt;/strong&gt;&amp;rsquo;s&lt;/a&gt; declarative UI framework to iOS and Android. With React Native, you use native UI controls and have full access to the native platform.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Declarative.&lt;/strong&gt; React makes it painless to create interactive UIs. Declarative views make your code more predictable and easier to debug.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Component-Based.&lt;/strong&gt; Build encapsulated components that manage their state, then compose them to make complex UIs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer Velocity.&lt;/strong&gt; See local changes in seconds. Changes to JavaScript code can be live reloaded without rebuilding the native app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portability.&lt;/strong&gt; Reuse code across iOS, Android, and &lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/docs/out-of-tree-platforms&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;other platforms&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;React Native is developed and supported by many companies and individual core contributors. Find out more in our &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react-native/blob/HEAD/ECOSYSTEM.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ecosystem overview&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;contents&#34;&gt;Contents
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#-requirements&#34; &gt;Requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#-building-your-first-react-native-app&#34; &gt;Building your first React Native app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#-documentation&#34; &gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#-upgrading&#34; &gt;Upgrading&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#-how-to-contribute&#34; &gt;How to Contribute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#code-of-conduct&#34; &gt;Code of Conduct&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#-license&#34; &gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-requirements&#34;&gt;📋 Requirements
&lt;/h2&gt;&lt;p&gt;React Native apps may target iOS 15.1 and Android 7.0 (API 24) or newer. You may use Windows, macOS, or Linux as your development operating system, though building and running iOS apps is limited to macOS. Tools like &lt;a class=&#34;link&#34; href=&#34;https://expo.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Expo&lt;/a&gt; can be used to work around this.&lt;/p&gt;
&lt;h2 id=&#34;-building-your-first-react-native-app&#34;&gt;🎉 Building your first React Native app
&lt;/h2&gt;&lt;p&gt;Follow the &lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/docs/getting-started&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Getting Started guide&lt;/a&gt;. The recommended way to install React Native depends on your project. Here you can find short guides for the most common scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://snack.expo.dev/@samples/hello-world&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Trying out React Native&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/docs/getting-started&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Creating a New Application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/docs/integration-with-existing-apps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Adding React Native to an Existing Application&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-documentation&#34;&gt;📖 Documentation
&lt;/h2&gt;&lt;p&gt;The full documentation for React Native can be found on our &lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/docs/getting-started&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The React Native documentation discusses components, APIs, and topics that are specific to React Native. For further documentation on the React API that is shared between React Native and React DOM, refer to the &lt;a class=&#34;link&#34; href=&#34;https://react.dev/learn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;React documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The source for the React Native documentation and website is hosted on a separate repository, &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react-native-website&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;@facebook/react-native-website&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;-upgrading&#34;&gt;🚀 Upgrading
&lt;/h2&gt;&lt;p&gt;Upgrading to new versions of React Native may give you access to more APIs, views, developer tools, and other goodies. See the &lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/docs/upgrading&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Upgrading Guide&lt;/a&gt; for instructions.&lt;/p&gt;
&lt;p&gt;React Native releases are discussed &lt;a class=&#34;link&#34; href=&#34;https://github.com/reactwg/react-native-releases/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;in this discussion repo&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;-how-to-contribute&#34;&gt;👏 How to Contribute
&lt;/h2&gt;&lt;p&gt;The main purpose of this repository is to continue evolving React Native core. We want to make contributing to this project as easy and transparent as possible, and we are grateful to the community for contributing bug fixes and improvements. Read below to learn how you can take part in improving React Native.&lt;/p&gt;
&lt;h3 id=&#34;code-of-conduct&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.fb.com/codeofconduct/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code of Conduct&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Facebook has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the &lt;a class=&#34;link&#34; href=&#34;https://code.fb.com/codeofconduct/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;full text&lt;/a&gt; so that you can understand what actions will and will not be tolerated.&lt;/p&gt;
&lt;h3 id=&#34;contributing-guide&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/docs/contributing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing Guide&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Read our &lt;a class=&#34;link&#34; href=&#34;https://reactnative.dev/docs/contributing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Contributing Guide&lt;/strong&gt;&lt;/a&gt; to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to React Native.&lt;/p&gt;
&lt;h3 id=&#34;open-source-roadmap&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react-native/wiki/Roadmap&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open Source Roadmap&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;You can learn more about our vision for React Native in the &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react-native/wiki/Roadmap&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Roadmap&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;good-first-issues&#34;&gt;Good First Issues
&lt;/h3&gt;&lt;p&gt;We have a list of &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react-native/labels/good%20first%20issue&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;good first issues&lt;/a&gt; that contain bugs which have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process.&lt;/p&gt;
&lt;h3 id=&#34;discussions&#34;&gt;Discussions
&lt;/h3&gt;&lt;p&gt;Larger discussions and proposals are discussed in &lt;a class=&#34;link&#34; href=&#34;https://github.com/react-native-community/discussions-and-proposals&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;@react-native-community/discussions-and-proposals&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;-license&#34;&gt;📄 License
&lt;/h2&gt;&lt;p&gt;React Native is MIT licensed, as found in the &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/react-native/blob/main/LICENSE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LICENSE&lt;/a&gt; file.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>headlamp</title>
        <link>https://producthunt.programnotes.cn/en/p/headlamp/</link>
        <pubDate>Sun, 06 Apr 2025 15:25:35 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/headlamp/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1735822081174-c919b99e8623?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDM5MjQyODJ8&amp;ixlib=rb-4.0.3" alt="Featured image of post headlamp" /&gt;&lt;h1 id=&#34;kubernetes-sigsheadlamp&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes-sigs/headlamp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;kubernetes-sigs/headlamp&lt;/a&gt;
&lt;/h1&gt;&lt;h1&gt;
  &lt;picture&gt;
    &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;frontend/src/resources/logo-light.svg&#34;&gt;
    &lt;img src=&#34;frontend/src/resources/logo-dark.svg&#34; alt=&#34;Headlamp&#34;&gt;
  &lt;/picture&gt;
&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTICE:&lt;/strong&gt; We have recently moved the project under the Kubernetes SIG UI (and the repo under the &lt;em&gt;kubernetes-sigs&lt;/em&gt; org). Container images are still at &lt;a class=&#34;link&#34; href=&#34;https://github.com/orgs/headlamp-k8s/packages&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ghcr.io&lt;/a&gt;. Please bear with us while we may experience some broken links.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestpractices.dev/projects/7551&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://www.bestpractices.dev/projects/7551/badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenSSF Best Practices&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://scorecard.dev/viewer/?uri=github.com/headlamp-k8s/headlamp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://api.scorecard.dev/projects/github.com/headlamp-k8s/headlamp/badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenSSF Scorecard&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://app.fossa.com/projects/git%2Bgithub.com%2Fheadlamp-k8s%2Fheadlamp?ref=badge_shield&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://app.fossa.com/api/projects/git%2Bgithub.com%2Fheadlamp-k8s%2Fheadlamp.svg?type=shield&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FOSSA Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Headlamp is an easy-to-use and extensible Kubernetes web UI.&lt;/p&gt;
&lt;p&gt;Headlamp was created to blend the traditional feature set of other web UIs/dashboards
(i.e., to list and view resources) with added functionality.&lt;/p&gt;
&lt;div align=&#34;center&#34;&gt;
  &lt;img src=&#34;https://raw.githubusercontent.com/headlamp-k8s/headlamp/screenshots/videos/headlamp_quick_run.gif&#34; width=&#34;80%&#34;&gt;
&lt;/div&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Vendor-independent / generic Kubernetes UI&lt;/li&gt;
&lt;li&gt;Works in-cluster, or locally as a desktop app&lt;/li&gt;
&lt;li&gt;Multi-cluster&lt;/li&gt;
&lt;li&gt;Extensible through plugins&lt;/li&gt;
&lt;li&gt;UI controls reflecting user roles (no deletion/update if not allowed)&lt;/li&gt;
&lt;li&gt;Clean &amp;amp; modern UI&lt;/li&gt;
&lt;li&gt;Cancellable creation/update/deletion operations&lt;/li&gt;
&lt;li&gt;Logs, exec, and resource editor with documentation&lt;/li&gt;
&lt;li&gt;Read-write / interactive (actions based on permissions)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;screenshots&#34;&gt;Screenshots
&lt;/h2&gt;&lt;table&gt;
    &lt;tr&gt;
        &lt;td width=&#34;33%&#34;&gt;&lt;img src=&#34;https://raw.githubusercontent.com/headlamp-k8s/headlamp/screenshots/screenshots/home.png&#34;&gt;&lt;/td&gt;
        &lt;td width=&#34;33%&#34;&gt;&lt;img src=&#34;https://raw.githubusercontent.com/headlamp-k8s/headlamp/screenshots/screenshots/cluster_chooser.png&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td width=&#34;33%&#34;&gt;&lt;img src=&#34;https://raw.githubusercontent.com/headlamp-k8s/headlamp/screenshots/screenshots/workloads.png&#34;&gt;&lt;/td&gt;
        &lt;td width=&#34;33%&#34;&gt;&lt;img src=&#34;https://raw.githubusercontent.com/headlamp-k8s/headlamp/screenshots/screenshots/resource_edition.png&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td width=&#34;33%&#34;&gt;&lt;img src=&#34;https://raw.githubusercontent.com/headlamp-k8s/headlamp/screenshots/screenshots/logs.png&#34;&gt;&lt;/td&gt;
        &lt;td width=&#34;33%&#34;&gt;&lt;img src=&#34;https://raw.githubusercontent.com/headlamp-k8s/headlamp/screenshots/screenshots/terminal.png&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;h2 id=&#34;quickstart&#34;&gt;Quickstart
&lt;/h2&gt;&lt;p&gt;If you want to deploy Headlamp in your cluster, check out the instructions on running it &lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/installation/in-cluster/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;in-cluster&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you have a kubeconfig already, you can quickly try Headlamp locally as a
&lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/installation/desktop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;desktop application&lt;/a&gt;
for &lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/installation/desktop/linux-installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux&lt;/a&gt;,
&lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/installation/desktop/mac-installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mac&lt;/a&gt;,
or &lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/installation/desktop/win-installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows&lt;/a&gt;.
&lt;strong&gt;Make sure&lt;/strong&gt; you have a kubeconfig file set up with your favorite clusters and
in the default path so Headlamp can use it.&lt;/p&gt;
&lt;h3 id=&#34;accessing&#34;&gt;Accessing
&lt;/h3&gt;&lt;p&gt;Headlamp uses &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/docs/reference/access-authn-authz/rbac&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RBAC&lt;/a&gt; for checking
users&amp;rsquo; access to resources. If you try Headlamp with a token that has very limited
permissions, you may not be able to view your cluster resources correctly.&lt;/p&gt;
&lt;p&gt;See the documentation on &lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/installation#create-a-service-account-token&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;how to easily get a Service Account token&lt;/a&gt; for your cluster.&lt;/p&gt;
&lt;h2 id=&#34;tested-platforms&#34;&gt;Tested platforms
&lt;/h2&gt;&lt;p&gt;We maintain a list of the &lt;a class=&#34;link&#34; href=&#34;./docs/platforms.md&#34; &gt;Kubernetes platforms&lt;/a&gt; we have
tested Headlamp with. We invite you to add any missing platforms you have
tested, or comment if there are any regressions in the existing ones.&lt;/p&gt;
&lt;h2 id=&#34;extensions--plugins&#34;&gt;Extensions / Plugins
&lt;/h2&gt;&lt;p&gt;If you are interested in tweaking Headlamp to fit your use-cases, you can check out
our &lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/development/plugins/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;plugin development guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;get-involved&#34;&gt;Get involved
&lt;/h2&gt;&lt;p&gt;Check out our:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/contributing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./code-of-conduct.md&#34; &gt;Code of Conduct&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://kubernetes.slack.com/messages/headlamp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#headlamp&lt;/a&gt; slack channel in the Kubernetes Slack&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zoom-lfx.platform.linuxfoundation.org/meetings/headlamp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Monthly Community Meeting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;roadmap--release-planning&#34;&gt;Roadmap / Release Planning
&lt;/h2&gt;&lt;p&gt;If you are interested in the direction of the project, we maintain a
&lt;a class=&#34;link&#34; href=&#34;https://github.com/orgs/headlamp-k8s/projects/1/views/1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Roadmap&lt;/a&gt;. It has the
biggest changes planned so far, as well as a &lt;a class=&#34;link&#34; href=&#34;https://github.com/orgs/headlamp-k8s/projects/1/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;board&lt;/a&gt; tracking each release.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;Headlamp is released under the terms of the &lt;a class=&#34;link&#34; href=&#34;./LICENSE&#34; &gt;Apache 2.0&lt;/a&gt; license.&lt;/p&gt;
&lt;h2 id=&#34;frequently-asked-questions&#34;&gt;Frequently Asked Questions
&lt;/h2&gt;&lt;p&gt;For more information about Headlamp, see the &lt;a class=&#34;link&#34; href=&#34;https://headlamp.dev/docs/latest/faq/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Headlamp FAQ&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>nue</title>
        <link>https://producthunt.programnotes.cn/en/p/nue/</link>
        <pubDate>Sun, 06 Apr 2025 15:24:51 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/nue/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1498962342534-ee08a0bb1d45?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDM5MjQyODJ8&amp;ixlib=rb-4.0.3" alt="Featured image of post nue" /&gt;&lt;h1 id=&#34;nuejsnue&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nuejs/nue&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nuejs/nue&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;packages/nuekit/README.md&lt;/p&gt;
</description>
        </item>
        <item>
        <title>dockge</title>
        <link>https://producthunt.programnotes.cn/en/p/dockge/</link>
        <pubDate>Wed, 02 Apr 2025 18:39:35 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/dockge/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1680761060530-87f01f1f1803?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDM1OTAyNzV8&amp;ixlib=rb-4.0.3" alt="Featured image of post dockge" /&gt;&lt;h1 id=&#34;louislamdockge&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;louislam/dockge&lt;/a&gt;
&lt;/h1&gt;&lt;div align=&#34;center&#34; width=&#34;100%&#34;&gt;
    &lt;img src=&#34;./frontend/public/icon.svg&#34; width=&#34;128&#34; alt=&#34;&#34; /&gt;
&lt;/div&gt;
&lt;h1 id=&#34;dockge&#34;&gt;Dockge
&lt;/h1&gt;&lt;p&gt;A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/stars/louislam/dockge?logo=github&amp;amp;style=flat&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub Repo stars&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/louislam/dockge/tags&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/docker/pulls/louislam/dockge?logo=docker&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Docker Pulls&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/louislam/dockge/tags&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/docker/v/louislam/dockge/latest?label=docker%20image%20ver.&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Docker Image Version (latest semver)&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge/commits/master/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/last-commit/louislam/dockge/master?logo=github&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub last commit (branch)&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src=&#34;https://github.com/louislam/dockge/assets/1336778/26a583e1-ecb1-4a8d-aedf-76157d714ad7&#34; width=&#34;900&#34; alt=&#34;&#34; /&gt;
&lt;p&gt;View Video: &lt;a class=&#34;link&#34; href=&#34;https://youtu.be/AWAlOQeNpgU?t=48&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://youtu.be/AWAlOQeNpgU?t=48&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;-features&#34;&gt;⭐ Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;🧑‍💼 Manage your &lt;code&gt;compose.yaml&lt;/code&gt; files
&lt;ul&gt;
&lt;li&gt;Create/Edit/Start/Stop/Restart/Delete&lt;/li&gt;
&lt;li&gt;Update Docker Images&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;⌨️ Interactive Editor for &lt;code&gt;compose.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;🦦 Interactive Web Terminal&lt;/li&gt;
&lt;li&gt;🕷️ (1.4.0 🆕) Multiple agents support - You can manage multiple stacks from different Docker hosts in one single interface&lt;/li&gt;
&lt;li&gt;🏪 Convert &lt;code&gt;docker run ...&lt;/code&gt; commands into &lt;code&gt;compose.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;📙 File based structure - Dockge won&amp;rsquo;t kidnap your compose files, they are stored on your drive as usual. You can interact with them using normal &lt;code&gt;docker compose&lt;/code&gt; commands&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&#34;https://github.com/louislam/dockge/assets/1336778/cc071864-592e-4909-b73a-343a57494002&#34; width=300 /&gt;
&lt;ul&gt;
&lt;li&gt;🚄 Reactive - Everything is just responsive. Progress (Pull/Up/Down) and terminal output are in real-time&lt;/li&gt;
&lt;li&gt;🐣 Easy-to-use &amp;amp; fancy UI - If you love Uptime Kuma&amp;rsquo;s UI/UX, you will love this one too&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/louislam/dockge/assets/1336778/89fc1023-b069-42c0-a01c-918c495f1a6a&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;-how-to-install&#34;&gt;🔧 How to Install
&lt;/h2&gt;&lt;p&gt;Requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/engine/install/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; 20+ / Podman&lt;/li&gt;
&lt;li&gt;(Podman only) podman-docker (Debian: &lt;code&gt;apt install podman-docker&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;OS:
&lt;ul&gt;
&lt;li&gt;Major Linux distros that can run Docker/Podman such as:
&lt;ul&gt;
&lt;li&gt;✅ Ubuntu&lt;/li&gt;
&lt;li&gt;✅ Debian (Bullseye or newer)&lt;/li&gt;
&lt;li&gt;✅ Raspbian (Bullseye or newer)&lt;/li&gt;
&lt;li&gt;✅ CentOS&lt;/li&gt;
&lt;li&gt;✅ Fedora&lt;/li&gt;
&lt;li&gt;✅ ArchLinux&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;❌ Debian/Raspbian Buster or lower is not supported&lt;/li&gt;
&lt;li&gt;❌ Windows (Will be supported later)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Arch: armv7, arm64, amd64 (a.k.a x86_64)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;basic&#34;&gt;Basic
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Default Stacks Directory: &lt;code&gt;/opt/stacks&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Default Port: 5001&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Create directories that store your stacks and stores Dockge&amp;#39;s stack&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;opt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stacks&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;opt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dockge&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;opt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dockge&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Download the compose.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;curl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;louislam&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dockge&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;master&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yaml&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Start the server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;docker&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;up&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# If you are using docker-compose V1 or Podman&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# docker-compose up -d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Dockge is now running on http://localhost:5001&lt;/p&gt;
&lt;h3 id=&#34;advanced&#34;&gt;Advanced
&lt;/h3&gt;&lt;p&gt;If you want to store your stacks in another directory, you can generate your compose.yaml file by using the following URL with custom query strings.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Download your compose.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;curl&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://dockge.kuma.pet/compose.yaml?port=5001&amp;amp;stacksPath=/opt/stacks&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compose&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;port=&lt;code&gt;5001&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;stacksPath=&lt;code&gt;/opt/stacks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Interactive compose.yaml generator is available on:
&lt;a class=&#34;link&#34; href=&#34;https://dockge.kuma.pet&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://dockge.kuma.pet&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-to-update&#34;&gt;How to Update
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /opt/dockge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose pull &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;screenshots&#34;&gt;Screenshots
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://github.com/louislam/dockge/assets/1336778/e7ff0222-af2e-405c-b533-4eab04791b40&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/louislam/dockge/assets/1336778/7139e88c-77ed-4d45-96e3-00b66d36d871&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/louislam/dockge/assets/1336778/f019944c-0e87-405b-a1b8-625b35de1eeb&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/louislam/dockge/assets/1336778/a4478d23-b1c4-4991-8768-1a7cad3472e3&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;motivations&#34;&gt;Motivations
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;I have been using Portainer for some time, but for the stack management, I am sometimes not satisfied with it. For example, sometimes when I try to deploy a stack, the loading icon keeps spinning for a few minutes without progress. And sometimes error messages are not clear.&lt;/li&gt;
&lt;li&gt;Try to develop with ES Module + TypeScript&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you love this project, please consider giving it a ⭐.&lt;/p&gt;
&lt;h2 id=&#34;-community-and-contribution&#34;&gt;🗣️ Community and Contribution
&lt;/h2&gt;&lt;h3 id=&#34;bug-report&#34;&gt;Bug Report
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/louislam/dockge/issues&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ask-for-help--discussions&#34;&gt;Ask for Help / Discussions
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/louislam/dockge/discussions&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;translation&#34;&gt;Translation
&lt;/h3&gt;&lt;p&gt;If you want to translate Dockge into your language, please read &lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge/blob/master/frontend/src/lang/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Translation Guide&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;create-a-pull-request&#34;&gt;Create a Pull Request
&lt;/h3&gt;&lt;p&gt;Be sure to read the &lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge/blob/master/CONTRIBUTING.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;guide&lt;/a&gt;, as we don&amp;rsquo;t accept all types of pull requests and don&amp;rsquo;t want to waste your time.&lt;/p&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ
&lt;/h2&gt;&lt;h4 id=&#34;dockge-1&#34;&gt;&amp;ldquo;Dockge&amp;rdquo;?
&lt;/h4&gt;&lt;p&gt;&amp;ldquo;Dockge&amp;rdquo; is a coinage word which is created by myself. I originally hoped it sounds like &lt;code&gt;Dodge&lt;/code&gt;, but apparently many people called it &lt;code&gt;Dockage&lt;/code&gt;, it is also acceptable.&lt;/p&gt;
&lt;p&gt;The naming idea came from Twitch emotes like &lt;code&gt;sadge&lt;/code&gt;, &lt;code&gt;bedge&lt;/code&gt; or &lt;code&gt;wokege&lt;/code&gt;. They all end in &lt;code&gt;-ge&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;can-i-manage-a-single-container-without-composeyaml&#34;&gt;Can I manage a single container without &lt;code&gt;compose.yaml&lt;/code&gt;?
&lt;/h4&gt;&lt;p&gt;The main objective of Dockge is to try to use the docker &lt;code&gt;compose.yaml&lt;/code&gt; for everything. If you want to manage a single container, you can just use Portainer or Docker CLI.&lt;/p&gt;
&lt;h4 id=&#34;can-i-manage-existing-stacks&#34;&gt;Can I manage existing stacks?
&lt;/h4&gt;&lt;p&gt;Yes, you can. However, you need to move your compose file into the stacks directory:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Stop your stack&lt;/li&gt;
&lt;li&gt;Move your compose file into &lt;code&gt;/opt/stacks/&amp;lt;stackName&amp;gt;/compose.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;In Dockge, click the &amp;quot; Scan Stacks Folder&amp;quot; button in the top-right corner&amp;rsquo;s dropdown menu&lt;/li&gt;
&lt;li&gt;Now you should see your stack in the list&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;is-dockge-a-portainer-replacement&#34;&gt;Is Dockge a Portainer replacement?
&lt;/h4&gt;&lt;p&gt;Yes or no. Portainer provides a lot of Docker features. While Dockge is currently only focusing on docker-compose with a better user interface and better user experience.&lt;/p&gt;
&lt;p&gt;If you want to manage your container with docker-compose only, the answer may be yes.&lt;/p&gt;
&lt;p&gt;If you still need to manage something like docker networks, single containers, the answer may be no.&lt;/p&gt;
&lt;h4 id=&#34;can-i-install-both-dockge-and-portainer&#34;&gt;Can I install both Dockge and Portainer?
&lt;/h4&gt;&lt;p&gt;Yes, you can.&lt;/p&gt;
&lt;h2 id=&#34;others&#34;&gt;Others
&lt;/h2&gt;&lt;p&gt;Dockge is built on top of &lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/compose/migrate/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Compose V2&lt;/a&gt;. &lt;code&gt;compose.yaml&lt;/code&gt;  also known as &lt;code&gt;docker-compose.yml&lt;/code&gt;.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
