fix: smart search for new services
This commit is contained in:
@@ -29,7 +29,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'stable',
|
recommendedVersion: 'stable',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8000
|
main: 8000
|
||||||
}
|
},
|
||||||
|
labels: ['analytics', 'plausible', 'plausible-analytics', 'gdpr', 'no-cookie']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'nocodb',
|
name: 'nocodb',
|
||||||
@@ -39,7 +40,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8080
|
main: 8080
|
||||||
}
|
},
|
||||||
|
labels: ['nocodb', 'airtable', 'database']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'minio',
|
name: 'minio',
|
||||||
@@ -49,7 +51,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 9001
|
main: 9001
|
||||||
}
|
},
|
||||||
|
labels: ['minio', 's3', 'storage']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'vscodeserver',
|
name: 'vscodeserver',
|
||||||
@@ -59,7 +62,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8080
|
main: 8080
|
||||||
}
|
},
|
||||||
|
labels: ['vscodeserver', 'vscode', 'code-server', 'ide']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'wordpress',
|
name: 'wordpress',
|
||||||
@@ -70,7 +74,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 80
|
main: 80
|
||||||
}
|
},
|
||||||
|
labels: ['wordpress', 'blog', 'cms']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'vaultwarden',
|
name: 'vaultwarden',
|
||||||
@@ -80,7 +85,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 80
|
main: 80
|
||||||
}
|
},
|
||||||
|
labels: ['vaultwarden', 'password-manager', 'passwords']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'languagetool',
|
name: 'languagetool',
|
||||||
@@ -90,7 +96,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8010
|
main: 8010
|
||||||
}
|
},
|
||||||
|
labels: ['languagetool', 'grammar', 'spell-checker']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'n8n',
|
name: 'n8n',
|
||||||
@@ -100,7 +107,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 5678
|
main: 5678
|
||||||
}
|
},
|
||||||
|
labels: ['n8n', 'workflow', 'automation', 'ifttt', 'zapier', 'nodered']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'uptimekuma',
|
name: 'uptimekuma',
|
||||||
@@ -110,7 +118,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 3001
|
main: 3001
|
||||||
}
|
},
|
||||||
|
labels: ['uptimekuma', 'uptime', 'monitoring']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'ghost',
|
name: 'ghost',
|
||||||
@@ -121,7 +130,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 2368
|
main: 2368
|
||||||
}
|
},
|
||||||
|
labels: ['ghost', 'blog', 'cms']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'meilisearch',
|
name: 'meilisearch',
|
||||||
@@ -132,7 +142,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 7700
|
main: 7700
|
||||||
}
|
},
|
||||||
|
labels: ['meilisearch', 'search', 'search-engine']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'umami',
|
name: 'umami',
|
||||||
@@ -143,7 +154,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'postgresql-latest',
|
recommendedVersion: 'postgresql-latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 3000
|
main: 3000
|
||||||
}
|
},
|
||||||
|
labels: ['umami', 'analytics', 'gdpr', 'no-cookie']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'hasura',
|
name: 'hasura',
|
||||||
@@ -154,7 +166,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'v2.10.0',
|
recommendedVersion: 'v2.10.0',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8080
|
main: 8080
|
||||||
}
|
},
|
||||||
|
labels: ['hasura', 'graphql', 'database']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'fider',
|
name: 'fider',
|
||||||
@@ -165,7 +178,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'stable',
|
recommendedVersion: 'stable',
|
||||||
ports: {
|
ports: {
|
||||||
main: 3000
|
main: 3000
|
||||||
}
|
},
|
||||||
|
labels: ['fider', 'feedback', 'suggestions']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'appwrite',
|
name: 'appwrite',
|
||||||
@@ -176,7 +190,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: '1.0',
|
recommendedVersion: '1.0',
|
||||||
ports: {
|
ports: {
|
||||||
main: 80
|
main: 80
|
||||||
}
|
},
|
||||||
|
labels: ['appwrite', 'database', 'storage', 'api', 'serverless']
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// name: 'moodle',
|
// name: 'moodle',
|
||||||
@@ -198,7 +213,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8000
|
main: 8000
|
||||||
}
|
},
|
||||||
|
labels: ['glitchtip', 'error-reporting', 'error', 'sentry', 'bugsnag']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'searxng',
|
name: 'searxng',
|
||||||
@@ -209,7 +225,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8080
|
main: 8080
|
||||||
}
|
},
|
||||||
|
labels: ['searxng', 'search', 'search-engine']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'weblate',
|
name: 'weblate',
|
||||||
@@ -220,7 +237,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8080
|
main: 8080
|
||||||
}
|
},
|
||||||
|
labels: ['weblate', 'translation', 'localization']
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// name: 'taiga',
|
// name: 'taiga',
|
||||||
@@ -242,7 +260,8 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 3000
|
main: 3000
|
||||||
}
|
},
|
||||||
|
labels: ['grafana', 'monitoring', 'metrics', 'dashboard']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'trilium',
|
name: 'trilium',
|
||||||
@@ -253,6 +272,7 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
recommendedVersion: 'latest',
|
recommendedVersion: 'latest',
|
||||||
ports: {
|
ports: {
|
||||||
main: 8080
|
main: 8080
|
||||||
}
|
},
|
||||||
|
labels: ['trilium', 'notes', 'note-taking', 'wiki']
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@@ -27,10 +27,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
export let types: any;
|
export let types: any;
|
||||||
|
|
||||||
|
let search = '';
|
||||||
|
let filteredTypes = types;
|
||||||
|
|
||||||
import { page } from '$app/stores';
|
import { page } from '$app/stores';
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { get, post } from '$lib/api';
|
import { get, post } from '$lib/api';
|
||||||
import { t } from '$lib/translations';
|
|
||||||
import { errorNotification } from '$lib/common';
|
import { errorNotification } from '$lib/common';
|
||||||
import ServiceIcons from '$lib/components/svg/services/ServiceIcons.svelte';
|
import ServiceIcons from '$lib/components/svg/services/ServiceIcons.svelte';
|
||||||
|
|
||||||
@@ -45,10 +47,50 @@
|
|||||||
return errorNotification(error);
|
return errorNotification(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function doSearch() {
|
||||||
|
filteredTypes = types.filter(
|
||||||
|
(type: any) =>
|
||||||
|
type.name.toLowerCase().includes(search.toLowerCase()) ||
|
||||||
|
type.labels.some((label: string) => label.toLowerCase().includes(search.toLowerCase()))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function cleanupSearch() {
|
||||||
|
search = '';
|
||||||
|
filteredTypes = types;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex flex-wrap justify-center">
|
<div class="container lg:mx-auto lg:p-0 px-8 pt-5">
|
||||||
{#each types as type}
|
<div class="input-group flex w-full">
|
||||||
|
<div class="btn btn-square cursor-default no-animation hover:bg-error" on:click={cleanupSearch}>
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
class="w-6 h-6"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke="currentcolor"
|
||||||
|
fill="none"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
>
|
||||||
|
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||||
|
<line x1="18" y1="6" x2="6" y2="18" />
|
||||||
|
<line x1="6" y1="6" x2="18" y2="18" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
id="search"
|
||||||
|
class="input w-full"
|
||||||
|
type="text"
|
||||||
|
placeholder="Search for services"
|
||||||
|
bind:value={search}
|
||||||
|
on:input={() => doSearch()}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="container lg:mx-auto lg:pt-20 lg:p-0 px-8 pt-20">
|
||||||
|
<div class="flex flex-wrap justify-center gap-8">
|
||||||
|
{#each filteredTypes as type}
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<form on:submit|preventDefault={() => handleSubmit(type.name)}>
|
<form on:submit|preventDefault={() => handleSubmit(type.name)}>
|
||||||
<button type="submit" class="box-selection relative text-xl font-bold hover:bg-pink-600">
|
<button type="submit" class="box-selection relative text-xl font-bold hover:bg-pink-600">
|
||||||
@@ -59,3 +101,4 @@
|
|||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
Reference in New Issue
Block a user