|
|
|
|
@@ -322,12 +322,14 @@ fn get_app_metadata(app_id: &str) -> AppMetadata {
|
|
|
|
|
icon: "/assets/img/app-icons/bitcoin-knots.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/bitcoinknots/bitcoin".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"btcpay" | "btcpay-server" | "btcpayserver" => AppMetadata {
|
|
|
|
|
title: "BTCPay Server".to_string(),
|
|
|
|
|
description: "Self-hosted Bitcoin payment processor".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/btcpay-server.png".to_string(),
|
|
|
|
|
repo: "https://github.com/btcpayserver/btcpayserver".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
tier,
|
|
|
|
|
},
|
|
|
|
|
"homeassistant" | "home-assistant" => AppMetadata {
|
|
|
|
|
@@ -335,204 +337,238 @@ fn get_app_metadata(app_id: &str) -> AppMetadata {
|
|
|
|
|
description: "Open source home automation platform".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/homeassistant.png".to_string(),
|
|
|
|
|
repo: "https://github.com/home-assistant/core".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"grafana" => AppMetadata {
|
|
|
|
|
title: "Grafana".to_string(),
|
|
|
|
|
description: "Analytics and monitoring platform".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/grafana.png".to_string(),
|
|
|
|
|
repo: "https://github.com/grafana/grafana".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"endurain" => AppMetadata {
|
|
|
|
|
title: "Endurain".to_string(),
|
|
|
|
|
description: "Self-hosted fitness tracking platform".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/endurain.png".to_string(),
|
|
|
|
|
repo: "https://github.com/joaovitoriasilva/endurain".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"fedimint" => AppMetadata {
|
|
|
|
|
title: "Fedimint".to_string(),
|
|
|
|
|
description: "Federated Bitcoin mint with Guardian and Gateway".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/fedimint.png".to_string(),
|
|
|
|
|
repo: "https://github.com/fedimint/fedimint".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"fedimint-gateway" => AppMetadata {
|
|
|
|
|
title: "Fedimint Gateway".to_string(),
|
|
|
|
|
description: "Fedimint Lightning gateway for ecash payments".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/fedimint.png".to_string(),
|
|
|
|
|
repo: "https://github.com/fedimint/fedimint".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"morphos" | "morphos-server" => AppMetadata {
|
|
|
|
|
title: "Morphos".to_string(),
|
|
|
|
|
description: "Self-hosted file converter".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/morphos.png".to_string(),
|
|
|
|
|
repo: "https://github.com/danvergara/morphos".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"lnd" | "lightning-stack" => AppMetadata {
|
|
|
|
|
title: "LND".to_string(),
|
|
|
|
|
description: "Lightning Network Daemon".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/lnd.svg".to_string(),
|
|
|
|
|
repo: "https://github.com/lightningnetwork/lnd".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"mempool" | "mempool-web" => AppMetadata {
|
|
|
|
|
title: "Mempool".to_string(),
|
|
|
|
|
description: "Bitcoin blockchain explorer".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/mempool.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/mempool/mempool".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"mempool-electrs" | "electrs" => AppMetadata {
|
|
|
|
|
title: "Electrs".to_string(),
|
|
|
|
|
description: "Electrum protocol indexer for Bitcoin. Powers Mempool and other Electrum clients.".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/electrs.svg".to_string(),
|
|
|
|
|
repo: "https://github.com/romanz/electrs".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"ollama" => AppMetadata {
|
|
|
|
|
title: "Ollama".to_string(),
|
|
|
|
|
description: "Run large language models locally".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/ollama.png".to_string(),
|
|
|
|
|
repo: "https://github.com/ollama/ollama".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"searxng" => AppMetadata {
|
|
|
|
|
title: "SearXNG".to_string(),
|
|
|
|
|
description: "Privacy-respecting metasearch engine".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/searxng.png".to_string(),
|
|
|
|
|
repo: "https://github.com/searxng/searxng".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"onlyoffice" | "onlyoffice-documentserver" => AppMetadata {
|
|
|
|
|
title: "OnlyOffice".to_string(),
|
|
|
|
|
description: "Office suite and document collaboration".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/onlyoffice.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/ONLYOFFICE/DocumentServer".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"penpot" | "penpot-frontend" => AppMetadata {
|
|
|
|
|
title: "Penpot".to_string(),
|
|
|
|
|
description: "Open-source design and prototyping".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/penpot.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/penpot/penpot".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"nextcloud" => AppMetadata {
|
|
|
|
|
title: "Nextcloud".to_string(),
|
|
|
|
|
description: "Self-hosted cloud storage and file management".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/nextcloud.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/nextcloud/server".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"vaultwarden" => AppMetadata {
|
|
|
|
|
title: "Vaultwarden".to_string(),
|
|
|
|
|
description: "Self-hosted password manager (Bitwarden compatible)".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/vaultwarden.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/dani-garcia/vaultwarden".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"jellyfin" => AppMetadata {
|
|
|
|
|
title: "Jellyfin".to_string(),
|
|
|
|
|
description: "Free media server system".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/jellyfin.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/jellyfin/jellyfin".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"photoprism" => AppMetadata {
|
|
|
|
|
title: "PhotoPrism".to_string(),
|
|
|
|
|
description: "AI-powered photo management".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/photoprims.svg".to_string(),
|
|
|
|
|
repo: "https://github.com/photoprism/photoprism".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"immich" | "immich_server" => AppMetadata {
|
|
|
|
|
title: "Immich".to_string(),
|
|
|
|
|
description: "High-performance self-hosted photo and video backup".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/immich.png".to_string(),
|
|
|
|
|
repo: "https://github.com/immich-app/immich".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"filebrowser" => AppMetadata {
|
|
|
|
|
title: "File Browser".to_string(),
|
|
|
|
|
description: "Web-based file manager".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/file-browser.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/filebrowser/filebrowser".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"nginx-proxy-manager" => AppMetadata {
|
|
|
|
|
title: "Nginx Proxy Manager".to_string(),
|
|
|
|
|
description: "Easy proxy management with SSL".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/nginx.svg".to_string(),
|
|
|
|
|
repo: "https://github.com/NginxProxyManager/nginx-proxy-manager".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"portainer" => AppMetadata {
|
|
|
|
|
title: "Portainer".to_string(),
|
|
|
|
|
description: "Container management UI".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/portainer.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/portainer/portainer".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"uptime-kuma" => AppMetadata {
|
|
|
|
|
title: "Uptime Kuma".to_string(),
|
|
|
|
|
description: "Self-hosted monitoring tool".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/uptime-kuma.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/louislam/uptime-kuma".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"tailscale" => AppMetadata {
|
|
|
|
|
title: "Tailscale".to_string(),
|
|
|
|
|
description: "Zero-config VPN for secure remote access".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/tailscale.webp".to_string(),
|
|
|
|
|
repo: "https://github.com/tailscale/tailscale".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"indeedhub" => AppMetadata {
|
|
|
|
|
title: "Indeehub".to_string(),
|
|
|
|
|
description: "Decentralized media streaming platform".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/indeehub.ico".to_string(),
|
|
|
|
|
repo: "https://github.com/indeedhub/indeedhub".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"nostr-rs-relay" => AppMetadata {
|
|
|
|
|
title: "Nostr Relay".to_string(),
|
|
|
|
|
description: "Run your own Nostr relay for sovereign event storage".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/nostr-rs-relay.svg".to_string(),
|
|
|
|
|
repo: "https://sr.ht/~gheartsfield/nostr-rs-relay/".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"dwn" => AppMetadata {
|
|
|
|
|
title: "Decentralized Web Node".to_string(),
|
|
|
|
|
description: "Store and sync personal data with DID-based access control".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/dwn.svg".to_string(),
|
|
|
|
|
repo: "https://github.com/TBD54566975/dwn-server".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"tor" | "archy-tor" => AppMetadata {
|
|
|
|
|
title: "Tor".to_string(),
|
|
|
|
|
description: "Anonymous overlay network for privacy".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/tor.svg".to_string(),
|
|
|
|
|
repo: "https://gitlab.torproject.org/tpo/core/tor".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"botfights" => AppMetadata {
|
|
|
|
|
title: "BotFights".to_string(),
|
|
|
|
|
description: "AI bot arena — build, train, and battle autonomous agents".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/botfights.svg".to_string(),
|
|
|
|
|
repo: "https://botfights.net".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"nwnn" => AppMetadata {
|
|
|
|
|
title: "Next Web News Network".to_string(),
|
|
|
|
|
description: "Decentralized news and link aggregator, synced from Telegram".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/nwnn.png".to_string(),
|
|
|
|
|
repo: "https://nwnn.l484.com".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"484-kitchen" => AppMetadata {
|
|
|
|
|
title: "484 Kitchen".to_string(),
|
|
|
|
|
description: "K484 application platform".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/484-kitchen.png".to_string(),
|
|
|
|
|
repo: "https://484.kitchen".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"call-the-operator" => AppMetadata {
|
|
|
|
|
title: "Call the Operator".to_string(),
|
|
|
|
|
description: "Escape the Matrix — explore decentralized alternatives".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/call-the-operator.png".to_string(),
|
|
|
|
|
repo: "https://cta.tx1138.com".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"arch-presentation" => AppMetadata {
|
|
|
|
|
title: "Arch Presentation".to_string(),
|
|
|
|
|
description: "Archipelago: The Future of Decentralized Infrastructure".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/arch-presentation.png".to_string(),
|
|
|
|
|
repo: "https://present.l484.com".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"syntropy-institute" => AppMetadata {
|
|
|
|
|
title: "Syntropy Institute".to_string(),
|
|
|
|
|
description: "Medicine Reimagined — frequency analysis-therapy and digital homeopathy".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/syntropy-institute.png".to_string(),
|
|
|
|
|
repo: "https://syntropy.institute".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
"t-zero" => AppMetadata {
|
|
|
|
|
title: "T-0".to_string(),
|
|
|
|
|
description: "Documentary series on decentralization, Bitcoin, and the ungovernable future".to_string(),
|
|
|
|
|
icon: "/assets/img/app-icons/t-zero.png".to_string(),
|
|
|
|
|
repo: "https://teeminuszero.net".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
_ => AppMetadata {
|
|
|
|
|
title: app_id.to_string(),
|
|
|
|
|
@@ -540,6 +576,7 @@ fn get_app_metadata(app_id: &str) -> AppMetadata {
|
|
|
|
|
icon: "/assets/img/favico.png".to_string(),
|
|
|
|
|
repo: "#".to_string(),
|
|
|
|
|
tier: "",
|
|
|
|
|
tier: "",
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
meta.tier = get_app_tier(app_id);
|
|
|
|
|
|