From 63487cf3ec98d0e2a7b688ef279f2352949e853e Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Thu, 22 Feb 2024 11:53:25 +0100 Subject: [PATCH] feat: minversion for services --- app/Console/Commands/ServicesGenerate.php | 7 + app/View/Components/ResourceView.php | 1 + .../views/components/resource-view.blade.php | 18 +- .../livewire/project/new/select.blade.php | 30 ++- templates/compose/posthog.yaml | 1 + templates/compose/syncthing.yaml | 2 +- templates/compose/umami.yaml | 2 +- templates/compose/uptime-kuma.yaml | 2 +- templates/compose/vaultwarden.yaml | 2 +- templates/service-templates.json | 171 ++++++++++++------ 10 files changed, 165 insertions(+), 71 deletions(-) diff --git a/app/Console/Commands/ServicesGenerate.php b/app/Console/Commands/ServicesGenerate.php index 6636abea4..75df4756b 100644 --- a/app/Console/Commands/ServicesGenerate.php +++ b/app/Console/Commands/ServicesGenerate.php @@ -79,6 +79,12 @@ private function process_file($file) } else { $logo = 'svgs/unknown.svg'; } + $minversion = collect(preg_grep('/^# minversion:/', explode("\n", $content)))->values(); + if ($minversion->count() > 0) { + $minversion = str($minversion[0])->after('# minversion:')->trim()->value(); + } else { + $minversion = '0.0.0'; + } $env_file = collect(preg_grep('/^# env_file:/', explode("\n", $content)))->values(); if ($env_file->count() > 0) { $env_file = str($env_file[0])->after('# env_file:')->trim()->value(); @@ -103,6 +109,7 @@ private function process_file($file) 'compose' => $yaml, 'tags' => $tags, 'logo' => $logo, + 'minversion' => $minversion, ]; if ($env_file) { $env_file_content = file_get_contents(base_path("templates/compose/$env_file")); diff --git a/app/View/Components/ResourceView.php b/app/View/Components/ResourceView.php index 7135385af..98efddc00 100644 --- a/app/View/Components/ResourceView.php +++ b/app/View/Components/ResourceView.php @@ -15,6 +15,7 @@ public function __construct( public ?string $wire = null, public ?string $logo = null, public ?string $documentation = null, + public bool $upgrade = false, ) { diff --git a/resources/views/components/resource-view.blade.php b/resources/views/components/resource-view.blade.php index 7d90d5dfd..e4872dd21 100644 --- a/resources/views/components/resource-view.blade.php +++ b/resources/views/components/resource-view.blade.php @@ -1,14 +1,21 @@ -
+
!$upgrade, + 'hover:border-red-500 cursor-not-allowed ' => $upgrade, +]) @if (!$upgrade) wire:click={{ $wire }} @endif>
{{ $logo }}
{{ $title }}
- + @if($upgrade) +
{{ $upgrade }}
+ @else + + @endif
@isset($documentation) @@ -20,4 +27,5 @@
@endisset +
diff --git a/resources/views/livewire/project/new/select.blade.php b/resources/views/livewire/project/new/select.blade.php index a34140205..4ae372871 100644 --- a/resources/views/livewire/project/new/select.blade.php +++ b/resources/views/livewire/project/new/select.blade.php @@ -175,15 +175,37 @@ class="w-full text-white rounded input input-sm bg-coolgray-200 disabled:bg-cool @else @forelse ($services as $serviceName => $service) - @if (data_get($service, 'disabled')) - + --}} @else {{ Str::headline($serviceName) }} diff --git a/templates/compose/posthog.yaml b/templates/compose/posthog.yaml index 654a46589..d5c68f4ad 100644 --- a/templates/compose/posthog.yaml +++ b/templates/compose/posthog.yaml @@ -2,6 +2,7 @@ # slogan: The single platform to analyze, test, observe, and deploy new features # tags: analytics, product, open-source, self-hosted, ab-testing, event-tracking # logo: svgs/posthog.svg +# minversion: 4.0.0-beta.222 services: db: diff --git a/templates/compose/syncthing.yaml b/templates/compose/syncthing.yaml index 50adea1f9..af3e050fa 100644 --- a/templates/compose/syncthing.yaml +++ b/templates/compose/syncthing.yaml @@ -1,5 +1,5 @@ # documentation: https://syncthing.net/ -# slogan: Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time. +# slogan: Syncthing synchronizes files between two or more computers in real time. # tags: filestorage, data, synchronization # logo: svgs/syncthing.svg diff --git a/templates/compose/umami.yaml b/templates/compose/umami.yaml index 7ce6d1e11..4bbf89b9e 100644 --- a/templates/compose/umami.yaml +++ b/templates/compose/umami.yaml @@ -1,5 +1,5 @@ # documentation: https://umami.is -# slogan: Umami is a lightweight, self-hosted web analytics platform designed to provide website owners with insights into visitor behavior without compromising user privacy. +# slogan: Umami is web analytics platform which provides insights into visitor behavior without compromising user privacy. # tags: analytics, insights, privacy # logo: svgs/umami.svg diff --git a/templates/compose/uptime-kuma.yaml b/templates/compose/uptime-kuma.yaml index 53d3c2648..24dbad3ef 100644 --- a/templates/compose/uptime-kuma.yaml +++ b/templates/compose/uptime-kuma.yaml @@ -1,5 +1,5 @@ # documentation: https://github.com/louislam/uptime-kuma?tab=readme-ov-file -# slogan: Uptime Kuma is a free, self-hosted monitoring tool for tracking the status and performance of your web services and applications in real-time. +# slogan: Uptime Kuma is a monitoring tool for tracking the status and performance of your applications in real-time. # tags: monitoring, status, performance, web, services, applications, real-time # logo: svgs/uptime-kuma.svg diff --git a/templates/compose/vaultwarden.yaml b/templates/compose/vaultwarden.yaml index cf0d02dbd..75e9f64e9 100644 --- a/templates/compose/vaultwarden.yaml +++ b/templates/compose/vaultwarden.yaml @@ -1,5 +1,5 @@ # documentation: https://github.com/dani-garcia/vaultwarden -# slogan: Vaultwarden is an open-source password manager that allows you to securely store and manage your passwords, helping you stay organized and protected. +# slogan: Vaultwarden is a password manager that allows you to securely store and manage your passwords. # tags: password manager, security # logo: svgs/bitwarden.svg diff --git a/templates/service-templates.json b/templates/service-templates.json index c1723c2df..db7654401 100644 --- a/templates/service-templates.json +++ b/templates/service-templates.json @@ -10,7 +10,8 @@ "low", "platform" ], - "logo": "svgs\/appsmith.svg" + "logo": "svgs\/appsmith.svg", + "minversion": "0.0.0" }, "appwrite": { "documentation": "https:\/\/appwrite.io", @@ -21,6 +22,7 @@ "platform" ], "logo": "svgs\/appwrite.svg", + "minversion": "0.0.0", "envs": "X0FQUF9FTlY9cHJvZHVjdGlvbgpfQVBQX0xPQ0FMRT1lbgpfQVBQX09QVElPTlNfQUJVU0U9ZW5hYmxlZApfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFM9ZGlzYWJsZWQKX0FQUF9PUEVOU1NMX0tFWV9WMT0KX0FQUF9ET01BSU49Cl9BUFBfRE9NQUlOX1RBUkdFVD0KX0FQUF9ET01BSU5fRlVOQ1RJT05TPQpfQVBQX0NPTlNPTEVfV0hJVEVMSVNUX1JPT1Q9ZW5hYmxlZApfQVBQX0NPTlNPTEVfV0hJVEVMSVNUX0VNQUlMUz0KX0FQUF9DT05TT0xFX1dISVRFTElTVF9JUFM9Cl9BUFBfU1lTVEVNX0VNQUlMX05BTUU9QXBwd3JpdGUKX0FQUF9TWVNURU1fRU1BSUxfQUREUkVTUz10ZWFtQGFwcHdyaXRlLmlvCl9BUFBfU1lTVEVNX1JFU1BPTlNFX0ZPUk1BVD0KX0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTUz1jZXJ0c0BhcHB3cml0ZS5pbwpfQVBQX1VTQUdFX1NUQVRTPWVuYWJsZWQKX0FQUF9MT0dHSU5HX1BST1ZJREVSPQpfQVBQX0xPR0dJTkdfQ09ORklHPQpfQVBQX1VTQUdFX0FHR1JFR0FUSU9OX0lOVEVSVkFMPTMwCl9BUFBfVVNBR0VfVElNRVNFUklFU19JTlRFUlZBTD0zMApfQVBQX1VTQUdFX0RBVEFCQVNFX0lOVEVSVkFMPTkwMApfQVBQX1dPUktFUl9QRVJfQ09SRT02Cl9BUFBfUkVESVNfSE9TVD1hcHB3cml0ZS1yZWRpcwpfQVBQX1JFRElTX1BPUlQ9NjM3OQpfQVBQX1JFRElTX1VTRVI9Cl9BUFBfUkVESVNfUEFTUz0KX0FQUF9EQl9IT1NUPWFwcHdyaXRlLW1hcmlhZGIKX0FQUF9EQl9QT1JUPTMzMDYKX0FQUF9EQl9TQ0hFTUE9YXBwd3JpdGUKX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTVlTUUwKX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01ZU1FMCl9BUFBfREJfUk9PVF9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX1JPT1RNWVNRTApfQVBQX0lORkxVWERCX0hPU1Q9YXBwd3JpdGUtaW5mbHV4ZGIKX0FQUF9JTkZMVVhEQl9QT1JUPTgwODYKX0FQUF9TVEFUU0RfSE9TVD1hcHB3cml0ZS10ZWxlZ3JhZgpfQVBQX1NUQVRTRF9QT1JUPTgxMjUKX0FQUF9TTVRQX0hPU1Q9Cl9BUFBfU01UUF9QT1JUPQpfQVBQX1NNVFBfU0VDVVJFPQpfQVBQX1NNVFBfVVNFUk5BTUU9Cl9BUFBfU01UUF9QQVNTV09SRD0KX0FQUF9TTVNfUFJPVklERVI9Cl9BUFBfU01TX0ZST009Cl9BUFBfU1RPUkFHRV9MSU1JVD0zMDAwMDAwMApfQVBQX1NUT1JBR0VfUFJFVklFV19MSU1JVD0yMDAwMDAwMApfQVBQX1NUT1JBR0VfQU5USVZJUlVTPWRpc2FibGVkCl9BUFBfU1RPUkFHRV9BTlRJVklSVVNfSE9TVD1hcHB3cml0ZS1jbGFtYXYKX0FQUF9TVE9SQUdFX0FOVElWSVJVU19QT1JUPTMzMTAKX0FQUF9TVE9SQUdFX0RFVklDRT1sb2NhbApfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWT0KX0FQUF9TVE9SQUdFX1MzX1NFQ1JFVD0KX0FQUF9TVE9SQUdFX1MzX1JFR0lPTj11cy1lYXN0LTEKX0FQUF9TVE9SQUdFX1MzX0JVQ0tFVD0KX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZPQpfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVD0KX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT049dXMtZWFzdC0xCl9BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUPQpfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVk9Cl9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPQpfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTj11cy13ZXN0LTAwNApfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVD0KX0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZPQpfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVD0KX0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT049ZXUtY2VudHJhbC0xCl9BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUPQpfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVk9Cl9BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUPQpfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj1ldS1jZW50cmFsLTEKX0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVQ9Cl9BUFBfRlVOQ1RJT05TX1NJWkVfTElNSVQ9MzAwMDAwMDAKX0FQUF9GVU5DVElPTlNfVElNRU9VVD05MDAKX0FQUF9GVU5DVElPTlNfQlVJTERfVElNRU9VVD05MDAKX0FQUF9GVU5DVElPTlNfQ09OVEFJTkVSUz0xMApfQVBQX0ZVTkNUSU9OU19DUFVTPTAKX0FQUF9GVU5DVElPTlNfTUVNT1JZPTAKX0FQUF9GVU5DVElPTlNfTUVNT1JZX1NXQVA9MApfQVBQX0ZVTkNUSU9OU19SVU5USU1FUz1ub2RlLTIwLjAscGhwLTguMixweXRob24tMy4xMSxydWJ5LTMuMgpfQVBQX0VYRUNVVE9SX1NFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQpfQVBQX0VYRUNVVE9SX0hPU1Q9aHR0cDovL2FwcHdyaXRlLWV4ZWN1dG9yL3YxCl9BUFBfRVhFQ1VUT1JfUlVOVElNRV9ORVRXT1JLPWFwcHdyaXRlX3J1bnRpbWVzCl9BUFBfRlVOQ1RJT05TX0lOQUNUSVZFX1RIUkVTSE9MRD02MApET0NLRVJIVUJfUFVMTF9VU0VSTkFNRT0KRE9DS0VSSFVCX1BVTExfUEFTU1dPUkQ9CkRPQ0tFUkhVQl9QVUxMX0VNQUlMPQpPUEVOX1JVTlRJTUVTX05FVFdPUks9YXBwd3JpdGVfcnVudGltZXMKX0FQUF9GVU5DVElPTlNfUlVOVElNRVNfTkVUV09SSz1ydW50aW1lcwpfQVBQX0RPQ0tFUl9IVUJfVVNFUk5BTUU9Cl9BUFBfRE9DS0VSX0hVQl9QQVNTV09SRD0KX0FQUF9GVU5DVElPTlNfTUFJTlRFTkFOQ0VfSU5URVJWQUw9MzYwMApfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUU9Cl9BUFBfVkNTX0dJVEhVQl9QUklWQVRFX0tFWT0KX0FQUF9WQ1NfR0lUSFVCX0FQUF9JRD0KX0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9JRD0KX0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9TRUNSRVQ9Cl9BUFBfVkNTX0dJVEhVQl9XRUJIT09LX1NFQ1JFVD0KX0FQUF9NQUlOVEVOQU5DRV9JTlRFUlZBTD04NjQwMApfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9DQUNIRT0yNTkyMDAwCl9BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0VYRUNVVElPTj0xMjA5NjAwCl9BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUPTEyMDk2MDAKX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U9ODY0MDAKX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fVVNBR0VfSE9VUkxZPTg2NDAwMDAKX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fU0NIRURVTEVTPTg2NDAwCl9BUFBfR1JBUEhRTF9NQVhfQkFUQ0hfU0laRT0xMApfQVBQX0dSQVBIUUxfTUFYX0NPTVBMRVhJVFk9MjUwCl9BUFBfR1JBUEhRTF9NQVhfREVQVEg9MwpfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX0lEPQpfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX1NFQ1JFVD0KX0FQUF9BU1NJU1RBTlRfT1BFTkFJX0FQSV9LRVk9Cg==" }, "babybuddy": { @@ -34,7 +36,8 @@ "growth", "activities" ], - "logo": "svgs\/babybuddy.png" + "logo": "svgs\/babybuddy.png", + "minversion": "0.0.0" }, "budge": { "documentation": "https:\/\/github.com\/linuxserver\/budge", @@ -45,7 +48,8 @@ "budgeting", "expense tracking" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "code-server": { "documentation": "https:\/\/coder.com\/docs\/code-server\/latest", @@ -57,7 +61,8 @@ "remote", "collaboration" ], - "logo": "svgs\/code-server.svg" + "logo": "svgs\/code-server.svg", + "minversion": "0.0.0" }, "dashboard": { "documentation": "https:\/\/github.com\/phntxx\/dashboard?tab=readme-ov-file#dashboard", @@ -69,7 +74,8 @@ "search", "bookmarks" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "directus-with-postgresql": { "documentation": "https:\/\/directus.io", @@ -81,7 +87,8 @@ "database", "sql" ], - "logo": "svgs\/directus.svg" + "logo": "svgs\/directus.svg", + "minversion": "0.0.0" }, "directus": { "documentation": "https:\/\/directus.io", @@ -93,7 +100,8 @@ "database", "sql" ], - "logo": "svgs\/directus.svg" + "logo": "svgs\/directus.svg", + "minversion": "0.0.0" }, "docker-registry": { "documentation": "https:\/\/docs.docker.com\/registry\/", @@ -104,7 +112,8 @@ "images", "docker" ], - "logo": "svgs\/docker-registry.png" + "logo": "svgs\/docker-registry.png", + "minversion": "0.0.0" }, "dokuwiki": { "documentation": "https:\/\/www.dokuwiki.org\/", @@ -116,7 +125,8 @@ "knowledge", "base" ], - "logo": "svgs\/dokuwiki.png" + "logo": "svgs\/dokuwiki.png", + "minversion": "0.0.0" }, "duplicati": { "documentation": "https:\/\/duplicati.readthedocs.io", @@ -126,7 +136,8 @@ "backup", "encryption" ], - "logo": "svgs\/duplicati.webp" + "logo": "svgs\/duplicati.webp", + "minversion": "0.0.0" }, "emby": { "documentation": "https:\/\/emby.media\/support\/articles\/Home.html", @@ -139,7 +150,8 @@ "tv", "music" ], - "logo": "svgs\/emby.png" + "logo": "svgs\/emby.png", + "minversion": "0.0.0" }, "embystat": { "documentation": "https:\/\/github.com\/mregni\/EmbyStat", @@ -152,7 +164,8 @@ "tv", "music" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "fider": { "documentation": "https:\/\/fider.io", @@ -162,7 +175,8 @@ "feedback", "user-feedback" ], - "logo": "svgs\/fider.svg" + "logo": "svgs\/fider.svg", + "minversion": "0.0.0" }, "filebrowser": { "documentation": "https:\/\/filebrowser.org", @@ -175,7 +189,8 @@ "file-utilization", "administration-tool" ], - "logo": "svgs\/filebrowser.svg" + "logo": "svgs\/filebrowser.svg", + "minversion": "0.0.0" }, "formbricks": { "documentation": "https:\/\/formbricks.com", @@ -191,7 +206,8 @@ "self-hosted", "docker" ], - "logo": "svgs\/formbricks.png" + "logo": "svgs\/formbricks.png", + "minversion": "0.0.0" }, "ghost": { "documentation": "https:\/\/ghost.org", @@ -204,7 +220,8 @@ "management", "system" ], - "logo": "svgs\/ghost.svg" + "logo": "svgs\/ghost.svg", + "minversion": "0.0.0" }, "gitea-with-mariadb": { "documentation": "https:\/\/docs.gitea.com", @@ -218,7 +235,8 @@ "lightweight", "mariadb" ], - "logo": "svgs\/gitea.svg" + "logo": "svgs\/gitea.svg", + "minversion": "0.0.0" }, "gitea-with-mysql": { "documentation": "https:\/\/docs.gitea.com", @@ -232,7 +250,8 @@ "lightweight", "mysql" ], - "logo": "svgs\/gitea.svg" + "logo": "svgs\/gitea.svg", + "minversion": "0.0.0" }, "gitea-with-postgresql": { "documentation": "https:\/\/docs.gitea.com", @@ -246,7 +265,8 @@ "lightweight", "postgresql" ], - "logo": "svgs\/gitea.svg" + "logo": "svgs\/gitea.svg", + "minversion": "0.0.0" }, "gitea": { "documentation": "https:\/\/docs.gitea.com", @@ -259,7 +279,8 @@ "hosting", "lightweight" ], - "logo": "svgs\/gitea.svg" + "logo": "svgs\/gitea.svg", + "minversion": "0.0.0" }, "glitchtip": { "documentation": "https:\/\/glitchtip.com", @@ -272,7 +293,8 @@ "self-hosted", "sentry" ], - "logo": "svgs\/glitchtip.png" + "logo": "svgs\/glitchtip.png", + "minversion": "0.0.0" }, "grafana-with-postgresql": { "documentation": "https:\/\/grafana.com", @@ -284,7 +306,8 @@ "monitoring", "dashboard" ], - "logo": "svgs\/grafana.svg" + "logo": "svgs\/grafana.svg", + "minversion": "0.0.0" }, "grafana": { "documentation": "https:\/\/grafana.com", @@ -296,7 +319,8 @@ "monitoring", "dashboard" ], - "logo": "svgs\/grafana.svg" + "logo": "svgs\/grafana.svg", + "minversion": "0.0.0" }, "grocy": { "documentation": "https:\/\/github.com\/grocy\/grocy", @@ -309,7 +333,8 @@ "grocery", "shopping" ], - "logo": "svgs\/grocy.svg" + "logo": "svgs\/grocy.svg", + "minversion": "0.0.0" }, "heimdall": { "documentation": "https:\/\/github.com\/linuxserver\/Heimdall", @@ -321,7 +346,8 @@ "applications", "interface" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "jellyfin": { "documentation": "https:\/\/jellyfin.org", @@ -334,7 +360,8 @@ "tv", "music" ], - "logo": "svgs\/jellyfin.svg" + "logo": "svgs\/jellyfin.svg", + "minversion": "0.0.0" }, "kuzzle": { "documentation": "https:\/\/kuzzle.io", @@ -352,7 +379,8 @@ "geofencing", "low-code" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "meilisearch": { "documentation": "https:\/\/www.meilisearch.com", @@ -366,7 +394,8 @@ "text", "meilisearch" ], - "logo": "svgs\/meilisearch.svg" + "logo": "svgs\/meilisearch.svg", + "minversion": "0.0.0" }, "metabase": { "documentation": "https:\/\/www.metabase.com", @@ -378,7 +407,8 @@ "business", "intelligence" ], - "logo": "svgs\/metabase.svg" + "logo": "svgs\/metabase.svg", + "minversion": "0.0.0" }, "metube": { "documentation": "https:\/\/github.com\/alexta69\/metube", @@ -390,7 +420,8 @@ "videos", "playlist" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "minio": { "documentation": "https:\/\/min.io\/docs\/minio\/container\/index.html", @@ -403,7 +434,8 @@ "s3", "api" ], - "logo": "svgs\/minio.svg" + "logo": "svgs\/minio.svg", + "minversion": "0.0.0" }, "moodle": { "documentation": "https:\/\/moodle.org", @@ -420,7 +452,8 @@ "low", "code" ], - "logo": "svgs\/moodle.png" + "logo": "svgs\/moodle.png", + "minversion": "0.0.0" }, "n8n-with-postgresql": { "documentation": "https:\/\/n8n.io", @@ -435,7 +468,8 @@ "low", "code" ], - "logo": "svgs\/n8n.png" + "logo": "svgs\/n8n.png", + "minversion": "0.0.0" }, "n8n": { "documentation": "https:\/\/n8n.io", @@ -450,7 +484,8 @@ "low", "code" ], - "logo": "svgs\/n8n.png" + "logo": "svgs\/n8n.png", + "minversion": "0.0.0" }, "nextcloud": { "documentation": "https:\/\/docs.nextcloud.com", @@ -463,7 +498,8 @@ "filestorage", "data" ], - "logo": "svgs\/nextcloud.svg" + "logo": "svgs\/nextcloud.svg", + "minversion": "0.0.0" }, "nocodb": { "documentation": "https:\/\/nocodb.com\/", @@ -478,7 +514,8 @@ "sqlite", "mariadb" ], - "logo": "svgs\/nocodb.svg" + "logo": "svgs\/nocodb.svg", + "minversion": "0.0.0" }, "openblocks": { "documentation": "https:\/\/openblocks.dev", @@ -494,7 +531,8 @@ "low", "code" ], - "logo": "svgs\/openblocks.svg" + "logo": "svgs\/openblocks.svg", + "minversion": "0.0.0" }, "pairdrop": { "documentation": "https:\/\/pairdrop.net\/", @@ -506,7 +544,8 @@ "collaboration", "teamwork" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "phpmyadmin": { "documentation": "https:\/\/phpmyadmin.net", @@ -515,7 +554,8 @@ "tags": [ "database management" ], - "logo": "svgs\/phpmyadmin.svg" + "logo": "svgs\/phpmyadmin.svg", + "minversion": "0.0.0" }, "pocketbase": { "documentation": "https:\/\/pocketbase.io\/docs\/", @@ -528,7 +568,8 @@ "mobile", "api" ], - "logo": "svgs\/pocketbase.svg" + "logo": "svgs\/pocketbase.svg", + "minversion": "0.0.0" }, "posthog": { "documentation": "https:\/\/posthog.com", @@ -542,7 +583,8 @@ "ab-testing", "event-tracking" ], - "logo": "svgs\/posthog.svg" + "logo": "svgs\/posthog.svg", + "minversion": "4.0.0-beta.222" }, "snapdrop": { "documentation": "https:\/\/github.com\/RobinLinus\/snapdrop", @@ -556,7 +598,8 @@ "network", "internet" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "stirling-pdf": { "documentation": "https:\/\/github.com\/Stirling-Tools\/Stirling-PDF", @@ -568,18 +611,20 @@ "web", "tool" ], - "logo": "svgs\/stirling.png" + "logo": "svgs\/stirling.png", + "minversion": "0.0.0" }, "syncthing": { "documentation": "https:\/\/syncthing.net\/", - "slogan": "Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time.", + "slogan": "Syncthing synchronizes files between two or more computers in real time.", "compose": "c2VydmljZXM6CiAgc3luY3RoaW5nOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL3N5bmN0aGluZzpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fU1lOQ1RISU5HCiAgICAgIC0gUFVJRD0xMDAwCiAgICAgIC0gUEdJRD0xMDAwCiAgICAgIC0gVFo9RXRjL1VUQwogICAgdm9sdW1lczoKICAgICAgLSAnc3luY3RoaW5nLWNvbmZpZzovY29uZmlnJwogICAgICAtICdzeW5jdGhpbmctZGF0YTE6L2RhdGExJwogICAgICAtICdzeW5jdGhpbmctZGF0YTI6L2RhdGEyJwogICAgcG9ydHM6CiAgICAgIC0gJzIyMDAwOjIyMDAwL3RjcCcKICAgICAgLSAnMjIwMDA6MjIwMDAvdWRwJwogICAgICAtICcyMTAyNzoyMTAyNy91ZHAnCg==", "tags": [ "filestorage", "data", "synchronization" ], - "logo": "svgs\/syncthing.svg" + "logo": "svgs\/syncthing.svg", + "minversion": "0.0.0" }, "trigger-with-external-database": { "documentation": "https:\/\/trigger.dev", @@ -594,7 +639,8 @@ "cron", "scheduler" ], - "logo": "svgs\/trigger.png" + "logo": "svgs\/trigger.png", + "minversion": "0.0.0" }, "trigger": { "documentation": "https:\/\/trigger.dev", @@ -609,22 +655,24 @@ "cron", "scheduler" ], - "logo": "svgs\/trigger.png" + "logo": "svgs\/trigger.png", + "minversion": "0.0.0" }, "umami": { "documentation": "https:\/\/umami.is", - "slogan": "Umami is a lightweight, self-hosted web analytics platform designed to provide website owners with insights into visitor behavior without compromising user privacy.", + "slogan": "Umami is web analytics platform which provides insights into visitor behavior without compromising user privacy.", "compose": "c2VydmljZXM6CiAgdW1hbWk6CiAgICBpbWFnZTogJ2doY3IuaW8vdW1hbWktc29mdHdhcmUvdW1hbWk6cG9zdGdyZXNxbC1sYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fVU1BTUkKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJFBPU1RHUkVTX0RCJwogICAgICAtIERBVEFCQVNFX1RZUEU9cG9zdGdyZXMKICAgICAgLSBBUFBfU0VDUkVUPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1VNQU1JCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXVtYW1pfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK", "tags": [ "analytics", "insights", "privacy" ], - "logo": "svgs\/umami.svg" + "logo": "svgs\/umami.svg", + "minversion": "0.0.0" }, "uptime-kuma": { "documentation": "https:\/\/github.com\/louislam\/uptime-kuma?tab=readme-ov-file", - "slogan": "Uptime Kuma is a free, self-hosted monitoring tool for tracking the status and performance of your web services and applications in real-time.", + "slogan": "Uptime Kuma is a monitoring tool for tracking the status and performance of your applications in real-time.", "compose": "c2VydmljZXM6CiAgdXB0aW1lLWt1bWE6CiAgICBpbWFnZTogJ2xvdWlzbGFtL3VwdGltZS1rdW1hOjEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE4KICAgIHZvbHVtZXM6CiAgICAgIC0gJ3VwdGltZS1rdW1hOi9hcHAvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSBleHRyYS9oZWFsdGhjaGVjawogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==", "tags": [ "monitoring", @@ -635,17 +683,19 @@ "applications", "real-time" ], - "logo": "svgs\/uptime-kuma.svg" + "logo": "svgs\/uptime-kuma.svg", + "minversion": "0.0.0" }, "vaultwarden": { "documentation": "https:\/\/github.com\/dani-garcia\/vaultwarden", - "slogan": "Vaultwarden is an open-source password manager that allows you to securely store and manage your passwords, helping you stay organized and protected.", + "slogan": "Vaultwarden is a password manager that allows you to securely store and manage your passwords.", "compose": "c2VydmljZXM6CiAgdmF1bHR3YXJkZW46CiAgICBpbWFnZTogJ3ZhdWx0d2FyZGVuL3NlcnZlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fVkFVTFRXQVJERU4KICAgIHZvbHVtZXM6CiAgICAgIC0gJ3ZhdWx0d2FyZGVuLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK", "tags": [ "password manager", "security" ], - "logo": "svgs\/bitwarden.svg" + "logo": "svgs\/bitwarden.svg", + "minversion": "0.0.0" }, "weblate": { "documentation": "https:\/\/weblate.org", @@ -660,7 +710,8 @@ "libre", "software" ], - "logo": "svgs\/weblate.webp" + "logo": "svgs\/weblate.webp", + "minversion": "0.0.0" }, "whoogle": { "documentation": "https:\/\/github.com\/benbusby\/whoogle-search?tab=readme-ov-file", @@ -670,7 +721,8 @@ "privacy", "search engine" ], - "logo": "svgs\/unknown.svg" + "logo": "svgs\/unknown.svg", + "minversion": "0.0.0" }, "wordpress-with-mariadb": { "documentation": "https:\/\/wordpress.org", @@ -683,7 +735,8 @@ "management", "mariadb" ], - "logo": "svgs\/wordpress.svg" + "logo": "svgs\/wordpress.svg", + "minversion": "0.0.0" }, "wordpress-with-mysql": { "documentation": "https:\/\/wordpress.org", @@ -696,7 +749,8 @@ "management", "mysql" ], - "logo": "svgs\/wordpress.svg" + "logo": "svgs\/wordpress.svg", + "minversion": "0.0.0" }, "wordpress-without-database": { "documentation": "https:\/\/wordpress.org", @@ -708,6 +762,7 @@ "content", "management" ], - "logo": "svgs\/wordpress.svg" + "logo": "svgs\/wordpress.svg", + "minversion": "0.0.0" } } \ No newline at end of file