<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Dashboard on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/dashboard/</link>
        <description>Recent content in Dashboard on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sat, 23 Aug 2025 15:26:48 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/dashboard/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>saas-starter</title>
        <link>https://producthunt.programnotes.cn/en/p/saas-starter/</link>
        <pubDate>Sat, 23 Aug 2025 15:26:48 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/saas-starter/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1664366095115-9b4882d0d3b7?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTU5MzM5MjF8&amp;ixlib=rb-4.1.0" alt="Featured image of post saas-starter" /&gt;&lt;h1 id=&#34;nextjssaas-starter&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nextjs/saas-starter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nextjs/saas-starter&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;nextjs-saas-starter&#34;&gt;Next.js SaaS Starter
&lt;/h1&gt;&lt;p&gt;This is a starter template for building a SaaS application using &lt;strong&gt;Next.js&lt;/strong&gt; with support for authentication, Stripe integration for payments, and a dashboard for logged-in users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Demo: &lt;a class=&#34;link&#34; href=&#34;https://next-saas-start.vercel.app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://next-saas-start.vercel.app/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Marketing landing page (&lt;code&gt;/&lt;/code&gt;) with animated Terminal element&lt;/li&gt;
&lt;li&gt;Pricing page (&lt;code&gt;/pricing&lt;/code&gt;) which connects to Stripe Checkout&lt;/li&gt;
&lt;li&gt;Dashboard pages with CRUD operations on users/teams&lt;/li&gt;
&lt;li&gt;Basic RBAC with Owner and Member roles&lt;/li&gt;
&lt;li&gt;Subscription management with Stripe Customer Portal&lt;/li&gt;
&lt;li&gt;Email/password authentication with JWTs stored to cookies&lt;/li&gt;
&lt;li&gt;Global middleware to protect logged-in routes&lt;/li&gt;
&lt;li&gt;Local middleware to protect Server Actions or validate Zod schemas&lt;/li&gt;
&lt;li&gt;Activity logging system for any user events&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tech-stack&#34;&gt;Tech Stack
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Framework&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://nextjs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Next.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.postgresql.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Postgres&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ORM&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://orm.drizzle.team/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Drizzle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Payments&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://stripe.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stripe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI Library&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://ui.shadcn.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;shadcn/ui&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&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;span class=&#34;lnt&#34;&gt;3
&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;git clone https://github.com/nextjs/saas-starter
&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; saas-starter
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm install
&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;running-locally&#34;&gt;Running Locally
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.stripe.com/stripe-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Install&lt;/a&gt; and log in to your Stripe account:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;stripe login
&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;Use the included setup script to create your &lt;code&gt;.env&lt;/code&gt; file:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm db:setup
&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;Run the database migrations and seed the database with a default user and team:&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;pnpm db:migrate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm db:seed
&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 will create the following user and team:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;User: &lt;code&gt;test@test.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Password: &lt;code&gt;admin123&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also create new users through the &lt;code&gt;/sign-up&lt;/code&gt; route.&lt;/p&gt;
&lt;p&gt;Finally, run the Next.js development 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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm dev
&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;Open &lt;a class=&#34;link&#34; href=&#34;http://localhost:3000&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3000&lt;/a&gt; in your browser to see the app in action.&lt;/p&gt;
&lt;p&gt;You can listen for Stripe webhooks locally through their CLI to handle subscription change events:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;stripe listen --forward-to localhost:3000/api/stripe/webhook
&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;testing-payments&#34;&gt;Testing Payments
&lt;/h2&gt;&lt;p&gt;To test Stripe payments, use the following test card details:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Card Number: &lt;code&gt;4242 4242 4242 4242&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Expiration: Any future date&lt;/li&gt;
&lt;li&gt;CVC: Any 3-digit number&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;going-to-production&#34;&gt;Going to Production
&lt;/h2&gt;&lt;p&gt;When you&amp;rsquo;re ready to deploy your SaaS application to production, follow these steps:&lt;/p&gt;
&lt;h3 id=&#34;set-up-a-production-stripe-webhook&#34;&gt;Set up a production Stripe webhook
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Go to the Stripe Dashboard and create a new webhook for your production environment.&lt;/li&gt;
&lt;li&gt;Set the endpoint URL to your production API route (e.g., &lt;code&gt;https://yourdomain.com/api/stripe/webhook&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Select the events you want to listen for (e.g., &lt;code&gt;checkout.session.completed&lt;/code&gt;, &lt;code&gt;customer.subscription.updated&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;deploy-to-vercel&#34;&gt;Deploy to Vercel
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Push your code to a GitHub repository.&lt;/li&gt;
&lt;li&gt;Connect your repository to &lt;a class=&#34;link&#34; href=&#34;https://vercel.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vercel&lt;/a&gt; and deploy it.&lt;/li&gt;
&lt;li&gt;Follow the Vercel deployment process, which will guide you through setting up your project.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;add-environment-variables&#34;&gt;Add environment variables
&lt;/h3&gt;&lt;p&gt;In your Vercel project settings (or during deployment), add all the necessary environment variables. Make sure to update the values for the production environment, including:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;BASE_URL&lt;/code&gt;: Set this to your production domain.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STRIPE_SECRET_KEY&lt;/code&gt;: Use your Stripe secret key for the production environment.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STRIPE_WEBHOOK_SECRET&lt;/code&gt;: Use the webhook secret from the production webhook you created in step 1.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POSTGRES_URL&lt;/code&gt;: Set this to your production database URL.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AUTH_SECRET&lt;/code&gt;: Set this to a random string. &lt;code&gt;openssl rand -base64 32&lt;/code&gt; will generate one.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;other-templates&#34;&gt;Other Templates
&lt;/h2&gt;&lt;p&gt;While this template is intentionally minimal and to be used as a learning resource, there are other paid versions in the community which are more full-featured:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://achromatic.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://achromatic.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://shipfa.st&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://shipfa.st&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://makerkit.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://makerkit.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zerotoshipped.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://zerotoshipped.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://turbostarter.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://turbostarter.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>dataease</title>
        <link>https://producthunt.programnotes.cn/en/p/dataease/</link>
        <pubDate>Sun, 27 Jul 2025 15:29:46 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/dataease/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1599069158346-684fee0e414a?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTM2MDEyOTh8&amp;ixlib=rb-4.1.0" alt="Featured image of post dataease" /&gt;&lt;h1 id=&#34;dataeasedataease&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dataease/dataease&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dataease/dataease&lt;/a&gt;
&lt;/h1&gt;&lt;p align=&#34;center&#34;&gt;&lt;a href=&#34;https://dataease.cn&#34;&gt;&lt;img src=&#34;https://dataease.oss-cn-hangzhou.aliyuncs.com/img/dataease-logo.png&#34; alt=&#34;DataEase&#34; width=&#34;300&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 align=&#34;center&#34;&gt;人人可用的开源 BI 工具&lt;/h3&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://www.gnu.org/licenses/gpl-3.0.html&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/license/dataease/dataease?color=%231890FF&#34; alt=&#34;License: GPL v3&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://app.codacy.com/gh/dataease/dataease?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=dataease/dataease&amp;utm_campaign=Badge_Grade_Dashboard&#34;&gt;&lt;img src=&#34;https://app.codacy.com/project/badge/Grade/da67574fd82b473992781d1386b937ef&#34; alt=&#34;Codacy&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://github.com/dataease/dataease&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/stars/dataease/dataease?color=%231890FF&amp;style=flat-square&#34; alt=&#34;GitHub Stars&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://github.com/dataease/dataease/releases&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/v/release/dataease/dataease&#34; alt=&#34;GitHub release&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://gitee.com/fit2cloud-feizhiyun/DataEase&#34;&gt;&lt;img src=&#34;https://gitee.com/fit2cloud-feizhiyun/DataEase/badge/star.svg?theme=gvp&#34; alt=&#34;Gitee Stars&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://gitcode.com/feizhiyun/DataEase&#34;&gt;&lt;img src=&#34;https://gitcode.com/feizhiyun/DataEase/star/badge.svg&#34; alt=&#34;GitCode Stars&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/README.md&#34;&gt;&lt;img alt=&#34;中文(简体)&#34; src=&#34;https://img.shields.io/badge/中文(简体)-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.en.md&#34;&gt;&lt;img alt=&#34;English&#34; src=&#34;https://img.shields.io/badge/English-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.zh-Hant.md&#34;&gt;&lt;img alt=&#34;中文(繁體)&#34; src=&#34;https://img.shields.io/badge/中文(繁體)-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.ja.md&#34;&gt;&lt;img alt=&#34;日本語&#34; src=&#34;https://img.shields.io/badge/日本語-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.pt-br.md&#34;&gt;&lt;img alt=&#34;Português (Brasil)&#34; src=&#34;https://img.shields.io/badge/Português (Brasil)-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.ar.md&#34;&gt;&lt;img alt=&#34;العربية&#34; src=&#34;https://img.shields.io/badge/العربية-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.de.md&#34;&gt;&lt;img alt=&#34;Deutsch&#34; src=&#34;https://img.shields.io/badge/Deutsch-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.es.md&#34;&gt;&lt;img alt=&#34;Español&#34; src=&#34;https://img.shields.io/badge/Español-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.fr.md&#34;&gt;&lt;img alt=&#34;français&#34; src=&#34;https://img.shields.io/badge/français-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.ko.md&#34;&gt;&lt;img alt=&#34;한국어&#34; src=&#34;https://img.shields.io/badge/한국어-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.id.md&#34;&gt;&lt;img alt=&#34;Bahasa Indonesia&#34; src=&#34;https://img.shields.io/badge/Bahasa Indonesia-d9d9d9&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://producthunt.programnotes.cn/docs/README.tr.md&#34;&gt;&lt;img alt=&#34;Türkçe&#34; src=&#34;https://img.shields.io/badge/Türkçe-d9d9d9&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;什么是-dataease&#34;&gt;什么是 DataEase？
&lt;/h2&gt;&lt;p&gt;DataEase 是开源的 BI 工具，帮助用户快速分析数据并洞察业务趋势，从而实现业务的改进与优化。DataEase 支持丰富的数据源连接，能够通过拖拉拽方式快速制作图表，并可以方便的与他人分享。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DataEase 的优势：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开源开放：零门槛，线上快速获取和安装，按月迭代；&lt;/li&gt;
&lt;li&gt;简单易用：极易上手，通过鼠标点击和拖拽即可完成分析；&lt;/li&gt;
&lt;li&gt;全场景支持：多平台安装和多样化嵌入支持；&lt;/li&gt;
&lt;li&gt;安全分享：支持多种数据分享方式，确保数据安全。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;DataEase 支持的数据源：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OLTP 数据库： MySQL、Oracle、SQL Server、PostgreSQL、MariaDB、Db2、TiDB、MongoDB-BI 等；&lt;/li&gt;
&lt;li&gt;OLAP 数据库： ClickHouse、Apache Doris、Apache Impala、StarRocks 等；&lt;/li&gt;
&lt;li&gt;数据仓库/数据湖： Amazon RedShift 等；&lt;/li&gt;
&lt;li&gt;数据文件： Excel、CSV 等；&lt;/li&gt;
&lt;li&gt;API 数据源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果您需要向团队介绍 DataEase，可以使用这个 &lt;a class=&#34;link&#34; href=&#34;https://fit2cloud.com/dataease/download/introduce-dataease_202506.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方 PPT 材料&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;快速开始&#34;&gt;快速开始
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;桌面版：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你可以在 PC 上安装 DataEasae 桌面版，下载地址为：https://dataease.cn/desktop/index.html&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;服务器版：&lt;/strong&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;/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-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 准备一台 2 核 4G 以上的 Linux 服务器，并以 root 用户运行以下一键安装脚本：
&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;curl -sSL https://dataease.oss-cn-hangzhou.aliyuncs.com/quick_start_v2.sh | bash
&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;# 用户名: admin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 密码: DataEase@123456
&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;你也可以通过 &lt;a class=&#34;link&#34; href=&#34;https://dataease.io/docs/v2/installation/1panel_installation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;1Panel 应用商店&lt;/a&gt; 快速部署 DataEase。如果是用于生产环境，推荐使用 &lt;a class=&#34;link&#34; href=&#34;https://dataease.io/docs/v2/installation/offline_INSTL_and_UPG/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;离线安装包方式&lt;/a&gt; 进行安装部署。&lt;/p&gt;
&lt;p&gt;如你有更多问题，可以查看在线文档，或者通过论坛与我们交流。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1Y8dAYLErb/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;视频介绍&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dataease.io/docs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;在线文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bbs.fit2cloud.com/c/de/6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;社区论坛&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ui-展示&#34;&gt;UI 展示
&lt;/h2&gt;&lt;table style=&#34;border-collapse: collapse; border: 1px solid black;&#34;&gt;
  &lt;tr&gt;
    &lt;td style=&#34;padding: 5px;background-color:#fff;&#34;&gt;&lt;img src= &#34;https://github.com/dataease/dataease/assets/41712985/8dbed4e1-39f0-4392-aa8c-d1fd83ba42eb&#34; alt=&#34;DataEase 工作台&#34;   /&gt;&lt;/td&gt;
    &lt;td style=&#34;padding: 5px;background-color:#fff;&#34;&gt;&lt;img src= &#34;https://github.com/dataease/dataease/assets/41712985/7c54cb07-51ef-4bb6-a931-8a95c64c7e11&#34; alt=&#34;DataEase 仪表板&#34;   /&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&#34;padding: 5px;background-color:#fff;&#34;&gt;&lt;img src= &#34;https://github.com/dataease/dataease/assets/41712985/ffa79361-a7b3-4486-b14a-f3fd3a28f01a&#34; alt=&#34;DataEase 数据源&#34;   /&gt;&lt;/td&gt;
    &lt;td style=&#34;padding: 5px;background-color:#fff;&#34;&gt;&lt;img src= &#34;https://github.com/dataease/dataease/assets/41712985/bb28f4e4-636e-4ab0-85c5-1dfbd7a5397e&#34; alt=&#34;DataEase 模板中心&#34;   /&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;h2 id=&#34;技术栈&#34;&gt;技术栈
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;前端：&lt;a class=&#34;link&#34; href=&#34;https://vuejs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vue.js&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://element.eleme.cn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Element&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;图库：&lt;a class=&#34;link&#34; href=&#34;https://antv.vision/zh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AntV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;后端：&lt;a class=&#34;link&#34; href=&#34;https://spring.io/projects/spring-boot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Spring Boot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;数据库：&lt;a class=&#34;link&#34; href=&#34;https://www.mysql.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MySQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;数据处理：&lt;a class=&#34;link&#34; href=&#34;https://github.com/apache/calcite/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apache Calcite&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/apache/seatunnel&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apache SeaTunnel&lt;/a&gt;&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;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;飞致云的其他明星项目&#34;&gt;飞致云的其他明星项目
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/1panel-dev/1panel/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;1Panel&lt;/a&gt; - 现代化、开源的 Linux 服务器运维管理面板&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/1panel-dev/MaxKB/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MaxKB&lt;/a&gt; - 基于 LLM 大语言模型的开源知识库问答系统&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/jumpserver/jumpserver/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;JumpServer&lt;/a&gt; - 广受欢迎的开源堡垒机&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/halo-dev/halo/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Halo&lt;/a&gt; - 强大易用的开源建站工具&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/metersphere/metersphere/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MeterSphere&lt;/a&gt; - 新一代的开源持续测试工具&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;Copyright (c) 2014-2025 &lt;a class=&#34;link&#34; href=&#34;https://fit2cloud.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FIT2CLOUD 飞致云&lt;/a&gt;, All rights reserved.&lt;/p&gt;
&lt;p&gt;Licensed under The GNU General Public License version 3 (GPLv3)  (the &amp;ldquo;License&amp;rdquo;); you may not use this file except in compliance with the License. You may obtain a copy of the License at&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gnu.org/licenses/gpl-3.0.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.gnu.org/licenses/gpl-3.0.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &amp;ldquo;AS IS&amp;rdquo; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>dashy</title>
        <link>https://producthunt.programnotes.cn/en/p/dashy/</link>
        <pubDate>Tue, 22 Jul 2025 15:33:52 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/dashy/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1695237115264-1ba2ed594c73?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTMxNjk1NjF8&amp;ixlib=rb-4.1.0" alt="Featured image of post dashy" /&gt;&lt;h1 id=&#34;lissy93dashy&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Lissy93/dashy&lt;/a&gt;
&lt;/h1&gt;&lt;h1 align=&#34;center&#34;&gt;Dashy&lt;/h1&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;i&gt;Dashy helps you organize your self-hosted services by making them accessible from a single place&lt;/i&gt;
   &lt;br/&gt;
  &lt;img width=&#34;120&#34; src=&#34;https://i.ibb.co/yhbt6CY/dashy.png&#34; /&gt;
  &lt;br/&gt;
  &lt;b&gt;&lt;a href=&#34;./docs/showcase.md&#34;&gt;User Showcase&lt;/a&gt;&lt;/b&gt; | &lt;b&gt;&lt;a href=&#34;https://demo.dashy.to&#34;&gt;Live Demo&lt;/a&gt;&lt;/b&gt; | &lt;b&gt;&lt;a href=&#34;./docs/quick-start.md&#34;&gt;Getting Started&lt;/a&gt;&lt;/b&gt; | &lt;b&gt;&lt;a href=&#34;https://dashy.to/docs&#34;&gt;Documentation&lt;/a&gt;&lt;/b&gt; | &lt;b&gt;&lt;a href=&#34;https://github.com/Lissy93/dashy&#34;&gt;GitHub&lt;/a&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;br&gt;
&lt;sup&gt;Dashy is kindly sponsored by &lt;a href=&#34;https://umbrel.com?ref=dashy&#34;&gt;Umbrel&lt;/a&gt; - the personal home cloud and OS for self-hosting&lt;/sup&gt;&lt;br&gt;
&lt;a href=&#34;https://umbrel.com?ref=dashy&#34;&gt;
&lt;img width=&#34;400&#34; src=&#34;https://github.com/Lissy93/dashy/blob/WEBSITE/docs-site-source/static/umbrel-banner.jpg?raw=true&#34; /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
Version &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/releases/tag/3.0.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;3.0.0&lt;/a&gt; has been released, and requires some changes to your setup, see &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/discussions/1529&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#1529&lt;/a&gt; for details.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;details&gt;
  &lt;summary&gt;&lt;b&gt;Table of Contents&lt;/b&gt;&lt;/summary&gt;
  &lt;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#features-&#34; &gt;🌈 Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#demo-&#34; &gt;⚡Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#getting-started-&#34; &gt;🚀 Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#configuring-&#34; &gt;🔧 Configuring&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Feature Overview&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#theming-&#34; &gt;🎨 Theming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#icons-&#34; &gt;🧸 Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#status-indicators-&#34; &gt;🚦 Status Indicators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#widgets-&#34; &gt;📊 Widgets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#authentication-&#34; &gt;🔐 Authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#alternate-views-&#34; &gt;👓 Alternate Views&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#opening-methods-&#34; &gt;🖱️ Opening Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#searching-and-shortcuts-&#34; &gt;🔎 Searching and Shortcuts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#config-editor-&#34; &gt;⚙️ Config Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#cloud-backup--sync-&#34; &gt;☁ Cloud Backup &amp;amp; Sync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#language-switching-&#34; &gt;🌎 Language Switching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#multi-page-support-&#34; &gt;📃 Multi-Page Support&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Community&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#system-requirements-&#34; &gt;📊 System Requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#support-&#34; &gt;🙋‍♀️ Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#supporting-dashy-&#34; &gt;💖 Supporting Dashy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#credits-&#34; &gt;🏆 Credits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#developing-&#34; &gt;🧱 Developing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#release-schedule-&#34; &gt;🗞️ Release Schedule&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;#roadmap-&#34; &gt;🛣️ Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#alternatives-&#34; &gt;🙌 Alternatives&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;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id=&#34;features-&#34;&gt;Features 🌈
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;📃 Support for multiple pages&lt;/li&gt;
&lt;li&gt;🚦 Real-time status monitoring for each of your apps/links&lt;/li&gt;
&lt;li&gt;📊 Use widgets to display info and dynamic content from self-hosted services&lt;/li&gt;
&lt;li&gt;🔎 Instant search by name, domain, or tags + customizable hotkeys &amp;amp; keyboard shortcuts&lt;/li&gt;
&lt;li&gt;🎨 Many built-in color themes, with UI color editor and support for custom CSS&lt;/li&gt;
&lt;li&gt;🧸 Many icon options - Font-Awesome, homelab icons, auto-fetching Favicon, images, emojis, etc.&lt;/li&gt;
&lt;li&gt;💂 Optional authentication with multi-user access, configurable privileges, and SSO support&lt;/li&gt;
&lt;li&gt;🌎 Multi-language support, with 10+ human-translated languages, and more on the way&lt;/li&gt;
&lt;li&gt;☁ Optional, encrypted, free off-site cloud backup and restore feature available&lt;/li&gt;
&lt;li&gt;💼 A workspace view, for easily switching between multiple apps simultaneously&lt;/li&gt;
&lt;li&gt;🛩️ A minimal view, for use as a fast-loading browser Startpage&lt;/li&gt;
&lt;li&gt;🖱️ Choose app launch methods: new tab, same tab, clipboard, pop-up modal, or open in workspace view&lt;/li&gt;
&lt;li&gt;📏 Customizable layout, sizes, text, component visibility, sort order, behavior, etc.&lt;/li&gt;
&lt;li&gt;🖼️ Options for a full-screen background image, custom nav-bar links, HTML footer, title, etc.&lt;/li&gt;
&lt;li&gt;🚀 Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment&lt;/li&gt;
&lt;li&gt;⚙️ Easy single-file YAML-based configuration, and option to configure app through the UI&lt;/li&gt;
&lt;li&gt;✨ Under active development with improvements and new features added regularly&lt;/li&gt;
&lt;li&gt;🤏 Small bundle size, fully responsive UI, and PWA for basic offline access&lt;/li&gt;
&lt;li&gt;🆓 100% free and open-source&lt;/li&gt;
&lt;li&gt;🔐 Strong focus on privacy&lt;/li&gt;
&lt;li&gt;🌈 And loads more&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;demo-&#34;&gt;Demo ⚡
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Live Instances&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://demo.dashy.to&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Demo 1&lt;/a&gt; (Live Demo) ┆ &lt;a class=&#34;link&#34; href=&#34;https://live.dashy.to&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Demo 2&lt;/a&gt; (Dashy Links) ┆ &lt;a class=&#34;link&#34; href=&#34;https://dev.dashy.to&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Demo 3&lt;/a&gt; (Dev Preview)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Screenshots&lt;/strong&gt;: Checkout the &lt;a class=&#34;link&#34; href=&#34;./docs/showcase.md&#34; &gt;Showcase&lt;/a&gt;, to see example dashboards from the community&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spin up your own demo&lt;/strong&gt;: [&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img width=&#34;800&#34; src=&#34;https://i.ibb.co/L8YbNNc/dashy-demo2.gif&#34; alt=&#34;Demo&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;getting-started-&#34;&gt;Getting Started 🚀
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full setup instructions, see: &lt;a class=&#34;link&#34; href=&#34;./docs/deployment.md&#34; &gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;deploying-from-docker-hub-&#34;&gt;Deploying from Docker Hub 🐳
&lt;/h3&gt;&lt;p&gt;You will need &lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/get-docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; installed on your system&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-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -p 8080:8080 lissy93/dashy
&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;Or&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-docker&#34; data-lang=&#34;docker&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &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 4000:8080 &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 /root/my-local-conf.yml:/app/user-data/conf.yml &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;  --name my-dashboard &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;  --restart&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;always &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;  lissy93/dashy:latest&lt;span class=&#34;err&#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;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/lissy93/dashy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://dockeri.co/image/lissy93/dashy&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Dashy on Docker Hub&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See also: &lt;a class=&#34;link&#34; href=&#34;./docs/deployment.md#using-docker-compose&#34; &gt;examples with Docker Compose&lt;/a&gt;. Dashy is also available via GHCR, and tags for other architectures (&lt;code&gt;arm32v7&lt;/code&gt;, &lt;code&gt;arm64v8&lt;/code&gt;, etc.) and set versions are supported&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Once you&amp;rsquo;ve got Dashy running, see &lt;a class=&#34;link&#34; href=&#34;./docs/management.md&#34; &gt;App Management Docs&lt;/a&gt; for info on using health checks, updating, backups, web-server configs, logs, performance, security, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;deploying-from-source-&#34;&gt;Deploying from Source 🔨
&lt;/h3&gt;&lt;p&gt;You will need &lt;a class=&#34;link&#34; href=&#34;https://git-scm.com/downloads&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;git&lt;/a&gt;, the latest or LTS version of &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node.js&lt;/a&gt; and &lt;em&gt;(optionally)&lt;/em&gt; &lt;a class=&#34;link&#34; href=&#34;https://yarnpkg.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yarn&lt;/a&gt; installed on your system.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clone the Repo: &lt;code&gt;git clone https://github.com/Lissy93/dashy.git&lt;/code&gt; and &lt;code&gt;cd dashy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Configuration: Fill in your settings in &lt;code&gt;./user-data/conf.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install dependencies: &lt;code&gt;yarn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Build: &lt;code&gt;yarn build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run: &lt;code&gt;yarn start&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;See docs: &lt;a class=&#34;link&#34; href=&#34;./docs/management.md#basic-commands&#34; &gt;Full list of Dashy&amp;rsquo;s commands&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;deploy-to-the-cloud-&#34;&gt;Deploy to the Cloud ☁️
&lt;/h3&gt;&lt;p&gt;Dashy supports &lt;strong&gt;1-Click deployments&lt;/strong&gt; on several popular cloud platforms. To spin up a new instance, just click a link below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://i.ibb.co/ZxtzrP3/netlify.png&#34; width=&#34;18&#34;/&gt; Deploy to Netlify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://heroku.com/deploy?template=https://github.com/Lissy93/dashy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://i.ibb.co/d2P1WZ7/heroku.png&#34; width=&#34;18&#34;/&gt; Deploy to Heroku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://vercel.com/new/project?template=https://github.com/lissy93/dashy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://i.ibb.co/Ld2FZzb/vercel.png&#34; width=&#34;18&#34;/&gt; Deploy to Vercel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://render.com/deploy?repo=https://github.com/lissy93/dashy/tree/deploy_render&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://i.ibb.co/xCHtzgh/render.png&#34; width=&#34;18&#34;/&gt; Deploy to Render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://railway.app/template/MtdjAQ?referralCode=app&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://railway.app/brand/logo-light.png&#34; width=&#34;18&#34;/&gt; Deploy to Railway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://i.ibb.co/J7MGymY/googlecloud.png&#34; width=&#34;18&#34;/&gt; Deploy to GCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://i.ibb.co/HVWVYF7/docker.png&#34; width=&#34;18&#34;/&gt; Deploy to PWD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://easypanel.io/docs/templates/dashy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://i.ibb.co/7NxnM2P/easypanel.png&#34; width=&#34;18&#34;/&gt; Deploy to Easypanel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;For more 1-click cloud deployments, see &lt;a class=&#34;link&#34; href=&#34;./docs/deployment.md#deploy-to-cloud-service&#34; &gt;Cloud Deployment&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;configuring-&#34;&gt;Configuring 🔧
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full configuration documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/configuring.md&#34; &gt;&lt;strong&gt;Configuring&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dashy is configured through a YAML file, located at &lt;code&gt;./user-data/conf.yml&lt;/code&gt;. In addition, you can find a complete list of available options in the &lt;a class=&#34;link&#34; href=&#34;./docs/configuring.md&#34; &gt;Configuring Docs&lt;/a&gt;. The config can also be edited and saved directly through the UI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;theming-&#34;&gt;Theming 🎨
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full theming documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/theming.md&#34; &gt;&lt;strong&gt;Theming&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dashy comes pre-bundled with several built-in themes, which you can preview, apply and edit through the UI. With the theme configurator and support for custom CSS, everything is in place to quickly develop your own unique-looking dashboard.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://i.ibb.co/BVSHV1v/dashy-themes-slideshow.gif&#34;&gt;
    &lt;img alt=&#34;Example Themes&#34; src=&#34;https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/theme-slideshow.gif&#34; width=&#34;400&#34; /&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://i.ibb.co/cLDXj1R/dashy-theme-configurator.gif&#34;&gt;
    &lt;img alt=&#34;Example Themes&#34; src=&#34;https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/theme-config-demo.gif&#34; width=&#34;400&#34; /&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;icons-&#34;&gt;Icons 🧸
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full iconography documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/icons.md&#34; &gt;&lt;strong&gt;Icons&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Both sections and items can have an icon associated with them, defined under the &lt;code&gt;icon&lt;/code&gt; attribute. With several different icon packs supported, you&amp;rsquo;ll be able to find the perfect thumbnail for any app or service.&lt;/p&gt;
&lt;p&gt;The following icon types are supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Favicon&lt;/strong&gt; - Automatically fetch an apps icon from its Favicon or logo image&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Icon Packs&lt;/strong&gt; - Use any icon from &lt;a class=&#34;link&#34; href=&#34;https://fontawesome.com/icons&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;font-awesome&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://simpleicons.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;simple-icons&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://selfh.st/icons&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;selfh.st/icons&lt;/a&gt;, or &lt;a class=&#34;link&#34; href=&#34;https://github.com/Templarian/MaterialDesign&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;material icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Emoji&lt;/strong&gt; - Any valid emoji can be used as an icon&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generative&lt;/strong&gt; - Unique, auto-generated images for easily identifying services&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;URL&lt;/strong&gt; - Pass the URL of any valid image in to have it fetched and rendered&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local&lt;/strong&gt; - Store custom images locally and reference by filename&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Homelab Icons&lt;/strong&gt; - Using &lt;a class=&#34;link&#34; href=&#34;https://github.com/WalkxCode/dashboard-icons&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dashboard-icons&lt;/a&gt; for logos of commonly self-hosted services&lt;/li&gt;
&lt;/ul&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img width=&#34;400&#34; src=&#34;https://i.ibb.co/GTVmZnc/dashy-example-icons.png&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;status-indicators-&#34;&gt;Status Indicators 🚦
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full monitoring documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/status-indicators.md&#34; &gt;&lt;strong&gt;Status Indicators&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dashy has an optional feature to check if each app/ service is up and responding, then display a small status indicator icon. Hovering over it will show additional stats like response time and status code.&lt;/p&gt;
&lt;p&gt;Status indicators can be globally enabled by setting &lt;code&gt;appConfig.statusCheck: true&lt;/code&gt; or enabled/ disabled on a per-item basis. Status is checked on page load, but you can allow continuous polling by specifying a time interval between checks, in seconds under &lt;code&gt;appConfig.statusCheckInterval&lt;/code&gt;. You can also use a different endpoint for status checking, with &lt;code&gt;statusCheckUrl&lt;/code&gt;, and if needed, pass in custom headers under &lt;code&gt;statusCheckHeaders&lt;/code&gt;.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img alt=&#34;Status Checks demo&#34; src=&#34;https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/status-check-demo.gif&#34; width=&#34;600&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;widgets-&#34;&gt;Widgets 📊
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full widget documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/widgets.md&#34; &gt;&lt;strong&gt;Widgets&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can display dynamic content from services in the form of widgets. There are several pre-built widgets available for showing useful info, and integrations with commonly self-hosted services, but you can also easily create your own for almost any app.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img width=&#34;600&#34; src=&#34;https://i.ibb.co/GFjXVHy/dashy-widgets.png&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;authentication-&#34;&gt;Authentication 🔐
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full authentication documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/authentication.md&#34; &gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dashy has full support for secure single-sign-on using &lt;a class=&#34;link&#34; href=&#34;https://www.keycloak.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Keycloak&lt;/a&gt; for secure, easy authentication, see &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/authentication.md#keycloak&#34; &gt;setup docs&lt;/a&gt; for a full usage guide.&lt;/p&gt;
&lt;p&gt;There is also a basic auth feature, which doesn&amp;rsquo;t require additional setup. To enable this, add an &lt;code&gt;auth&lt;/code&gt; attribute under &lt;code&gt;appConfig&lt;/code&gt;, containing an array of &lt;code&gt;users&lt;/code&gt;, each with a username, SHA-256 hashed password and optional user type. Basic auth also supports several access control features, including read-only guest access and granular controls.&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;appConfig&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;auth&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;user&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;alicia&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;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hash&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;4D1E58C90B3B94BCAD9848ECCACD6D2A8C9FBC5CA913304BBA5CDEAB36FEEFA3&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;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;type&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;admin&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;p&gt;Other access control systems are also supported, see the &lt;a class=&#34;link&#34; href=&#34;./docs/authentication.md#alternative-authentication-methods&#34; &gt;Alternative Auth Methods&lt;/a&gt; docs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;alternate-views-&#34;&gt;Alternate Views 👓
&lt;/h2&gt;&lt;p&gt;As well as the default homepage, there is also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A minimal view, valid for use as a browser start page&lt;/li&gt;
&lt;li&gt;A workspace view, useful for visiting many apps simultaneously&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can change the view from the UI, using the switch icon in the top-right corner, or select a default view in the config under &lt;code&gt;appConfig.startingView&lt;/code&gt; attribute.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;b&gt;Example of Workspace View&lt;/b&gt;&lt;br&gt;
  &lt;img alt=&#34;Workspace view demo&#34; src=&#34;https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/workspace-demo.gif&#34; width=&#34;600&#34; /&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;b&gt;Example of Minimal View&lt;/b&gt;&lt;br&gt;
  &lt;img alt=&#34;Workspace view demo&#34; src=&#34;https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/minimal-view-demo.gif&#34; width=&#34;600&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;opening-methods-&#34;&gt;Opening Methods 🖱️
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full documentation on views and opening methods, see: &lt;a class=&#34;link&#34; href=&#34;./docs/alternate-views.md&#34; &gt;&lt;strong&gt;Alternate Views&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are several different ways you can launch apps. You can specify the default opening method for any given item under the &lt;code&gt;target&lt;/code&gt; attribute or set a site-wide default under &lt;code&gt;appConfig.defaultOpeningMethod&lt;/code&gt;. Right-click on an item to item for all options. The following options are supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sametab&lt;/code&gt; - The app will be launched in the current tab&lt;/li&gt;
&lt;li&gt;&lt;code&gt;newtab&lt;/code&gt; - The app will be launched in a new tab (or use Ctrl + Click)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;modal&lt;/code&gt; - Launch app in a resizable/ movable popup modal on the current page (or use Alt + Click)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;workspace&lt;/code&gt; - Changes to Workspace view and launches app&lt;/li&gt;
&lt;li&gt;&lt;code&gt;clipboard&lt;/code&gt; - Copy the app&amp;rsquo;s URL to your system clipboard&lt;/li&gt;
&lt;li&gt;&lt;code&gt;top&lt;/code&gt; - Opens in the top-most browsing context, useful if you&amp;rsquo;re accessing Dashy through an iframe&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;searching-and-shortcuts-&#34;&gt;Searching and Shortcuts 🔎
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full documentation on searching, see: &lt;a class=&#34;link&#34; href=&#34;./docs/searching.md&#34; &gt;&lt;strong&gt;Searching &amp;amp; Shortcuts&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Quickly finding and launching applications is the primary aim of Dashy. To that end, instant search and customizable keyboard shortcuts are built-in.&lt;/p&gt;
&lt;p&gt;To start filtering, start typing—no need to select the search bar or use any special key. Then use either the tab key or arrow keys to select and move between results, and hit enter to launch the currently selected application.&lt;/p&gt;
&lt;p&gt;For apps that you use regularly, you can set a custom keybinding. Use the &lt;code&gt;hotkey&lt;/code&gt; parameter on a certain item to specify a numeric key between &lt;code&gt;0 - 9&lt;/code&gt;. You can then launch that app by just pressing that key.&lt;/p&gt;
&lt;p&gt;You can also add custom tags to a given item to make finding them based on keywords easier. For example, in the following example, searching for &amp;lsquo;Movies&amp;rsquo; will show &amp;lsquo;Plex&amp;rsquo;&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;/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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;items&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;title&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;Plex&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hotkey&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;m&#34;&gt;8&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;icon&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;favicon&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;description&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;Media library&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;url&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;https://plex.lab.local&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;tags&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;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;movies, videos, music ]&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;p&gt;To search the web directly through Dashy, just press enter after typing your query. Options for web search are set under &lt;code&gt;appConfig.webSearch&lt;/code&gt;. There is built-in support for &lt;a class=&#34;link&#34; href=&#34;./docs/searching.md#setting-search-engine&#34; &gt;10+ search engines&lt;/a&gt;, or &lt;a class=&#34;link&#34; href=&#34;./docs/searching.md#using-custom-search-engine&#34; &gt;use your own custom provider&lt;/a&gt; or self-hosted instance. With the web search, you can also define your bangs to redirect results to any given app, website, or search engine, when the query is preceded with a certain character sequence (usually beginning in &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;!&lt;/code&gt; or &lt;code&gt;:&lt;/code&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;/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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;webSearch&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;searchEngine&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;duckduckgo&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;openingMethod&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;newtab&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;searchBangs&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/r&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;reddit&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/w&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;wikipedia&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/s&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;https://whoogle.local/search?q=&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#39;:wolf&amp;#39;&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;wolframalpha&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#39;:so&amp;#39;&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;stackoverflow&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#39;:git&amp;#39;&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;github&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;p&gt;Hit &lt;code&gt;Esc&lt;/code&gt; at any time to close any open apps, clear the search field, or hide any modals.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;config-editor-&#34;&gt;Config Editor ⚙️
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full config documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/configuring.md&#34; &gt;&lt;strong&gt;Configuring&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As well as passing in a YAML config file, you can also configure the app directly through the UI and preview changes live.&lt;/p&gt;
&lt;p&gt;To edit any section or item, right-click on it, and select &amp;ldquo;Edit&amp;rdquo;, or enter the Edit Mode (using the Pen icon in the top-right), then click any part of the page to edit. Changes will be visible immediately but will not be saved until clicking &amp;ldquo;Save to Disk&amp;rdquo; or &amp;ldquo;Save Locally&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Under the config menu, you can export, view, backup, or reset app config and edit the raw config file in a text editor with built-in schema validation. It&amp;rsquo;s recommended to keep a backup of your config.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img alt=&#34;Interactive Editor demo&#34; src=&#34;https://user-images.githubusercontent.com/1862727/139543020-b0576d28-0830-476f-afc8-a815d4de6def.gif&#34; width=&#34;600&#34; /&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img alt=&#34;Config Editor demo&#34; src=&#34;https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/config-editor-demo.gif&#34; width=&#34;600&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;cloud-backup--sync-&#34;&gt;Cloud Backup &amp;amp; Sync ☁
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full backup documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/backup-restore.md&#34; &gt;&lt;strong&gt;Cloud Backup &amp;amp; Sync&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dashy has an &lt;strong&gt;optional&lt;/strong&gt; built-in feature for securely backing up your config to a hosted cloud service and then restoring it on another instance. This is useful not only for backing up your configuration off-site but also enables Dashy to be used without having to write a YAML config file.&lt;/p&gt;
&lt;p&gt;All data is fully E2E encrypted before being sent to the backend (done in &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/blob/master/src/utils/CloudBackup.js&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;CloudBackup.js&lt;/code&gt;&lt;/a&gt; using &lt;a class=&#34;link&#34; href=&#34;https://github.com/brix/crypto-js&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;crypto.js&lt;/a&gt; &amp;rsquo;s AES method). The data is then sent to a &lt;a class=&#34;link&#34; href=&#34;https://developers.cloudflare.com/workers/learning/how-workers-works&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare worker&lt;/a&gt; and stored in a &lt;a class=&#34;link&#34; href=&#34;https://developers.cloudflare.com/workers/learning/how-kv-works&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;KV&lt;/a&gt; data store.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;language-switching-&#34;&gt;Language Switching 🌎
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full internationalization documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/multi-language-support.md&#34; &gt;&lt;strong&gt;Multi-Language Support&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dashy supports multiple languages and locales. When available, your language should be automatically detected and applied on load. But you can also select a language through the UI (under config &amp;ndash;&amp;gt; Switch Language) or set &lt;code&gt;appConfig.language&lt;/code&gt; to your language (specified as a 2-digit &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ISO 639-1 code&lt;/a&gt;), as seen below, e.g. &lt;code&gt;language: de&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;supported-languages&#34;&gt;Supported Languages
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;🇬🇧 &lt;strong&gt;English&lt;/strong&gt;: &lt;code&gt;en&lt;/code&gt; - &lt;em&gt;Default&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;🇦🇪 &lt;strong&gt;Arabic&lt;/strong&gt;: &lt;code&gt;ar&lt;/code&gt; - &lt;em&gt;Auto-generated&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;🇧🇩 &lt;strong&gt;Bengali&lt;/strong&gt;: &lt;code&gt;bn&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/soaibsafi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@soaibsafi&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇧🇬 &lt;strong&gt;Bulgarian&lt;/strong&gt;: &lt;code&gt;bg&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/asenov&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@asenov&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇨🇳 &lt;strong&gt;Chinese&lt;/strong&gt;: &lt;code&gt;cn&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/FormatToday&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@FormatToday&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇨🇿 &lt;strong&gt;Czech&lt;/strong&gt;: &lt;code&gt;cs&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Tuzi555&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Tuzi555&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇩🇰 &lt;strong&gt;Danish&lt;/strong&gt;: &lt;code&gt;da&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/lordpansar&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@lordpansar&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇳🇱 &lt;strong&gt;Dutch&lt;/strong&gt;: &lt;code&gt;nl&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/evroon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@evroon&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇫🇷 &lt;strong&gt;French&lt;/strong&gt;: &lt;code&gt;fr&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EVOTk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@EVOTk&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇩🇪 &lt;strong&gt;German&lt;/strong&gt;: &lt;code&gt;de&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Niklashere&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Niklashere&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇬🇷 &lt;strong&gt;Greek&lt;/strong&gt;: &lt;code&gt;el&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/aviolaris&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@aviolaris&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇮🇳 &lt;strong&gt;Hindi&lt;/strong&gt;: &lt;code&gt;hi&lt;/code&gt; - &lt;em&gt;Auto-generated&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;🇮🇹 &lt;strong&gt;Italian&lt;/strong&gt;: &lt;code&gt;it&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alexdelprete&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alexdelprete&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇯🇵 &lt;strong&gt;Japanese&lt;/strong&gt;: &lt;code&gt;ja&lt;/code&gt; - &lt;em&gt;Auto-generated&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;🇰🇷 &lt;strong&gt;Korean&lt;/strong&gt;: &lt;code&gt;ko&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/boggy-cs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@boggy-cs&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇳🇴 &lt;strong&gt;Norwegian Bokmål&lt;/strong&gt;: &lt;code&gt;nb&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/rubjo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rubjo&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇵🇱 &lt;strong&gt;Polish&lt;/strong&gt;: &lt;code&gt;pl&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/skaarj1989&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@skaarj1989&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇵🇹 &lt;strong&gt;Portuguese&lt;/strong&gt;: &lt;code&gt;pt&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/LeoColman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@LeoColman&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🛰️ &lt;strong&gt;Galician&lt;/strong&gt;: &lt;code&gt;gl&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pvillaverde&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@pvillaverde&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇷🇺 &lt;strong&gt;Russian&lt;/strong&gt;: &lt;code&gt;ru&lt;/code&gt; -Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/sasetz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sasetz&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇸🇰 &lt;strong&gt;Slovak&lt;/strong&gt;: &lt;code&gt;sk&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Smexhy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Smexhy&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇸🇮 &lt;strong&gt;Slovenian&lt;/strong&gt;: &lt;code&gt;sl&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/UrekD&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@UrekD&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇪🇸 &lt;strong&gt;Spanish&lt;/strong&gt;: &lt;code&gt;es&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/lu4t&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@lu4t&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇸🇪 &lt;strong&gt;Swedish&lt;/strong&gt;: &lt;code&gt;sv&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/BOZG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BOZG&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇹🇼 &lt;strong&gt;Traditional Chinese&lt;/strong&gt;: &lt;code&gt;zh-TW&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/stanly0726&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@stanly0726&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇹🇷 &lt;strong&gt;Turkish&lt;/strong&gt;: &lt;code&gt;tr&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/imsakg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@imsakg&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🇺🇦 &lt;strong&gt;Ukrainian&lt;/strong&gt;: &lt;code&gt;uk&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/allozavrr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@allozavrr&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🏴‍☠️ &lt;strong&gt;Pirate&lt;/strong&gt;: &lt;code&gt;pirate&lt;/code&gt; - Contributed by &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/lissy93&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Lissy93&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;add-your-language&#34;&gt;Add your Language
&lt;/h4&gt;&lt;p&gt;I would love Dashy to be available to everyone without language being a barrier to entry. If you&amp;rsquo;ve got a few minutes to spare, consider adding translations for your language. It&amp;rsquo;s a quick task, and all text is in &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/tree/master/src/assets/locales&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;a single JSON file&lt;/a&gt;. Since any missing text will fall back to English, you don&amp;rsquo;t need to translate it all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;multi-page-support-&#34;&gt;Multi-Page Support 📃
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full multi-page documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/pages-and-sections.md&#34; &gt;&lt;strong&gt;Pages &amp;amp; Sections&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Within your dashboard, you can have as many sub-pages as you require. To load additional pages, specify a name, and path to a config file under &lt;code&gt;pages&lt;/code&gt;. The config file can be either local (stored in &lt;code&gt;/public&lt;/code&gt;), or remote (located anywhere accessible).&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pages&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&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;name&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;Networking Services&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;path&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;s1&#34;&gt;&amp;#39;networking.yml&amp;#39;&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;name&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;Work Stuff&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;path&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;s1&#34;&gt;&amp;#39;work.yml&amp;#39;&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;p&gt;Or&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;/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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pages&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&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;name&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;Getting Started&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;path&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;s1&#34;&gt;&amp;#39;https://snippet.host/tvcw/raw&amp;#39;&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;name&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;Homelab&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;path&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;s1&#34;&gt;&amp;#39;https://snippet.host/tetp/raw&amp;#39;&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;name&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;Browser Startpage&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;path&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;s1&#34;&gt;&amp;#39;https://snippet.host/zcom/raw&amp;#39;&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;hr&gt;
&lt;h2 id=&#34;system-requirements-&#34;&gt;System Requirements 📊
&lt;/h2&gt;&lt;p&gt;If running on bare metal, Dashy requires &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; V 16.0.0 or later, LTS (16.13.2) is recommended.&lt;/p&gt;
&lt;p&gt;If running in Docker container, the recommended base image is Alpine (3.15)&lt;/p&gt;
&lt;p&gt;The hardware requirements vary depending on where and how you are running Dashy. Generally speaking, on a bare-metal system or Docker container, 1GB of memory should be more than enough, and depending on whether you are using your own assets, then 1GB of disk space should be sufficient.&lt;/p&gt;
&lt;p&gt;If you are using one of the 1-click cloud deployment methods, serving the app through a CDN or using a static hosting provider, then there are no specific requirements, as the built app is just a series of static JS files, and so is very light-weight.&lt;/p&gt;
&lt;p&gt;Dashy also wells run on low-powered ARM-based single board computers, such as a Raspberry Pi (tested on Pi 3)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Browser Support&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;img src=&#34;https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Chrome&#34;
	
	
&gt;&lt;/th&gt;
          &lt;th&gt;&lt;img src=&#34;https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Firefox&#34;
	
	
&gt;&lt;/th&gt;
          &lt;th&gt;&lt;img src=&#34;https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;IE&#34;
	
	
&gt;&lt;/th&gt;
          &lt;th&gt;&lt;img src=&#34;https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Opera&#34;
	
	
&gt;&lt;/th&gt;
          &lt;th&gt;&lt;img src=&#34;https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Safari&#34;
	
	
&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Latest ✔&lt;/td&gt;
          &lt;td&gt;Latest ✔&lt;/td&gt;
          &lt;td&gt;10+ ✔&lt;/td&gt;
          &lt;td&gt;Latest ✔&lt;/td&gt;
          &lt;td&gt;6.1+ ❌&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;support-&#34;&gt;Support 🙋‍♀️
&lt;/h2&gt;&lt;p&gt;If you&amp;rsquo;re having trouble getting Dashy up and running, or have a question about usage or configuration, feel free to ask. The best place to do this is via &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;the Discussions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve found something which isn&amp;rsquo;t working as it should, please raise a bug by &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/issues/new/choose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;opening a ticket&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s best to check the &lt;a class=&#34;link&#34; href=&#34;./docs&#34; &gt;docs&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/issues?q=label%3A%22%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F&amp;#43;Question%22&amp;#43;&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;previous issues&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;./docs/troubleshooting.md&#34; &gt;troubleshooting guide&lt;/a&gt; first.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;supporting-dashy-&#34;&gt;Supporting Dashy 💖
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full details and other ways you can help out, see: &lt;a class=&#34;link&#34; href=&#34;./docs/contributing.md&#34; &gt;&lt;strong&gt;Contributing&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you&amp;rsquo;re using Dashy and would like to help support its development, then that would be awesome! Contributions of any type, any size, are always very much appreciated, and we will appropriately credit you for your effort.&lt;/p&gt;
&lt;p&gt;Several areas that we need a bit of help with at the moment are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Translating - Help make Dashy available to non-native English speakers by &lt;a class=&#34;link&#34; href=&#34;./docs/multi-language-support.md#adding-a-new-language&#34; &gt;adding your language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Donate a small amount by &lt;a class=&#34;link&#34; href=&#34;https://github.com/sponsors/Lissy93&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sponsoring @Lissy93 on GitHub&lt;/a&gt; and receive some extra perks!&lt;/li&gt;
&lt;li&gt;Complete a &lt;a class=&#34;link&#34; href=&#34;https://survey.typeform.com/to/gl0L68ou&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;short survey&lt;/a&gt; to have your say about future features&lt;/li&gt;
&lt;li&gt;Share your dashboard in the &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/blob/master/docs/showcase.md#dashy-showcase-&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Showcase&lt;/a&gt;, to inspire others&lt;/li&gt;
&lt;li&gt;Spread the word by sharing Dashy or a screenshot of your dashboard to help new users discover it&lt;/li&gt;
&lt;li&gt;Submit a PR to add a new feature, fix a bug, update the docs, add a theme, widget or something else&lt;/li&gt;
&lt;li&gt;Star Dashy on GitHub/ DockerHub or leave an upvote / review on &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/blob/master/docs/contributing.md#star-upvote-or-leave-a-review&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;these platforms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/sponsors/Lissy93&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;credits-&#34;&gt;Credits 🏆
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For a complete list of credits, and attributions to packages used within Dashy, see: &lt;a class=&#34;link&#34; href=&#34;./docs/credits.md&#34; &gt;&lt;strong&gt;Credits&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thank you so much to everyone who has helped with Dashy so far; every contribution is very much appreciated.&lt;/p&gt;
&lt;h4 id=&#34;sponsors&#34;&gt;Sponsors
&lt;/h4&gt;&lt;p&gt;Huge thanks to the sponsors helping to support Dashy&amp;rsquo;s development!&lt;/p&gt;
&lt;!-- readme: sponsors -start --&gt;
&lt;table&gt;
&lt;tr&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/vincentkoc&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/25068?u=fbd5b2d51142daa4bdbc21e21953a3b8b8188a4a&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;vincentkoc&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Vincent Koc&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/BrianCurliss&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/1222949?v=4&#34; width=&#34;80;&#34; alt=&#34;BrianCurliss&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Brian Curliss&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/AnandChowdhary&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/2841780?u=747e554b3a7f12eb20b7910e1c87d817844f714f&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;AnandChowdhary&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Anand Chowdhary&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/bile0026&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/5022496?u=aec96ad173c0ea9baaba93807efa8a848af6595c&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;bile0026&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Zach Biles&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/UlisesGascon&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/5110813?u=3c41facd8aa26154b9451de237c34b0f78d672a5&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;UlisesGascon&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Ulises Gascón&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/InDieTasten&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/7047377?u=8d8f8017628b38bc46dcbf3620e194b01d3fb2d1&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;InDieTasten&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;InDieTasten&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/araguaci&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/7318668?v=4&#34; width=&#34;80;&#34; alt=&#34;araguaci&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Araguaci&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/bmcgonag&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/7346620?u=2a0f9284f3e12ac1cc15288c254d1ec68a5081e8&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;bmcgonag&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Brian McGonagill&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/vlad-tim&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/11474041?u=eee43705b54d2ec9f51fc4fcce5ad18dd17c87e4&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;vlad-tim&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Vlad&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/helixzz&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/12218889?u=d06d0c103dfbdb99450623064f7da3c5a3675fb6&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;helixzz&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;HeliXZz&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/mryesiller&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/24632172?u=0d20f2d615158f87cd60a3398d3efb026c32f291&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;mryesiller&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Göksel Yeşiller&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/undefined&#34;&gt;
            &lt;img src=&#34;&#34; width=&#34;80;&#34; alt=&#34;undefined&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Undefined&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/OlliVHH&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/84959562?v=4&#34; width=&#34;80;&#34; alt=&#34;OlliVHH&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;HamburgerJung&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/frankdez93&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/87549420?v=4&#34; width=&#34;80;&#34; alt=&#34;frankdez93&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Frankdez93&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/hudsonrock-partnerships&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/163282900?u=5f2667f7fe5d284ac7a2da6b0800ea8970b0fcbf&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;hudsonrock-partnerships&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Hudsonrock-partnerships&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;
    &lt;td align=&#34;center&#34;&gt;
        &lt;a href=&#34;https://github.com/gl0bal01&#34;&gt;
            &lt;img src=&#34;https://avatars.githubusercontent.com/u/173822055?u=4d323807f120b34da9b156bfd168b46a22844764&amp;v=4&#34; width=&#34;80;&#34; alt=&#34;gl0bal01&#34;/&gt;
            &lt;br /&gt;
            &lt;sub&gt;&lt;b&gt;Gl0bal01 💖 龴ↀ◡ↀ龴&lt;/b&gt;&lt;/sub&gt;
        &lt;/a&gt;
    &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;!-- readme: sponsors -end --&gt;
&lt;h4 id=&#34;contributors&#34;&gt;Contributors
&lt;/h4&gt;&lt;p&gt;[&lt;/p&gt;
&lt;h4 id=&#34;stats&#34;&gt;Stats
&lt;/h4&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/blob/master/docs/credits.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repobeats.axiom.co/api/embed/48546e3c768d38c450ba136e32c0992bcf58ad73.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Stats&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;developing-&#34;&gt;Developing 🧱
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full development documentation, see: &lt;a class=&#34;link&#34; href=&#34;./docs/developing.md&#34; &gt;&lt;strong&gt;Developing&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://open.vscode.dev/Lissy93/Dashy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Open_in-VS_Code-863cfc?style=flat-square&amp;amp;logo=visualstudiocode&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Open Project in VS Code&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://gitpod.io/#github.com/lissy93/dashy.git&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Open_in-GitPod-ffae33?style=flat-square&amp;amp;logo=gitpod&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Open in GitPod&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.dev/Lissy93/dashy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Open_in-Code%20Spaces-131313?style=flat-square&amp;amp;logo=github&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Open in GitHub Code Spaces&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before getting started, you&amp;rsquo;ll need &lt;a class=&#34;link&#34; href=&#34;https://git-scm.com/downloads&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Git&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/en/download/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node&lt;/a&gt; and optionally &lt;a class=&#34;link&#34; href=&#34;https://yarnpkg.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yarn&lt;/a&gt; (run &lt;code&gt;npm i -g yarn&lt;/code&gt;) installed.&lt;/p&gt;
&lt;p&gt;To set up the development environment:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Get Code: &lt;code&gt;git clone https://github.com/Lissy93/dashy.git&lt;/code&gt;  and &lt;code&gt;cd dashy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install dependencies: &lt;code&gt;yarn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Start dev server: &lt;code&gt;yarn dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open the browser: &lt;code&gt;http://localhost:8080&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When you&amp;rsquo;re ready, you can build the production app with &lt;code&gt;yarn build&lt;/code&gt;, and then run it with &lt;code&gt;yarn start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re new to web development, I&amp;rsquo;ve put together a short &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/blob/master/docs/developing.md#resources-for-beginners&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;list of resources&lt;/a&gt; to help beginners get started&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Repo Status&lt;/strong&gt;:
&lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/pulls&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://flat.badgen.net/github/open-prs/lissy93/dashy?icon=github&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Open PRs&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/pulls?q=&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://flat.badgen.net/github/prs/lissy93/dashy?icon=github&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Total PRs&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/commits/master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/commit-activity/m/lissy93/dashy?style=flat-square&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub commit activity&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/commits/master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://flat.badgen.net/github/last-commit/lissy93/dashy?icon=github&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Last Commit&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/graphs/contributors&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://flat.badgen.net/github/contributors/lissy93/dashy?icon=github&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Contributors&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;documentation-&#34;&gt;Documentation 📘
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;For full docs, see: &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;./docs/readme.md&#34; &gt;Documentation Contents&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;running-dashy&#34;&gt;Running Dashy
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;💨 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/quick-start.md&#34; &gt;Quick Start&lt;/a&gt; - TDLR guide on getting Dashy up and running in under 5 minutes&lt;/li&gt;
&lt;li&gt;🚀 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/deployment.md&#34; &gt;Deployment&lt;/a&gt; - Full guide on setting up Dashy on various different environments&lt;/li&gt;
&lt;li&gt;🔧 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/configuring.md&#34; &gt;Configuring&lt;/a&gt; - Complete list of all available options in the config file&lt;/li&gt;
&lt;li&gt;💻 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/management.md&#34; &gt;Management&lt;/a&gt; - Managing your app, updating, security, web server configuration, etc&lt;/li&gt;
&lt;li&gt;🚒 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/troubleshooting.md&#34; &gt;Troubleshooting&lt;/a&gt; - Common errors and problems, and how to fix them&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;feature-docs&#34;&gt;Feature Docs
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;🛡️ &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/authentication.md&#34; &gt;Authentication&lt;/a&gt; - Guide to setting up authentication to protect your dashboard&lt;/li&gt;
&lt;li&gt;🌈 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/alternate-views.md&#34; &gt;Alternate Views&lt;/a&gt; - Outline of available pages / views and item opening methods&lt;/li&gt;
&lt;li&gt;💾 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/backup-restore.md&#34; &gt;Backup &amp;amp; Restore&lt;/a&gt; - Guide to backing up config with Dashy&amp;rsquo;s cloud sync feature&lt;/li&gt;
&lt;li&gt;🧸 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/icons.md&#34; &gt;Icons&lt;/a&gt; - Outline of all available icon types for sections and items, with examples&lt;/li&gt;
&lt;li&gt;🌐 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/multi-language-support.md&#34; &gt;Multi-Language Support&lt;/a&gt; - Switching languages, and adding a new locales&lt;/li&gt;
&lt;li&gt;🚦 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/status-indicators.md&#34; &gt;Status Indicators&lt;/a&gt; - Using Dashy to monitor uptime and status of your apps&lt;/li&gt;
&lt;li&gt;🔍 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/searching.md&#34; &gt;Searching  &amp;amp; Shortcuts&lt;/a&gt; - Searching, launching methods + keyboard shortcuts&lt;/li&gt;
&lt;li&gt;🎨 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/theming.md&#34; &gt;Theming&lt;/a&gt; - Complete guide to applying, writing and modifying themes + styles&lt;/li&gt;
&lt;li&gt;📊 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/widgets.md&#34; &gt;Widgets&lt;/a&gt; - List of all dynamic content widgets, with usage guides and examples&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;development-and-contributing&#34;&gt;Development and Contributing
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;🧱 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/developing.md&#34; &gt;Developing&lt;/a&gt; - Running Dashy development server locally, and general workflow&lt;/li&gt;
&lt;li&gt;🛎️ &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/development-guides.md&#34; &gt;Development Guides&lt;/a&gt; - Common development tasks, to help new contributors&lt;/li&gt;
&lt;li&gt;💖 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/contributing.md&#34; &gt;Contributing&lt;/a&gt; - How to contribute to Dashy&lt;/li&gt;
&lt;li&gt;🌟 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/showcase.md&#34; &gt;Showcase&lt;/a&gt; - See how others are using Dashy, and share your dashboard&lt;/li&gt;
&lt;li&gt;🏆 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/credits.md&#34; &gt;Credits&lt;/a&gt; - Shout out to the amazing people who have contributed so far&lt;/li&gt;
&lt;li&gt;🗞️ &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/release-workflow.md&#34; &gt;Release Workflow&lt;/a&gt; - Info about releases, CI and automated tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;misc&#34;&gt;Misc
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;🔐 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/privacy.md&#34; &gt;Privacy &amp;amp; Security&lt;/a&gt; - List of requests, potential issues, and security resources&lt;/li&gt;
&lt;li&gt;📄 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/LICENSE&#34; &gt;License&lt;/a&gt; - Copy of the MIT License&lt;/li&gt;
&lt;li&gt;⚖️ &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/.github/LEGAL.md&#34; &gt;Legal&lt;/a&gt; - Licenses of direct dependencies&lt;/li&gt;
&lt;li&gt;📏 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/.github/CODE_OF_CONDUCT.md&#34; &gt;Code of Conduct&lt;/a&gt; - Contributor Covenant Code of Conduct&lt;/li&gt;
&lt;li&gt;🌳 &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/.github/CHANGELOG.md&#34; &gt;Changelog&lt;/a&gt; - Details of recent changes, and historical versions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;roadmap-&#34;&gt;Roadmap 🛣️
&lt;/h2&gt;&lt;p&gt;For upcoming features that will be released in the near future, see the &lt;a class=&#34;link&#34; href=&#34;https://github.com/Lissy93/dashy/discussions/405&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Current Roadmap&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For past updates, see the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/.github/CHANGELOG.md&#34; &gt;&lt;strong&gt;Changelog&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;alternatives-&#34;&gt;Alternatives 🙌
&lt;/h2&gt;&lt;p&gt;A few self-hosted web apps serve a similar purpose to Dashy. If you&amp;rsquo;re looking for a dashboard, and Dashy doesn&amp;rsquo;t meet your needs, I highly recommend you check these projects out!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pawelmalak/flame&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Flame&lt;/a&gt; by @pawelmalak (&lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://lamarios.github.io/Homedash2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HomeDash2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bastienwirtz/homer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homer&lt;/a&gt; (&lt;code&gt;Apache License 2.0&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://organizr.app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Organizr&lt;/a&gt; (&lt;code&gt;GPL-3.0 License&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/linuxserver/Heimdall&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Heimdall&lt;/a&gt; (&lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Smashing/smashing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Smashing&lt;/a&gt; (&lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;See more 👉 &lt;a class=&#34;link&#34; href=&#34;https://github.com/awesome-selfhosted/awesome-selfhosted#personal-dashboards&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Awesome Self-Hosted&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;license-&#34;&gt;License 📜
&lt;/h2&gt;&lt;p&gt;Dashy is Licensed under &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/MIT_License&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MIT X11&lt;/a&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;span class=&#34;lnt&#34;&gt;21
&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-zed&#34; data-lang=&#34;zed&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Copyright&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;©&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;2021&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;2024&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Alicia&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sykes&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//aliciasykes.com&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;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;n&#34;&gt;Permission&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hereby&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;granted&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;n&#34;&gt;free&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;charge&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;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;any&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;person&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;obtaining&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;copy&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&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;n&#34;&gt;software&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;and&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;associated&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;documentation&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;files&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Software&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#34;&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;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;deal&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Software&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;n&#34;&gt;without&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;restriction&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;n&#34;&gt;including&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;without&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;limitation&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rights&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;use&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;n&#34;&gt;copy&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;n&#34;&gt;modify&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;n&#34;&gt;merge&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&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;publish&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;n&#34;&gt;distribute&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;n&#34;&gt;sublicense&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;nn&#34;&gt;and/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;or&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sell&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;copies&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Software&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;n&#34;&gt;and&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;permit&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;n&#34;&gt;persons&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;whom&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Software&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;furnished&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;do&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;so&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;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;following&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conditions&lt;/span&gt;&lt;span class=&#34;o&#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;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;n&#34;&gt;The&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;above&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;copyright&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;notice&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;and&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;permission&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;notice&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shall&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;be&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;included&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;copies&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;or&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;n&#34;&gt;substantial&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;portions&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Software&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;n&#34;&gt;THE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SOFTWARE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PROVIDED&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IS&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#34;&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;n&#34;&gt;WITHOUT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WARRANTY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ANY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;KIND&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;n&#34;&gt;EXPRESS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IMPLIED&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&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;INCLUDING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;BUT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LIMITED&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;THE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WARRANTIES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MERCHANTABILITY&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;n&#34;&gt;FITNESS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FOR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PARTICULAR&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;n&#34;&gt;PURPOSE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AND&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NONINFRINGEMENT&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;n&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EVENT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;THE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AUTHORS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;COPYRIGHT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HOLDERS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;BE&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;n&#34;&gt;LIABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FOR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ANY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CLAIM&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;n&#34;&gt;DAMAGES&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;n&#34;&gt;OR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OTHER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LIABILITY&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;n&#34;&gt;WHETHER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ACTION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CONTRACT&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&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;TORT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OTHERWISE&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;n&#34;&gt;ARISING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FROM&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;n&#34;&gt;OUT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OF&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;n&#34;&gt;OR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CONNECTION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WITH&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;THE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SOFTWARE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;THE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;USE&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;n&#34;&gt;OR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OTHER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DEALINGS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;THE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SOFTWARE&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;n&#34;&gt;Except&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;contained&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;notice&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;n&#34;&gt;Dashy&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shall&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;not&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;be&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;used&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;advertising&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;or&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;otherwise&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;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;promote&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sale&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;n&#34;&gt;use&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;n&#34;&gt;or&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;other&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dealings&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Software&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;without&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;prior&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;written&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;n&#34;&gt;authorization&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;repo&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;owner&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&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;&lt;strong&gt;TDLR;&lt;/strong&gt; &lt;em&gt;You can do whatever you like with Dashy: use it in private or commercial settings,&lt;/em&gt;
&lt;em&gt;redistribute and modify it. But you must display this license and credit the author.&lt;/em&gt;
&lt;em&gt;There is no warranty that this app will work as expected, and the author cannot be held&lt;/em&gt;
&lt;em&gt;liable for anything that goes wrong.&lt;/em&gt;
For more info, see TLDR Legal&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://tldrlegal.com/license/mit-license&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Explanation of MIT&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://app.fossa.com/projects/git%2Bgithub.com%2FLissy93%2Fdashy?ref=badge_large&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://app.fossa.com/api/projects/git%2Bgithub.com%2FLissy93%2Fdashy.svg?type=large&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FOSSA Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#dashy&#34; &gt;⬆️ Back to Top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;!-- License + Copyright --&gt;
&lt;p  align=&#34;center&#34;&gt;
  &lt;i&gt;© &lt;a href=&#34;https://aliciasykes.com&#34;&gt;Alicia Sykes&lt;/a&gt; 2024&lt;/i&gt;&lt;br&gt;
  &lt;i&gt;Licensed under &lt;a href=&#34;https://gist.github.com/Lissy93/143d2ee01ccc5c052a17&#34;&gt;MIT&lt;/a&gt;&lt;/i&gt;&lt;br&gt;
  &lt;a href=&#34;https://github.com/lissy93&#34;&gt;&lt;img src=&#34;https://i.ibb.co/4KtpYxb/octocat-clean-mini.png&#34; /&gt;&lt;/a&gt;&lt;br&gt;
  &lt;sup&gt;Thanks for visiting :)&lt;/sup&gt;
&lt;/p&gt;
&lt;!-- Dinosaurs are Awesome --&gt;
&lt;!-- 
                        . - ~ ~ ~ - .
      ..     _      .-~               ~-.
     //|     \ `..~                      `.
    || |      }  }              /       \  \
(\   \\ \~^..&#39;                 |         }  \
 \`.-~  o      /       }       |        /    \
 (__          |       /        |       /      `.
  `- - ~ ~ -._|      /_ - ~ ~ ^|      /- _      `.
              |     /          |     /     ~-.     ~- _
              |_____|          |_____|         ~ - . _ _~_-_
--&gt;
</description>
        </item>
        <item>
        <title>AdminLTE</title>
        <link>https://producthunt.programnotes.cn/en/p/adminlte/</link>
        <pubDate>Wed, 02 Jul 2025 15:29:57 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/adminlte/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1593562262452-c3a669370a36?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTE0NDEzNTl8&amp;ixlib=rb-4.1.0" alt="Featured image of post AdminLTE" /&gt;&lt;h1 id=&#34;colorlibhqadminlte&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ColorlibHQ/AdminLTE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ColorlibHQ/AdminLTE&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;adminlte---bootstrap-5-admin-dashboard&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://adminlte.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AdminLTE - Bootstrap 5 Admin Dashboard&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/admin-lte&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/npm/v/admin-lte/latest.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;npm version&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://packagist.org/packages/almasaeed2010/adminlte&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/packagist/v/almasaeed2010/adminlte.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Packagist&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.jsdelivr.com/package/npm/admin-lte&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://data.jsdelivr.com/v1/package/npm/admin-lte/badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;cdn version&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/jfdvjwFqfz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/discord-join%20now-green&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Discord Invite&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://app.netlify.com/sites/adminlte-v4/deploys&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://api.netlify.com/api/v1/badges/1277b36b-08f3-43fa-826a-4b4d24614b3c/deploy-status&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Netlify Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AdminLTE&lt;/strong&gt; is a fully responsive administration template. Based on &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://getbootstrap.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bootstrap 5&lt;/a&gt;&lt;/strong&gt; framework and also the JavaScript plugins.
Highly customizable and easy to use. Fits many screen resolutions from small mobile devices to large desktops.&lt;/p&gt;
&lt;h2 id=&#34;whats-new-in-v400-rc3&#34;&gt;What&amp;rsquo;s New in v4.0.0-rc3
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Production Deployment &amp;amp; Cross-Platform Compatibility&lt;/strong&gt; - This release resolves critical production deployment issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fixed Production Builds&lt;/strong&gt; - Resolved CSS/JS path issues, sidebar navigation, and image loading in all deployment scenarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smart Path Resolution&lt;/strong&gt; - Automatic relative path calculation works for root deployment, sub-folders, and CDN hosting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RTL CSS Fix&lt;/strong&gt; - Eliminated rtlcss interference with standard LTR production builds&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated Dependencies&lt;/strong&gt; - Bootstrap 5.3.7, Bootstrap Icons 1.13.1, OverlayScrollbars 2.11.0&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero Console Errors&lt;/strong&gt; - Fixed all CDN integrity mismatches and runtime issues&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FTP/Static Host Ready&lt;/strong&gt; - Perfect compatibility with traditional hosting and modern static platforms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Key Improvements:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Development and production environments now behave identically&lt;/li&gt;
&lt;li&gt;✅ Images, CSS, and JavaScript load correctly in any deployment structure&lt;/li&gt;
&lt;li&gt;✅ Sidebar navigation displays properly with badges and arrow indicators&lt;/li&gt;
&lt;li&gt;✅ All CDN resources load without console errors&lt;/li&gt;
&lt;li&gt;✅ Complete production build included in repository for easy deployment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG.md&lt;/a&gt; for complete details.&lt;/p&gt;
&lt;h2 id=&#34;looking-for-premium-templates&#34;&gt;Looking for Premium Templates?
&lt;/h2&gt;&lt;p&gt;AdminLTE.io just opened a new premium templates page. Hand picked to ensure the best quality and the most affordable
prices. Visit &lt;a class=&#34;link&#34; href=&#34;https://adminlte.io/premium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://adminlte.io/premium&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://adminlte.io/AdminLTE3.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;“AdminLTE Presentation”&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AdminLTE&lt;/strong&gt; has been carefully coded with clear comments in all of its JS, SCSS and HTML files.
SCSS has been used to increase code customizability.&lt;/p&gt;
&lt;h2 id=&#34;quick-start&#34;&gt;Quick start
&lt;/h2&gt;&lt;h3 id=&#34;development&#34;&gt;Development
&lt;/h3&gt;&lt;p&gt;To start developing with AdminLTE:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install dependencies:&lt;/strong&gt; &lt;code&gt;npm install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start development server:&lt;/strong&gt; &lt;code&gt;npm start&lt;/code&gt; &lt;em&gt;(opens browser at http://localhost:3000)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start coding!&lt;/strong&gt; Files auto-compile and refresh on changes&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;production-build&#34;&gt;Production Build
&lt;/h3&gt;&lt;p&gt;To build for production:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Full production build:&lt;/strong&gt; &lt;code&gt;npm run production&lt;/code&gt; &lt;em&gt;(includes linting and optimization)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quick build:&lt;/strong&gt; &lt;code&gt;npm run build&lt;/code&gt; &lt;em&gt;(faster for development/testing)&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;available-scripts&#34;&gt;Available Scripts
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;npm start&lt;/code&gt; - Start development server with file watching&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm run build&lt;/code&gt; - Build all assets for development&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm run production&lt;/code&gt; - Full production build with linting and bundlewatch&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm run lint&lt;/code&gt; - Run all linters (JS, CSS, docs, lockfile)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm run css&lt;/code&gt; - Build CSS only&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm run js&lt;/code&gt; - Build JavaScript only&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;browser-support&#34;&gt;Browser Support
&lt;/h2&gt;&lt;p&gt;AdminLTE supports all modern browsers with the latest Bootstrap 5.3.7:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chrome (latest)&lt;/li&gt;
&lt;li&gt;Firefox (latest)&lt;/li&gt;
&lt;li&gt;Safari (latest)&lt;/li&gt;
&lt;li&gt;Edge (latest)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Highly welcome.&lt;/li&gt;
&lt;li&gt;For your extra reference check &lt;a class=&#34;link&#34; href=&#34;https://github.com/ColorlibHQ/AdminLTE#contributing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AdminLTE v4 Contribution Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;First thing first, you should have bit knowledge about NodeJS.&lt;/li&gt;
&lt;li&gt;Github Knowledge.&lt;/li&gt;
&lt;li&gt;Install NodeJS LTS version.&lt;/li&gt;
&lt;li&gt;Clone this Repository to your machine and change to &lt;code&gt;master&lt;/code&gt; branch.&lt;/li&gt;
&lt;li&gt;Go to Cloned Folder.&lt;/li&gt;
&lt;li&gt;In cli/bash run &lt;code&gt;npm install&lt;/code&gt; it will install dependency from &lt;code&gt;package.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After installation completes, run &lt;code&gt;npm start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cool, Send your changes in PR to &lt;code&gt;master&lt;/code&gt; branch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;sponsorship&#34;&gt;Sponsorship
&lt;/h2&gt;&lt;p&gt;Support AdminLTE development by becoming a sponsor.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/sponsors/danny007in&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Github Sponsors&lt;/a&gt; or
&lt;a class=&#34;link&#34; href=&#34;https://www.paypal.me/daniel007in&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PayPal&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;AdminLTE is an open source project by &lt;a class=&#34;link&#34; href=&#34;https://adminlte.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AdminLTE.io&lt;/a&gt; that is licensed under &lt;a class=&#34;link&#34; href=&#34;https://opensource.org/licenses/MIT&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MIT&lt;/a&gt;.
AdminLTE.io reserves the right to change the license of future releases.&lt;/p&gt;
&lt;h2 id=&#34;image-credits&#34;&gt;Image Credits
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://www.pixeden.com/psd-web-elements/flat-responsive-showcase-psd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pixeden&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.graphicsfuel.com/2013/02/13-high-resolution-blur-backgrounds/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Graphicsfuel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pickaface.net/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pickaface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://unsplash.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Unsplash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://uifaces.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Uifaces&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>f1-dash</title>
        <link>https://producthunt.programnotes.cn/en/p/f1-dash/</link>
        <pubDate>Tue, 27 May 2025 15:31:25 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/f1-dash/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1591345433545-1b07e50e6366?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDgzMzA5MjJ8&amp;ixlib=rb-4.1.0" alt="Featured image of post f1-dash" /&gt;&lt;h1 id=&#34;slowlydevf1-dash&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/slowlydev/f1-dash&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;slowlydev/f1-dash&lt;/a&gt;
&lt;/h1&gt;&lt;p align=&#34;center&#34;&gt;
  &lt;picture&gt;
    &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;./dash/public/tag-logo.png&#34; width=&#34;200&#34;&gt;
    &lt;img alt=&#34;f1-dash&#34; src=&#34;./dash/public/tag-logo.png&#34; width=&#34;200&#34;&gt;
  &lt;/picture&gt;
&lt;/p&gt;
&lt;h1 align=&#34;center&#34;&gt;Real-time Formula 1 telemetry and timing&lt;/h1&gt;
&lt;h2 id=&#34;f1-dash&#34;&gt;f1-dash
&lt;/h2&gt;&lt;p&gt;A real-time F1 dashboard that shows the leader board, tires, gaps, laps, mini sectors and much more.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;I really appreciate your interest in contributing to this project. I recommend checking out the GitHub issues marked as &amp;ldquo;Good First Issue&amp;rdquo; to get started. Also, please read &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt;&lt;/a&gt; to learn how to contribute and set up f1-dash on your local machine for development.&lt;/p&gt;
&lt;h2 id=&#34;supporting&#34;&gt;Supporting
&lt;/h2&gt;&lt;p&gt;If you&amp;rsquo;d like to support this project and help me dedicate more time to it, you can &lt;a class=&#34;link&#34; href=&#34;https://www.buymeacoffee.com/slowlydev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;buy me a coffee&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;notice&#34;&gt;Notice
&lt;/h2&gt;&lt;p&gt;This project/website is unofficial and is not associated in any way with the Formula 1 companies. F1, FORMULA ONE, FORMULA 1, FIA FORMULA ONE WORLD CHAMPIONSHIP, GRAND PRIX and related marks are trade marks of Formula One Licensing B.V.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>glance</title>
        <link>https://producthunt.programnotes.cn/en/p/glance/</link>
        <pubDate>Wed, 07 May 2025 15:29:28 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/glance/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1592729920850-43e1bcf5b14d?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDY2MDI5MDd8&amp;ixlib=rb-4.1.0" alt="Featured image of post glance" /&gt;&lt;h1 id=&#34;glanceappglance&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/glance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;glanceapp/glance&lt;/a&gt;
&lt;/h1&gt;&lt;p align=&#34;center&#34;&gt;&lt;em&gt;What if you could see everything at a...&lt;/em&gt;&lt;/p&gt;
&lt;h1 align=&#34;center&#34;&gt;Glance&lt;/h1&gt;
&lt;p align=&#34;center&#34;&gt;&lt;a href=&#34;#installation&#34;&gt;Install&lt;/a&gt; • &lt;a href=&#34;docs/configuration.md&#34;&gt;Configuration&lt;/a&gt; • &lt;a href=&#34;https://discord.com/invite/7KQ7Xa9kJd&#34;&gt;Discord&lt;/a&gt; • &lt;a href=&#34;https://github.com/sponsors/glanceapp&#34;&gt;Sponsor&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;a href=&#34;https://github.com/glanceapp/community-widgets&#34;&gt;Community widgets&lt;/a&gt; • &lt;a href=&#34;docs/preconfigured-pages.md&#34;&gt;Preconfigured pages&lt;/a&gt; • &lt;a href=&#34;docs/themes.md&#34;&gt;Themes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/docs/images/readme-main-image.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;h3 id=&#34;various-widgets&#34;&gt;Various widgets
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;RSS feeds&lt;/li&gt;
&lt;li&gt;Subreddit posts&lt;/li&gt;
&lt;li&gt;Hacker News posts&lt;/li&gt;
&lt;li&gt;Weather forecasts&lt;/li&gt;
&lt;li&gt;YouTube channel uploads&lt;/li&gt;
&lt;li&gt;Twitch channels&lt;/li&gt;
&lt;li&gt;Market prices&lt;/li&gt;
&lt;li&gt;Docker containers status&lt;/li&gt;
&lt;li&gt;Server stats&lt;/li&gt;
&lt;li&gt;Custom widgets&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/configuration.md&#34; &gt;and many more&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fast-and-lightweight&#34;&gt;Fast and lightweight
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Low memory usage&lt;/li&gt;
&lt;li&gt;Few dependencies&lt;/li&gt;
&lt;li&gt;Minimal vanilla JS&lt;/li&gt;
&lt;li&gt;Single &amp;lt;20mb binary available for multiple OSs &amp;amp; architectures and just as small Docker container&lt;/li&gt;
&lt;li&gt;Uncached pages usually load within ~1s (depending on internet speed and number of widgets)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tons-of-customizability&#34;&gt;Tons of customizability
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Different layouts&lt;/li&gt;
&lt;li&gt;As many pages/tabs as you need&lt;/li&gt;
&lt;li&gt;Numerous configuration options for each widget&lt;/li&gt;
&lt;li&gt;Multiple styles for some widgets&lt;/li&gt;
&lt;li&gt;Custom CSS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;optimized-for-mobile-devices&#34;&gt;Optimized for mobile devices
&lt;/h3&gt;&lt;p&gt;Because you&amp;rsquo;ll want to take it with you on the go.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/docs/images/mobile-preview.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;themeable&#34;&gt;Themeable
&lt;/h3&gt;&lt;p&gt;Easily create your own theme by tweaking a few numbers or choose from one of the &lt;a class=&#34;link&#34; href=&#34;docs/themes.md&#34; &gt;already available themes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/docs/images/themes-example.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;br&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration
&lt;/h2&gt;&lt;p&gt;Configuration is done through YAML files, to learn more about how the layout works, how to add more pages and how to configure widgets, visit the &lt;a class=&#34;link&#34; href=&#34;docs/configuration.md&#34; &gt;configuration documentation&lt;/a&gt;.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Preview example configuration file&lt;/strong&gt;&lt;/summary&gt;
&lt;br&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;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pages&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;name&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;Home&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;columns&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;size&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;small&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;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;widgets&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;calendar&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;first-day-of-week&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;monday&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;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;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;rss&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;limit&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;m&#34;&gt;10&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;collapse-after&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;m&#34;&gt;3&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cache&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;12h&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;feeds&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;url&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;https://selfh.st/rss/&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&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;selfh.st&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;limit&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;m&#34;&gt;4&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;url&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;https://ciechanow.ski/atom.xml&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;url&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;https://www.joshwcomeau.com/rss.xml&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&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;Josh Comeau&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;url&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;https://samwho.dev/rss.xml&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;url&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;https://ishadeed.com/feed.xml&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&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;Ahmad Shadeed&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;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;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;twitch-channels&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;channels&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;theprimeagen&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;j_blow&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;piratesoftware&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;cohhcarnage&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;christitustech&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;EJ_SA&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;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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;size&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;full&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;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;widgets&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;group&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;widgets&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;hacker-news&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;lobsters&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;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;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;videos&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;channels&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;UCXuqSBlHAE6Xw-yeJA0Tunw&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Linus Tech Tips&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;UCR-DXc1voovS8nhAvccRZhg&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Jeff Geerling&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;UCsBjURrPoezykLs9EqgamOA&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Fireship&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;UCBJycsmduvYEL83R_U4JriQ&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Marques Brownlee&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;UCHnyfMqiRRG1u-2MsSQLbXA&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Veritasium&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;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;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;group&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;widgets&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;reddit&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;subreddit&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;technology&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;show-thumbnails&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;kc&#34;&gt;true&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;reddit&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;subreddit&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;selfhosted&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;show-thumbnails&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;kc&#34;&gt;true&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;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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;size&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;small&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;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;widgets&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;weather&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;location&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;London, United Kingdom&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;units&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;metric&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hour-format&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;12h&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;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;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;markets&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;markets&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;symbol&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;SPY&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&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;S&amp;amp;P 500&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;symbol&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;BTC-USD&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&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;Bitcoin&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;symbol&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;NVDA&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&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;NVIDIA&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;symbol&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;AAPL&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&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;Apple&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;symbol&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;MSFT&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;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&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;Microsoft&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;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;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;releases&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cache&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;1d&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;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;repositories&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;glanceapp/glance&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;go-gitea/gitea&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;immich-app/immich&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;w&#34;&gt;              &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;syncthing/syncthing&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;/details&gt;
&lt;br&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;Choose one of the following methods:&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Docker compose using provided directory structure (recommended)&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;Create a new directory called &lt;code&gt;glance&lt;/code&gt; as well as the template files within it by running:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir glance &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; glance &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; curl -sL https://github.com/glanceapp/docker-compose-template/archive/refs/heads/main.tar.gz &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tar -xzf - --strip-components &lt;span class=&#34;m&#34;&gt;2&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;&lt;em&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/docker-compose-template/tree/main/root&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;click here to view the files that will be created&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then, edit the following files as desired:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; to configure the port, volumes and other containery things&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/home.yml&lt;/code&gt; to configure the widgets or layout of the home page&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/glance.yml&lt;/code&gt; if you want to change the theme or add more pages&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;Other files you may want to edit&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt; to configure environment variables that will be available inside configuration files&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets/user.css&lt;/code&gt; to add custom CSS&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;p&gt;When ready, run:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;p&gt;If you encounter any issues, you can check the logs by running:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose logs
&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;hr&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Docker compose manual&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;Create a &lt;code&gt;docker-compose.yml&lt;/code&gt; file with the following contents:&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;/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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;glance&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&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;glance&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&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;glanceapp/glance&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&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;unless-stopped&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./config:/app/config&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&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;p&gt;Then, create a new directory called &lt;code&gt;config&lt;/code&gt; and download the example starting &lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/glance/blob/main/docs/glance.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;glance.yml&lt;/code&gt;&lt;/a&gt; file into it by running:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir config &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; wget -O config/glance.yml https://raw.githubusercontent.com/glanceapp/glance/refs/heads/main/docs/glance.yml
&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;Feel free to edit the &lt;code&gt;glance.yml&lt;/code&gt; file to your liking, and when ready run:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;p&gt;If you encounter any issues, you can check the logs by running:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs glance
&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;hr&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Manual binary installation&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;Precompiled binaries are available for Linux, Windows and macOS (x86, x86_64, ARM and ARM64 architectures).&lt;/p&gt;
&lt;h3 id=&#34;linux&#34;&gt;Linux
&lt;/h3&gt;&lt;p&gt;Visit the &lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/glance/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest release page&lt;/a&gt; for available binaries. You can place the binary in &lt;code&gt;/opt/glance/&lt;/code&gt; and have it start with your server via a &lt;a class=&#34;link&#34; href=&#34;https://linuxhandbook.com/create-systemd-services/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;systemd service&lt;/a&gt;. By default, when running the binary, it will look for a &lt;code&gt;glance.yml&lt;/code&gt; file in the directory it&amp;rsquo;s placed in. To specify a different path for the config file, use the &lt;code&gt;--config&lt;/code&gt; option:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/opt/glance/glance --config /etc/glance.yml
&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;To grab a starting template for the config file, run:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://raw.githubusercontent.com/glanceapp/glance/refs/heads/main/docs/glance.yml
&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;windows&#34;&gt;Windows
&lt;/h3&gt;&lt;p&gt;Download and extract the executable from the &lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/glance/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest release&lt;/a&gt; (most likely the file called &lt;code&gt;glance-windows-amd64.zip&lt;/code&gt; if you&amp;rsquo;re on a 64-bit system) and place it in a folder of your choice. Then, create a new text file called &lt;code&gt;glance.yml&lt;/code&gt; in the same folder and paste the content from &lt;a class=&#34;link&#34; href=&#34;https://raw.githubusercontent.com/glanceapp/glance/refs/heads/main/docs/glance.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt; in it. You should then be able to run the executable and access the dashboard by visiting &lt;code&gt;http://localhost:8080&lt;/code&gt; in your browser.&lt;/p&gt;
&lt;hr&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Other&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;Glance can also be installed through the following 3rd party channels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://community-scripts.github.io/ProxmoxVE/scripts?id=glance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Proxmox VE Helper Script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://search.nixos.org/packages?channel=unstable&amp;amp;show=glance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NixOS package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://coolify.io/docs/services/glance/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Coolify.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;/details&gt;
&lt;br&gt;
&lt;h2 id=&#34;common-issues&#34;&gt;Common issues
&lt;/h2&gt;&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Requests timing out&lt;/strong&gt;&lt;/summary&gt;
&lt;p&gt;The most common cause of this is when using Pi-Hole, AdGuard Home or other ad-blocking DNS services, which by default have a fairly low rate limit. Depending on the number of widgets you have in a single page, this limit can very easily be exceeded. To fix this, increase the rate limit in the settings of your DNS service.&lt;/p&gt;
&lt;p&gt;If using Podman, in some rare cases the timeout can be caused by an unknown issue, in which case it may be resolved by adding the following to the bottom of your &lt;code&gt;docker-compose.yml&lt;/code&gt; file:&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;/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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;networks&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;podman&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;external&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;kc&#34;&gt;true&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;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Broken layout for markets, bookmarks or other widgets&lt;/strong&gt;&lt;/summary&gt;
&lt;p&gt;This is almost always caused by the browser extension Dark Reader. To fix this, disable dark mode for the domain where Glance is hosted.&lt;/p&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;cannot unmarshal !!map into []glance.page&lt;/strong&gt;&lt;/summary&gt;
&lt;p&gt;The most common cause of this is having a &lt;code&gt;pages&lt;/code&gt; key in your &lt;code&gt;glance.yml&lt;/code&gt; and then also having a &lt;code&gt;pages&lt;/code&gt; key inside one of your included pages. To fix this, remove the &lt;code&gt;pages&lt;/code&gt; key from the top of your included pages.&lt;/p&gt;
&lt;/details&gt;
&lt;br&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ
&lt;/h2&gt;&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Does the information on the page update automatically?&lt;/strong&gt;&lt;/summary&gt;
No, a page refresh is required to update the information. Some things do dynamically update where it makes sense, like the clock widget and the relative time showing how long ago something happened.
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;How frequently do widgets update?&lt;/strong&gt;&lt;/summary&gt;
No requests are made periodically in the background, information is only fetched upon loading the page and then cached. The default cache lifetime is different for each widget and can be configured.
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Can I create my own widgets?&lt;/strong&gt;&lt;/summary&gt;
&lt;p&gt;Yes, there are multiple ways to create custom widgets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;iframe&lt;/code&gt; widget - allows you to embed things from other websites&lt;/li&gt;
&lt;li&gt;&lt;code&gt;html&lt;/code&gt; widget - allows you to insert your own static HTML&lt;/li&gt;
&lt;li&gt;&lt;code&gt;extension&lt;/code&gt; widget - fetch HTML from a URL&lt;/li&gt;
&lt;li&gt;&lt;code&gt;custom-api&lt;/code&gt; widget - fetch JSON from a URL and render it using custom HTML&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Can I change the title of a widget?&lt;/strong&gt;&lt;/summary&gt;
&lt;p&gt;Yes, the title of all widgets can be changed by specifying the &lt;code&gt;title&lt;/code&gt; property in the widget&amp;rsquo;s configuration:&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;nt&#34;&gt;type&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;rss&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&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;My custom title&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;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;type&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;markets&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&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;My custom title&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;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;type&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;videos&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&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;My custom title&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;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;c&#34;&gt;# and so on for all widgets...&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;/details&gt;
&lt;br&gt;
&lt;h2 id=&#34;feature-requests&#34;&gt;Feature requests
&lt;/h2&gt;&lt;p&gt;New feature suggestions are always welcome and will be considered, though please keep in mind that some of them may be out of scope for what the project is trying to achieve (or is reasonably capable of). If you have an idea for a new feature and would like to share it, you can do so &lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/glance/issues/new?template=feature_request.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Feature requests are tagged with one of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/glance/labels/roadmap&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Roadmap&lt;/a&gt; - will be implemented in a future release&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/glance/labels/backlog&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Backlog&lt;/a&gt; - may be implemented in the future but needs further feedback or interest from the community&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/glanceapp/glance/labels/icebox&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Icebox&lt;/a&gt; - no plans to implement as it doesn&amp;rsquo;t currently align with the project&amp;rsquo;s goals or capabilities, may be revised at a later date&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;h2 id=&#34;building-from-source&#34;&gt;Building from source
&lt;/h2&gt;&lt;p&gt;Choose one of the following methods:&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Build binary with Go&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;Requirements: &lt;a class=&#34;link&#34; href=&#34;https://go.dev/dl/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Go&lt;/a&gt; &amp;gt;= v1.23&lt;/p&gt;
&lt;p&gt;To build the project for your current OS and architecture, run:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go build -o build/glance .
&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;To build for a specific OS and architecture, run:&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-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;nv&#34;&gt;GOOS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;linux &lt;span class=&#34;nv&#34;&gt;GOARCH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;amd64 go build -o build/glance .
&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;&lt;a class=&#34;link&#34; href=&#34;https://go.dev/doc/install/source#:~:text=$GOOS%20and%20$GOARCH&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;em&gt;click here for a full list of GOOS and GOARCH combinations&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Alternatively, if you just want to run the app without creating a binary, like when you&amp;rsquo;re testing out changes, you can run:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go run .
&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;hr&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Build project and Docker image with Docker&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;Requirements: &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;&lt;/p&gt;
&lt;p&gt;To build the project and image using just Docker, run:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(replace &lt;code&gt;owner&lt;/code&gt; with your name or organization)&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;/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 build -t owner/glance:latest .
&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;If you wish to push the image to a registry (by default Docker Hub), run:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker push owner/glance:latest
&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;hr&gt;
&lt;/details&gt;
&lt;br&gt;
&lt;h2 id=&#34;contributing-guidelines&#34;&gt;Contributing guidelines
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Before working on a new feature it&amp;rsquo;s preferable to submit a feature request first and state that you&amp;rsquo;d like to implement it yourself&lt;/li&gt;
&lt;li&gt;Please don&amp;rsquo;t submit PRs for feature requests that are either in the roadmap&lt;sup&gt;[1]&lt;/sup&gt;, backlog&lt;sup&gt;[2]&lt;/sup&gt; or icebox&lt;sup&gt;[3]&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;dev&lt;/code&gt; for the base branch if you&amp;rsquo;re adding new features or fixing bugs, otherwise use &lt;code&gt;main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Avoid introducing new dependencies&lt;/li&gt;
&lt;li&gt;Avoid making backwards-incompatible configuration changes&lt;/li&gt;
&lt;li&gt;Avoid introducing new colors or hard-coding colors, use the standard &lt;code&gt;primary&lt;/code&gt;, &lt;code&gt;positive&lt;/code&gt; and &lt;code&gt;negative&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;For icons, try to use &lt;a class=&#34;link&#34; href=&#34;https://heroicons.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;heroicons&lt;/a&gt; where applicable&lt;/li&gt;
&lt;li&gt;Provide a screenshot of the changes if UI related where possible&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;package.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;&lt;sup&gt;[1] [2] [3]&lt;/sup&gt;&lt;/strong&gt;&lt;/summary&gt;
&lt;p&gt;[1] The feature likely already has work put into it that may conflict with your implementation&lt;/p&gt;
&lt;p&gt;[2] The demand, implementation or functionality for this feature is not yet clear&lt;/p&gt;
&lt;p&gt;[3] No plans to add this feature for the time being&lt;/p&gt;
&lt;/details&gt;
&lt;br&gt;
&lt;h2 id=&#34;thank-you&#34;&gt;Thank you
&lt;/h2&gt;&lt;p&gt;To all the people who were generous enough to &lt;a class=&#34;link&#34; href=&#34;https://github.com/sponsors/glanceapp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sponsor&lt;/a&gt; the project and to everyone who has contributed in any way, be it PRs, submitting issues, helping others in the discussions or Discord server, creating guides and tools or just mentioning Glance on social media. Your support is greatly appreciated and helps keep the project going.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
