SuggestedAppData.tsx raw

   1  import { ZapIcon } from "lucide-react";
   2  import { Link } from "react-router";
   3  import topup2fiat from "src/assets/suggested-apps/2fiat-topup.png";
   4  import albyExtension from "src/assets/suggested-apps/alby-extension.png";
   5  import albyGo from "src/assets/suggested-apps/alby-go.png";
   6  import albySandbox from "src/assets/suggested-apps/alby-sandbox.png";
   7  import albyCli from "src/assets/suggested-apps/alby.png";
   8  import amethyst from "src/assets/suggested-apps/amethyst.png";
   9  import bitcoinCardTopup from "src/assets/suggested-apps/bitcoin-card-topup.png";
  10  import bitrefill from "src/assets/suggested-apps/bitrefill.png";
  11  import bitrequest from "src/assets/suggested-apps/bitrequest.png";
  12  import bringin from "src/assets/suggested-apps/bringin.png";
  13  import btcpay from "src/assets/suggested-apps/btcpay.png";
  14  import buzzpay from "src/assets/suggested-apps/buzzpay.png";
  15  import castamatic from "src/assets/suggested-apps/castamatic.png";
  16  import clams from "src/assets/suggested-apps/clams.png";
  17  import coracle from "src/assets/suggested-apps/coracle.png";
  18  import damus from "src/assets/suggested-apps/damus.png";
  19  import fountain from "src/assets/suggested-apps/fountain.png";
  20  import hablanews from "src/assets/suggested-apps/habla-news.png";
  21  import iris from "src/assets/suggested-apps/iris.png";
  22  import jumble from "src/assets/suggested-apps/jumble.png";
  23  import lightningMessageboard from "src/assets/suggested-apps/lightning-messageboard.png";
  24  import lnbits from "src/assets/suggested-apps/lnbits.png";
  25  import lnvps from "src/assets/suggested-apps/lnvps.png";
  26  import lume from "src/assets/suggested-apps/lume.png";
  27  import nadanada from "src/assets/suggested-apps/nadanada.png";
  28  import nakapay from "src/assets/suggested-apps/nakapay.png";
  29  import nostrcheckserver from "src/assets/suggested-apps/nostrcheck-server.png";
  30  import nostrudel from "src/assets/suggested-apps/nostrudel.png";
  31  import nostter from "src/assets/suggested-apps/nostter.png";
  32  import nostur from "src/assets/suggested-apps/nostur.png";
  33  import payperq from "src/assets/suggested-apps/payperq.png";
  34  import primal from "src/assets/suggested-apps/primal.png";
  35  import pullthatupjamie from "src/assets/suggested-apps/pullthatupjamie.png";
  36  import runstr from "src/assets/suggested-apps/runstr.png";
  37  import satsorter from "src/assets/suggested-apps/sat-sorter.png";
  38  import satoraLogo from "src/assets/suggested-apps/satora.png";
  39  import sats4ai from "src/assets/suggested-apps/sats4ai.png";
  40  import simpleboost from "src/assets/suggested-apps/simple-boost.png";
  41  import snort from "src/assets/suggested-apps/snort.png";
  42  import stackernews from "src/assets/suggested-apps/stacker-news.png";
  43  import takemysats from "src/assets/suggested-apps/takemysats.png";
  44  import tictactoe from "src/assets/suggested-apps/tictactoe.png";
  45  import tunnelsats from "src/assets/suggested-apps/tunnelsats.png";
  46  import wavespace from "src/assets/suggested-apps/wave-space.png";
  47  import wavlake from "src/assets/suggested-apps/wavlake.png";
  48  import wherostr from "src/assets/suggested-apps/wherostr.png";
  49  import yakihonne from "src/assets/suggested-apps/yakihonne.png";
  50  import zapstream from "src/assets/suggested-apps/zap-stream.png";
  51  import zapplanner from "src/assets/suggested-apps/zapplanner.png";
  52  import zapplepay from "src/assets/suggested-apps/zapple-pay.png";
  53  import zappybird from "src/assets/suggested-apps/zappy-bird.png";
  54  import zapstore from "src/assets/suggested-apps/zapstore.png";
  55  import zeus from "src/assets/suggested-apps/zeus.png";
  56  import { BitcoinCardTopupInstallGuide } from "src/components/connections/BitcoinCardTopupInstallGuide";
  57  import ExternalLink from "src/components/ExternalLink";
  58  import { App } from "src/types";
  59  
  60  export type AppStoreApp = {
  61    id: string;
  62    title: string;
  63    legacyTitles?: string[];
  64    description: string;
  65    extendedDescription: string;
  66  
  67    logo?: string;
  68    categories: (keyof typeof appStoreCategories)[];
  69  
  70    // General links
  71    webLink?: string;
  72  
  73    // App store links
  74    playLink?: string;
  75    appleLink?: string;
  76    zapStoreLink?: string;
  77  
  78    // Extension store links
  79    chromeLink?: string;
  80    firefoxLink?: string;
  81  
  82    installGuide?: React.ReactNode;
  83    finalizeGuide?: React.ReactNode;
  84    hideConnectionQr?: boolean;
  85    internal?: boolean;
  86    superuser?: boolean;
  87    // Receive-only apps (e.g. merchant payment receivers) default to read-only
  88    // permissions in the new connection flow.
  89    readonly?: boolean;
  90    addedDate?: string;
  91  };
  92  
  93  export const appStoreCategories = {
  94    "wallet-interfaces": {
  95      title: "Wallet Interfaces",
  96      priority: 1,
  97    },
  98    "social-media": {
  99      title: "Social Media",
 100      priority: 2,
 101    },
 102    ai: {
 103      title: "AI",
 104      priority: 20,
 105    },
 106    "merchant-tools": {
 107      title: "Merchant Tools",
 108      priority: 10,
 109    },
 110    audio: {
 111      title: "Audio",
 112      priority: 20,
 113    },
 114    blogging: {
 115      title: "Blogging",
 116      priority: 20,
 117    },
 118    "payment-tools": {
 119      title: "Payment Tools",
 120      priority: 10,
 121    },
 122    shopping: {
 123      title: "Shopping",
 124      priority: 30,
 125    },
 126    "nostr-tools": {
 127      title: "Nostr Tools",
 128      priority: 40,
 129    },
 130    games: {
 131      title: "Games",
 132      priority: 50,
 133    },
 134    misc: {
 135      title: "Misc",
 136      priority: 100,
 137    },
 138  } as const;
 139  
 140  export const sortedAppStoreCategories = Object.entries(appStoreCategories).sort(
 141    (a, b) => a[1].priority - b[1].priority
 142  );
 143  
 144  export const appStoreApps: AppStoreApp[] = (
 145    [
 146      {
 147        id: "alby-go",
 148        title: "Alby Go",
 149        description: "A simple mobile wallet that works great with Alby Hub",
 150        webLink: "https://albygo.com",
 151        playLink:
 152          "https://play.google.com/store/apps/details?id=com.getalby.mobile",
 153        appleLink: "https://apps.apple.com/us/app/alby-go/id6471335774",
 154        zapStoreLink: "https://zapstore.dev/download/",
 155        logo: albyGo,
 156        extendedDescription:
 157          "Sends and receives payments seamlessly from your Hub",
 158        categories: ["wallet-interfaces"],
 159        superuser: true,
 160        installGuide: (
 161          <>
 162            <p className="text-muted-foreground">
 163              Download and open{" "}
 164              <span className="font-medium text-foreground">Alby Go</span> on your
 165              iOS or Android device
 166            </p>
 167          </>
 168        ),
 169        finalizeGuide: (
 170          <>
 171            <div>
 172              <h3 className="font-medium">In Alby Go</h3>
 173              <p className="text-muted-foreground">
 174                Scan the connection secret from Alby Hub
 175              </p>
 176            </div>
 177          </>
 178        ),
 179      },
 180      {
 181        id: "buzzpay",
 182        title: "BuzzPay PoS",
 183        description: "Receive-only PoS you can safely share with your employees",
 184        extendedDescription:
 185          "Receive-only PoS you can safely share with your employees",
 186        internal: true,
 187        logo: buzzpay,
 188        categories: ["merchant-tools"],
 189        webLink: "https://pos.albylabs.com",
 190      },
 191      {
 192        id: "castamatic",
 193        title: "Castamatic",
 194        description: "Podcast player with Value4Value support",
 195        webLink: "https://castamatic.com",
 196        appleLink:
 197          "https://apps.apple.com/us/app/castamatic-podcast-player/id966632553",
 198        logo: castamatic,
 199        extendedDescription:
 200          "Castamatic is a feature-rich podcast player for iOS with built-in Value4Value support. Send boosts and stream sats to your favorite podcasters while you listen.",
 201        installGuide: (
 202          <>
 203            <p className="text-muted-foreground">
 204              Download and open{" "}
 205              <span className="font-medium text-foreground">Castamatic</span> on
 206              your iOS device
 207            </p>
 208          </>
 209        ),
 210        finalizeGuide: (
 211          <>
 212            <div>
 213              <h3 className="font-medium">In Castamatic</h3>
 214              <ul className="list-inside list-decimal text-muted-foreground">
 215                <li>Open a podcast that supports Value4Value</li>
 216                <li>Tap the Connect Wallet button in the player</li>
 217                <li>Select Connect NWC wallet</li>
 218                <li>Scan or paste the connection secret from Alby Hub</li>
 219              </ul>
 220            </div>
 221          </>
 222        ),
 223        categories: ["audio"],
 224        addedDate: "2026-03-12",
 225      },
 226      {
 227        id: "bitcoin-card-topup",
 228        title: "Bitcoin Card Topup",
 229        description: "Top up any crypto debit card instantly with bitcoin",
 230        logo: bitcoinCardTopup,
 231        categories: ["payment-tools"],
 232        extendedDescription:
 233          "A generic top-up app that swaps Lightning sats to a stablecoin and sends them to your card's deposit address. Works with RedotPay, Freedomia, Nexo, Bybit, and any other card that accepts on-chain crypto deposits.",
 234        webLink: "https://card.albylabs.com",
 235        installGuide: <BitcoinCardTopupInstallGuide />,
 236        finalizeGuide: (
 237          <>
 238            <div>
 239              <ul className="list-inside list-decimal text-muted-foreground">
 240                <li>Copy the connection secret below.</li>
 241                <li>
 242                  In the topup app, tap{" "}
 243                  <span className="font-medium text-foreground">
 244                    Connect Wallet
 245                  </span>{" "}
 246                  and paste the connection secret.
 247                </li>
 248              </ul>
 249            </div>
 250          </>
 251        ),
 252      },
 253      {
 254        id: "2fiat",
 255        title: "2fiat Top up",
 256        description:
 257          "No-KYC virtual prepaid Mastercard with instant lightning top ups",
 258        logo: topup2fiat,
 259        categories: ["payment-tools"],
 260        extendedDescription:
 261          "No-KYC virtual prepaid Mastercard. Anonymous payments, Instant lightning top-ups, Apple & Google Pay ready, Load amounts from $10 to $10,000,  All cards support 3D Secure (3DS), Global usage - pay anywhere Mastercard is accepted.",
 262        webLink: "http://2fiat.com/getalby",
 263        installGuide: (
 264          <>
 265            <div>
 266              <ul className="list-inside list-decimal text-muted-foreground">
 267                <li>
 268                  <ExternalLink
 269                    to="http://2fiat.com/getalby"
 270                    className="underline"
 271                  >
 272                    Sign up
 273                  </ExternalLink>{" "}
 274                  for a 2fiat card and set it up
 275                </li>
 276                <li>
 277                  On the 2fiat website, open the card page (where you can see the
 278                  full card number and transaction list) and{" "}
 279                  <span className="font-medium text-foreground">
 280                    copy the entire URL
 281                  </span>
 282                  .
 283                </li>
 284                <li>
 285                  Open{" "}
 286                  <ExternalLink
 287                    to="https://rolznz.github.io/2fiat-topup/"
 288                    className="underline"
 289                  >
 290                    2fiat top up
 291                  </ExternalLink>{" "}
 292                  (on mobile save the app to your homescreen and open it there
 293                  before continuing) and
 294                </li>
 295                <li>
 296                  Click the "Connect Card" button and paste the card link you
 297                  copied earlier.
 298                </li>
 299              </ul>
 300            </div>
 301          </>
 302        ),
 303        finalizeGuide: (
 304          <>
 305            <div>
 306              <ul className="list-inside list-decimal text-muted-foreground">
 307                <li>Copy the connection secret below</li>
 308                <li>
 309                  Click the "Connect Wallet" button inside the 2fiat topup app,
 310                  choose "Alby Hub {"->"} Connection Secret" and paste the
 311                  connection secret.
 312                </li>
 313              </ul>
 314            </div>
 315          </>
 316        ),
 317      },
 318      {
 319        id: "alby-cli-skill",
 320        title: "Alby CLI Skill",
 321        description: "Skill wrapper that helps AI agents use Alby CLI better",
 322        extendedDescription:
 323          "Agent skill for Alby CLI with guided setup for skill-enabled coding agents and AI tooling.",
 324        internal: true,
 325        logo: albyCli,
 326        categories: ["ai"],
 327        webLink: "https://github.com/getAlby/alby-cli-skill",
 328      },
 329      {
 330        id: "payperq",
 331        title: "PayPerQ",
 332        description: "Pay-Per-Prompt AI Service",
 333        webLink: "https://ppq.ai/invite/3f21c1e5",
 334        logo: payperq,
 335        hideConnectionQr: true,
 336        extendedDescription:
 337          "Access all of the latest AI models and tools in one place without the need for subscriptions",
 338        installGuide: (
 339          <>
 340            <ul className="list-inside list-decimal text-muted-foreground">
 341              <li>
 342                Open{" "}
 343                <ExternalLink
 344                  to="https://ppq.ai/api-docs"
 345                  className="font-medium text-foreground underline"
 346                >
 347                  PayPerQ API docs page
 348                </ExternalLink>{" "}
 349                and scroll down to the{" "}
 350                <span className="font-medium text-foreground">
 351                  NWC Auto-Topup
 352                </span>{" "}
 353                section.
 354              </li>
 355              <li>
 356                Copy the CURL code example for{" "}
 357                <span className="font-medium text-foreground">
 358                  POST /nwc-auto-topup/connect
 359                </span>{" "}
 360                and paste it into a notepad.
 361              </li>
 362            </ul>
 363          </>
 364        ),
 365        finalizeGuide: (
 366          <>
 367            <div>
 368              <h3 className="font-medium">Connect Auto-Topup</h3>
 369              <ul className="list-inside list-decimal text-muted-foreground">
 370                <li>
 371                  Replace the{" "}
 372                  <span className="font-medium text-foreground">"nwc_url"</span>{" "}
 373                  field with your connection secret.
 374                </li>
 375                <li>Execute the CURL command in your terminal.</li>
 376                <li>
 377                  Verify settings with{" "}
 378                  <code className="text-foreground">
 379                    GET https://api.ppq.ai/nwc-auto-topup
 380                  </code>{" "}
 381                  along with the{" "}
 382                  <code className="text-foreground">x-credit-id</code> header.
 383                </li>
 384              </ul>
 385            </div>
 386          </>
 387        ),
 388        categories: ["ai"],
 389      },
 390      {
 391        id: "sats4ai",
 392        title: "Sats4AI",
 393        description: "30+ AI tools paid with lightning micropayments",
 394        extendedDescription:
 395          "Access 30+ AI tools including image generation, video, text-to-speech, transcription, and more. No signup, no API keys — just pay per use with lightning.",
 396        logo: sats4ai,
 397        categories: ["ai"],
 398        webLink: "https://sats4ai.com",
 399      },
 400      {
 401        id: "simpleboost",
 402        title: "SimpleBoost",
 403        description: "Donation widget for your website",
 404        extendedDescription: "Donation widget for your website",
 405        internal: true,
 406        logo: simpleboost,
 407        categories: ["merchant-tools"],
 408        webLink: "https://getalby.github.io/simple-boost/",
 409      },
 410      {
 411        id: "lightning-messageboard",
 412        title: "Lightning Messageboard",
 413        description: "Paid messageboard widget for your website",
 414        extendedDescription: "Paid messageboard widget for your website",
 415        internal: true,
 416        logo: lightningMessageboard,
 417        categories: ["merchant-tools"],
 418        webLink: "https://github.com/getAlby/lightning-messageboard",
 419      },
 420      {
 421        id: "lnvps",
 422        title: "LNVPS",
 423        description: "VPS powered by Bitcoin",
 424        webLink: "https://lnvps.net/?ref=alby",
 425        logo: lnvps,
 426        hideConnectionQr: true,
 427        extendedDescription:
 428          "Run VPS infrastructure with Bitcoin-native billing and automated renewals through Nostr Wallet Connect.",
 429        installGuide: (
 430          <>
 431            <p className="text-muted-foreground">
 432              Open{" "}
 433              <ExternalLink
 434                to="https://lnvps.net/?ref=alby"
 435                className="font-medium text-foreground underline"
 436              >
 437                LNVPS
 438              </ExternalLink>{" "}
 439              in your browser
 440            </p>
 441          </>
 442        ),
 443        finalizeGuide: (
 444          <>
 445            <div>
 446              <h3 className="font-medium">In LNVPS</h3>
 447              <ul className="list-inside list-decimal text-muted-foreground">
 448                <li>
 449                  Enable auto-renew on{" "}
 450                  <ExternalLink
 451                    to="https://lnvps.net/vm/billing"
 452                    className="font-medium text-foreground underline"
 453                  >
 454                    lnvps.net/vm/billing
 455                  </ExternalLink>
 456                </li>
 457                <li>
 458                  Go to{" "}
 459                  <ExternalLink
 460                    to="https://lnvps.net/account/settings"
 461                    className="font-medium text-foreground underline"
 462                  >
 463                    lnvps.net/account/settings
 464                  </ExternalLink>
 465                </li>
 466                <li>Paste the connection secret from Alby Hub</li>
 467                <li>Save your settings to activate NWC auto-renewal</li>
 468              </ul>
 469            </div>
 470          </>
 471        ),
 472        categories: ["misc"],
 473      },
 474      {
 475        id: "alby-extension",
 476        title: "Alby Extension",
 477        description: "Wallet in your browser",
 478        webLink: "https://getalby.com/products/browser-extension",
 479        chromeLink:
 480          "https://chromewebstore.google.com/detail/iokeahhehimjnekafflcihljlcjccdbe",
 481        firefoxLink: "https://addons.mozilla.org/en-US/firefox/addon/alby/",
 482        logo: albyExtension,
 483        extendedDescription:
 484          "Connect your Hub to lightning-enabled websites and lets you pay seamlessly on the web",
 485        hideConnectionQr: true,
 486        installGuide: (
 487          <>
 488            <div>
 489              <ul className="list-inside list-decimal text-muted-foreground">
 490                <li>
 491                  Download and open{" "}
 492                  <span className="font-medium text-foreground">
 493                    Alby Extension
 494                  </span>{" "}
 495                  in your desktop browser or for Firefox mobile
 496                </li>
 497                <li>Set your Unlock Passcode</li>
 498                <li>
 499                  Choose{" "}
 500                  <span className="font-medium text-foreground">
 501                    Bring your own Wallet {"->"} Alby Hub
 502                  </span>
 503                </li>
 504              </ul>
 505            </div>
 506          </>
 507        ),
 508        finalizeGuide: (
 509          <>
 510            <div>
 511              <ul className="list-inside list-decimal text-muted-foreground">
 512                <li>Copy the connection secret below</li>
 513                <li>
 514                  Paste into the extension and then click{" "}
 515                  <span className="font-medium text-foreground">Continue</span>
 516                </li>
 517              </ul>
 518            </div>
 519          </>
 520        ),
 521        categories: ["wallet-interfaces"],
 522      },
 523      {
 524        id: "alby-cli",
 525        title: "Alby CLI",
 526        description:
 527          "Command-line interface for Nostr Wallet Connect with lightning tools",
 528        webLink: "https://github.com/getAlby/cli",
 529        logo: albyCli,
 530        extendedDescription:
 531          "Manage your Alby Hub from the command line. Send and receive payments, create invoices, check your balance, and automate lightning workflows. Built for developers and AI agents.",
 532        categories: ["wallet-interfaces"],
 533        hideConnectionQr: true,
 534        installGuide: (
 535          <>
 536            <div>
 537              <ul className="list-inside list-decimal text-muted-foreground">
 538                <li>
 539                  Install the CLI globally:{" "}
 540                  <code className="text-foreground">
 541                    npm install -g @getalby/cli
 542                  </code>
 543                </li>
 544                <li>
 545                  Or run directly with npx:{" "}
 546                  <code className="text-foreground">npx @getalby/cli</code>
 547                </li>
 548              </ul>
 549            </div>
 550          </>
 551        ),
 552        finalizeGuide: (
 553          <>
 554            <div>
 555              <h3 className="font-medium">Connect to your Hub</h3>
 556              <ul className="list-inside list-decimal text-muted-foreground">
 557                <li>
 558                  Set the <code className="text-foreground">NWC_URL</code>{" "}
 559                  environment variable or pass the connection string via{" "}
 560                  <code className="text-foreground">-c</code>
 561                </li>
 562                <li>
 563                  Run{" "}
 564                  <code className="text-foreground">
 565                    npx @getalby/cli -c "nostr+walletconnect://..." get-info
 566                  </code>{" "}
 567                  to verify the connection
 568                </li>
 569              </ul>
 570            </div>
 571          </>
 572        ),
 573      },
 574      {
 575        id: "alby-sandbox",
 576        title: "Alby Sandbox",
 577        description: "Interactive Lightning payment scenarios for app builders",
 578        webLink: "https://sandbox.albylabs.com",
 579        logo: albySandbox,
 580        extendedDescription:
 581          "Explore real-world Lightning and Nostr Wallet Connect flows with guided scenarios, test wallets, and code-oriented examples for app development.",
 582        installGuide: (
 583          <>
 584            <p className="text-muted-foreground">
 585              Open{" "}
 586              <ExternalLink
 587                to="https://sandbox.albylabs.com"
 588                className="font-medium text-foreground underline"
 589              >
 590                sandbox.albylabs.com
 591              </ExternalLink>{" "}
 592              in your browser
 593            </p>
 594          </>
 595        ),
 596        finalizeGuide: (
 597          <>
 598            <div>
 599              <h3 className="font-medium">In Alby Sandbox</h3>
 600              <ul className="list-inside list-decimal text-muted-foreground">
 601                <li>Choose any scenario in the sidebar</li>
 602                <li>
 603                  Paste your Alby Hub{" "}
 604                  <span className="font-medium text-foreground">
 605                    connection secret.
 606                  </span>{" "}
 607                  If you connected a test wallet first, disconnect it and
 608                  reconnect using your Alby Hub secret.
 609                </li>
 610                <li>
 611                  Click{" "}
 612                  <span className="font-medium text-foreground">Connect</span>
 613                </li>
 614                <li>Run a scenario to explore Lightning payment flows</li>
 615              </ul>
 616            </div>
 617          </>
 618        ),
 619        categories: ["misc"],
 620      },
 621      {
 622        id: "damus",
 623        title: "Damus",
 624        description: "iOS Nostr client",
 625        webLink: "https://damus.io/?utm_source=getalby",
 626        appleLink: "https://apps.apple.com/ca/app/damus/id1628663131",
 627        logo: damus,
 628        extendedDescription:
 629          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
 630        installGuide: (
 631          <>
 632            <p className="text-muted-foreground">
 633              Download and open{" "}
 634              <span className="font-medium text-foreground">Damus</span> on your
 635              iOS device
 636            </p>
 637          </>
 638        ),
 639        finalizeGuide: (
 640          <>
 641            <div>
 642              <h3 className="font-medium">In Damus</h3>
 643              <ul className="list-inside list-decimal text-muted-foreground">
 644                <li>
 645                  Go to{" "}
 646                  <span className="font-medium text-foreground">Wallet</span> →{" "}
 647                  <span className="font-medium text-foreground">
 648                    Attach Wallet
 649                  </span>
 650                </li>
 651                <li>Scan or paste the connection secret from Alby Hub</li>
 652              </ul>
 653            </div>
 654          </>
 655        ),
 656        categories: ["social-media"],
 657      },
 658      {
 659        id: "amethyst",
 660        title: "Amethyst",
 661        description: "Android Nostr client",
 662        webLink: "https://github.com/vitorpamplona/amethyst",
 663        playLink:
 664          "https://play.google.com/store/apps/details?id=com.vitorpamplona.amethyst",
 665        logo: amethyst,
 666        extendedDescription:
 667          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
 668        installGuide: (
 669          <>
 670            <p className="text-muted-foreground">
 671              Download and open{" "}
 672              <span className="font-medium text-foreground">Amethyst</span> on
 673              your Android device
 674            </p>
 675          </>
 676        ),
 677        finalizeGuide: (
 678          <>
 679            <div>
 680              <h3 className="font-medium">In Amethyst</h3>
 681              <ul className="list-inside list-decimal text-muted-foreground">
 682                <li>
 683                  Long-press
 684                  <ZapIcon className="inline text-foreground mx-2" />
 685                  below a post in your feed
 686                </li>
 687                <li>
 688                  Click on the{" "}
 689                  <span className="font-medium text-foreground">
 690                    QR code icon
 691                  </span>{" "}
 692                  to activate the QR code scanner
 693                </li>
 694                <li>Scan the connection secret from Alby Hub</li>
 695              </ul>
 696            </div>
 697          </>
 698        ),
 699        categories: ["social-media"],
 700      },
 701      {
 702        id: "primal",
 703        title: "Primal",
 704        description: "Cross-platform social",
 705        webLink: "https://primal.net/",
 706        appleLink: "https://apps.apple.com/us/app/primal/id1673134518",
 707        playLink:
 708          "https://play.google.com/store/apps/details?id=net.primal.android",
 709        logo: primal,
 710        extendedDescription:
 711          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
 712        installGuide: (
 713          <>
 714            <p className="text-muted-foreground">
 715              Download and open{" "}
 716              <span className="font-medium text-foreground">Primal</span> on your
 717              Android or iOS device
 718            </p>
 719          </>
 720        ),
 721        finalizeGuide: (
 722          <>
 723            <div>
 724              <h3 className="font-medium">In Primal</h3>
 725              <ul className="list-inside list-decimal text-muted-foreground">
 726                <li>
 727                  Click on your{" "}
 728                  <span className="font-medium text-foreground">
 729                    profile image
 730                  </span>{" "}
 731                  in the top left corner →{" "}
 732                  <span className="font-medium text-foreground">Settings</span> →{" "}
 733                  <span className="font-medium text-foreground">Wallet</span> →{" "}
 734                  <span className="font-medium text-foreground">
 735                    Untoggle Primal wallet
 736                  </span>
 737                </li>
 738                <li>
 739                  Click on "Paste NWC String" or "Scan NWC QR Code" to connect
 740                  Alby Hub
 741                </li>
 742              </ul>
 743            </div>
 744          </>
 745        ),
 746        categories: ["social-media"],
 747      },
 748      {
 749        id: "runstr",
 750        title: "RUNSTR",
 751        description: "Bitcoin-powered fitness competitions",
 752        webLink: "https://www.runstr.club",
 753        zapStoreLink:
 754          "https://zapstore.dev/apps/naddr1qvzqqqr7pvpzqcgsy8425f5jwsd3yd4me6j5c64f7g96xr9vuvtv82fag5yf5lg0qqwxxmmd9eskummw09kk7atn9ee82mnnw3ezuurjda4x2cm50etju8",
 755        logo: runstr,
 756        extendedDescription:
 757          "Track workouts, join team competitions, and earn Bitcoin rewards through Lightning payments",
 758        installGuide: (
 759          <>
 760            <p className="text-muted-foreground">
 761              Download and open{" "}
 762              <span className="font-medium text-foreground">RUNSTR</span> on your
 763              iOS or Android device
 764            </p>
 765          </>
 766        ),
 767        finalizeGuide: (
 768          <>
 769            <div>
 770              <h3 className="font-medium">In RUNSTR</h3>
 771              <ul className="list-inside list-decimal text-muted-foreground">
 772                <li>
 773                  Go to{" "}
 774                  <span className="font-medium text-foreground">Settings</span>{" "}
 775                  and expand the{" "}
 776                  <span className="font-medium text-foreground">Advanced</span>{" "}
 777                  section
 778                </li>
 779                <li>
 780                  Tap{" "}
 781                  <span className="font-medium text-foreground">
 782                    Scan QR Code
 783                  </span>{" "}
 784                  to scan your Alby Hub connection QR
 785                </li>
 786                <li>
 787                  Or tap{" "}
 788                  <span className="font-medium text-foreground">
 789                    Enter Manually
 790                  </span>{" "}
 791                  to paste your NWC connection string
 792                </li>
 793                <li>Confirm the connection when prompted</li>
 794              </ul>
 795            </div>
 796          </>
 797        ),
 798        categories: ["misc"],
 799      },
 800      {
 801        id: "sat-sorter",
 802        readonly: true,
 803        title: "Sat Sorter",
 804        description: "A Bitcoin Budgeting App",
 805        webLink: "https://satsorter.com",
 806        logo: satsorter,
 807        extendedDescription:
 808          "A privacy-first, zero-based budgeting app for Bitcoiners. Connects via NWC for automatic Lightning transaction sync.",
 809        installGuide: (
 810          <>
 811            <p className="text-muted-foreground">
 812              Open{" "}
 813              <ExternalLink
 814                to="https://satsorter.com"
 815                className="font-medium text-foreground underline"
 816              >
 817                Sat Sorter
 818              </ExternalLink>{" "}
 819              in your browser
 820            </p>
 821          </>
 822        ),
 823        finalizeGuide: (
 824          <>
 825            <div>
 826              <h3 className="font-medium">In Sat Sorter</h3>
 827              <ul className="list-inside list-decimal text-muted-foreground">
 828                <li>
 829                  Tap the{" "}
 830                  <span className="font-medium text-foreground">Wallet</span> icon
 831                  in the header
 832                </li>
 833                <li>
 834                  Tap{" "}
 835                  <span className="font-medium text-foreground">
 836                    Connect Wallet
 837                  </span>{" "}
 838                  and select{" "}
 839                  <span className="font-medium text-foreground">
 840                    Nostr Wallet Connect
 841                  </span>
 842                </li>
 843                <li>Paste the connection secret from Alby Hub</li>
 844                <li>
 845                  Tap <span className="font-medium text-foreground">Connect</span>{" "}
 846                  — your Lightning transactions will now sync automatically
 847                </li>
 848              </ul>
 849            </div>
 850          </>
 851        ),
 852        categories: ["misc"],
 853      },
 854      {
 855        id: "zap-stream",
 856        title: "Zap Stream",
 857        description: "Stream and stack sats",
 858        webLink: "https://zap.stream/",
 859        logo: zapstream,
 860        extendedDescription:
 861          "Tip streamers, zap comments and pay or receive sats for streaming time with your Hub",
 862        installGuide: (
 863          <>
 864            <p className="text-muted-foreground">
 865              Open{" "}
 866              <ExternalLink
 867                to="https://zap.stream"
 868                className="font-medium text-foreground underline"
 869              >
 870                Zap Stream
 871              </ExternalLink>{" "}
 872              in your browser and log in
 873            </p>
 874          </>
 875        ),
 876        finalizeGuide: (
 877          <>
 878            <div>
 879              <h3 className="font-medium">In Zap Stream</h3>
 880              <ul className="list-inside list-decimal text-muted-foreground">
 881                <li>
 882                  Click on your{" "}
 883                  <span className="font-medium text-foreground">
 884                    Profile Image
 885                  </span>{" "}
 886                  → <span className="font-medium text-foreground">Settings</span>{" "}
 887                  → scroll to{" "}
 888                  <span className="font-medium text-foreground">Wallet</span>
 889                </li>
 890                <li>
 891                  Paste connection secret from Alby Hub and click on{" "}
 892                  <span className="font-medium text-foreground">Connect</span>
 893                </li>
 894              </ul>
 895            </div>
 896          </>
 897        ),
 898        categories: ["social-media"],
 899      },
 900      {
 901        id: "bitrequest",
 902        readonly: true,
 903        title: "Bitrequest",
 904        description: "Non-custodial payment requests",
 905        webLink: "https://www.bitrequest.io",
 906        playLink:
 907          "https://play.google.com/store/apps/details?id=io.bitrequest.app",
 908        appleLink: "https://apps.apple.com/us/app/bitrequest/id1484815377",
 909        logo: bitrequest,
 910        extendedDescription:
 911          "Open-source, Non-custodial app for creating and sharing cryptocurrency payment requests",
 912        installGuide: (
 913          <>
 914            <div>
 915              <p className="text-muted-foreground">
 916                Open{" "}
 917                <ExternalLink
 918                  to="https://bitrequest.github.io"
 919                  className="font-medium text-foreground underline"
 920                >
 921                  Bitrequest
 922                </ExternalLink>{" "}
 923                in your browser, or download the app on iOS or Android
 924              </p>
 925            </div>
 926          </>
 927        ),
 928        finalizeGuide: (
 929          <>
 930            <div>
 931              <h3 className="font-medium">In Bitrequest</h3>
 932              <ul className="list-inside list-decimal text-muted-foreground">
 933                <li>
 934                  Click on{" "}
 935                  <span className="font-medium text-foreground">Bitcoin</span> and
 936                  then{" "}
 937                  <span className="font-medium text-foreground">Lightning</span>{" "}
 938                  to open the{" "}
 939                  <span className="font-medium text-foreground">
 940                    Add lightning node
 941                  </span>{" "}
 942                  modal
 943                </li>
 944                <li>
 945                  Set{" "}
 946                  <span className="font-medium text-foreground">
 947                    implementation
 948                  </span>{" "}
 949                  to <span className="font-medium text-foreground">NWC</span>
 950                </li>
 951                <li>Enter a name for the connection</li>
 952                <li>
 953                  Paste the connection secret (nostr+walletconnect://....) and
 954                  click <span className="font-medium text-foreground">OK</span>
 955                </li>
 956              </ul>
 957            </div>
 958          </>
 959        ),
 960        categories: ["merchant-tools"],
 961      },
 962      {
 963        id: "btcpay",
 964        readonly: true,
 965        title: "BTCPay Server",
 966        description: "Bitcoin payment processor",
 967        webLink: "https://btcpayserver.org/",
 968        logo: btcpay,
 969        extendedDescription:
 970          "Receive payments directly to your Hub for products you sell online",
 971        installGuide: (
 972          <>
 973            <p>
 974              You can use your Alby Hub as a lightning wallet funding source for
 975              your{" "}
 976              <ExternalLink
 977                to="https://btcpayserver.org/"
 978                className="font-medium text-foreground underline"
 979              >
 980                BTCPay Server
 981              </ExternalLink>{" "}
 982              store, to accept and create payments. In order for this feature to
 983              work, your BTCPay Server instance needs to have the{" "}
 984              <span className="font-medium text-foreground">Nostr</span> plugin
 985              installed.
 986            </p>
 987          </>
 988        ),
 989        finalizeGuide: (
 990          <>
 991            <div>
 992              <h3 className="font-medium">In BTCPay Server</h3>
 993              <ul className="list-inside list-decimal text-muted-foreground">
 994                <li>Log in to your BTCPay Server dashboard</li>
 995                <li>
 996                  Find connection configuration for your Lightning node (
 997                  <span className="font-medium text-foreground">Lightning</span> →
 998                  <span className="font-medium text-foreground">Settings</span> →
 999                  <span className="font-medium text-foreground">
1000                    Change connection
1001                  </span>
1002                  )
1003                </li>
1004                <li>
1005                  Choose{" "}
1006                  <span className="font-medium text-foreground">
1007                    Use custom node
1008                  </span>
1009                </li>
1010                <li>
1011                  Paste the connection secret (nostr+walletconnect://....) in the
1012                  configuration field
1013                </li>
1014                <li>
1015                  Click <span className="font-medium text-foreground">Save</span>
1016                </li>
1017              </ul>
1018            </div>
1019          </>
1020        ),
1021        categories: ["merchant-tools"],
1022      },
1023      {
1024        id: "lnbits",
1025        title: "LNbits",
1026        description: "Wallet accounts system with extensions",
1027        webLink: "https://lnbits.com/",
1028        logo: lnbits,
1029        extendedDescription:
1030          "Connect your Alby Hub to LNbits to give extra functionality through plugins such as BOLT cards and lightning vouchers",
1031        installGuide: (
1032          <>
1033            <p>
1034              You can use your Alby Hub as a lightning wallet funding source for
1035              your{" "}
1036              <ExternalLink
1037                to="https://lnbits.com/"
1038                className="font-medium text-foreground underline"
1039              >
1040                LNbits
1041              </ExternalLink>{" "}
1042              instance, to accept and create payments.
1043            </p>
1044          </>
1045        ),
1046        finalizeGuide: (
1047          <>
1048            <div>
1049              <h3 className="font-medium">In LNbits</h3>
1050              <ul className="list-inside list-decimal text-muted-foreground">
1051                <li>Log in to your LNbits admin dashboard</li>
1052                <li>
1053                  Go to{" "}
1054                  <span className="font-medium text-foreground">Manage</span> →{" "}
1055                  <span className="font-medium text-foreground">Server</span> →{" "}
1056                  <span className="font-medium text-foreground">Funding</span>, to
1057                  configure funding wallet
1058                </li>
1059                <li>
1060                  Under{" "}
1061                  <span className="font-medium text-foreground">
1062                    Active Funding
1063                  </span>{" "}
1064                  choose{" "}
1065                  <span className="font-medium text-foreground">
1066                    Nostr Wallet Connect
1067                  </span>
1068                </li>
1069                <li>
1070                  Paste the connection secret (nostr+walletconnect://....) under{" "}
1071                  <span className="font-medium text-foreground">Pairing URL</span>
1072                </li>
1073                <li>
1074                  Click <span className="font-medium text-foreground">Save</span>{" "}
1075                  and{" "}
1076                  <span className="font-medium text-foreground">
1077                    Restart Server
1078                  </span>
1079                </li>
1080              </ul>
1081            </div>
1082          </>
1083        ),
1084        categories: ["misc", "payment-tools"],
1085      },
1086      {
1087        id: "coracle",
1088        title: "Coracle.social",
1089        description: "Desktop Nostr client",
1090        webLink: "https://coracle.social/",
1091        logo: coracle,
1092        extendedDescription:
1093          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1094        installGuide: (
1095          <>
1096            <p className="text-muted-foreground">
1097              You can connect your Alby Hub to Coracle to zap Nostr notes directly
1098              from your node.
1099            </p>
1100          </>
1101        ),
1102        finalizeGuide: (
1103          <>
1104            <div>
1105              <h3 className="font-medium">In Coracle</h3>
1106              <ul className="list-inside list-decimal text-muted-foreground">
1107                <li>
1108                  Log in with your Nostr keys to{" "}
1109                  <ExternalLink
1110                    to="https://coracle.social/login"
1111                    className="font-medium text-foreground underline"
1112                  >
1113                    Coracle
1114                  </ExternalLink>{" "}
1115                  (it is recommended to use the Alby Extension)
1116                </li>
1117                <li>
1118                  Click on a zap icon ⚡ and{" "}
1119                  <span className="font-medium text-foreground">Zap!</span> under
1120                  any post, to configure wallet connection and make your first zap
1121                </li>
1122                <li>
1123                  Click{" "}
1124                  <span className="font-medium text-foreground">
1125                    Connect Wallet to Pay
1126                  </span>{" "}
1127                  and choose{" "}
1128                  <span className="font-medium text-foreground">
1129                    Nostr Wallet Connect
1130                  </span>
1131                </li>
1132                <li>
1133                  Paste the connection secret (nostr+walletconnect://....) and
1134                  click{" "}
1135                  <span className="font-medium text-foreground">Connect</span>
1136                </li>
1137              </ul>
1138            </div>
1139          </>
1140        ),
1141        categories: ["social-media"],
1142      },
1143      {
1144        id: "nostter",
1145        title: "Nostter",
1146        description: "Minimalistic, desktop Nostr client",
1147        webLink: "https://nostter.app/",
1148        logo: nostter,
1149        extendedDescription:
1150          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1151        installGuide: (
1152          <>
1153            <p className="text-muted-foreground">
1154              You can connect your Alby Hub to Nostter to zap Nostr notes directly
1155              from your node.
1156            </p>
1157          </>
1158        ),
1159        finalizeGuide: (
1160          <>
1161            <div>
1162              <h3 className="font-medium">In Nostter</h3>
1163              <ul className="list-inside list-decimal text-muted-foreground">
1164                <li>
1165                  Log in with your Nostr keys to{" "}
1166                  <ExternalLink
1167                    to="https://nostter.app/"
1168                    className="font-medium text-foreground underline"
1169                  >
1170                    Nostter
1171                  </ExternalLink>{" "}
1172                  (it is recommended to use the Alby Extension)
1173                </li>
1174                <li>
1175                  Go to{" "}
1176                  <span className="font-medium text-foreground">Preferences</span>
1177                </li>
1178                <li>
1179                  Paste the connection secret (nostr+walletconnect://....) under{" "}
1180                  <span className="font-medium text-foreground">
1181                    Nostr Wallet Connect
1182                  </span>
1183                </li>
1184                <li>Click elsewhere for the connection to be tested and saved</li>
1185                <li>
1186                  Go to <span className="font-medium text-foreground">Home</span>{" "}
1187                  and click the zap icon (⚡) under any post to add a comment and
1188                  send zap directly from your node
1189                </li>
1190              </ul>
1191            </div>
1192          </>
1193        ),
1194        categories: ["social-media"],
1195      },
1196      {
1197        id: "wavlake",
1198        title: "Wavlake",
1199        description: "Turn up the value for your biggest fans",
1200        webLink: "https://www.wavlake.com/",
1201        playLink:
1202          "https://play.google.com/store/apps/details?id=com.wavlake.mobile",
1203        appleLink:
1204          "https://apps.apple.com/us/app/wavlake-social-music-player/id6463653431",
1205        logo: wavlake,
1206        extendedDescription:
1207          "Support artists by paying to upvote music you enjoy with your Hub",
1208        installGuide: (
1209          <>
1210            <p className="text-muted-foreground">
1211              Download and open{" "}
1212              <span className="font-medium text-foreground">Wavlake</span> on your
1213              iOS or Android device
1214            </p>
1215          </>
1216        ),
1217        finalizeGuide: (
1218          <>
1219            <div>
1220              <h3 className="font-medium">In Wavlake</h3>
1221              <ul className="list-inside list-decimal text-muted-foreground">
1222                <li>Scan or paste the connection secret from Alby Hub</li>
1223              </ul>
1224            </div>
1225          </>
1226        ),
1227        categories: ["audio"],
1228      },
1229      {
1230        id: "fountain",
1231        title: "Fountain",
1232        description:
1233          "Discover millions of podcasts and emerging artists worth supporting",
1234        webLink: "https://www.fountain.fm",
1235        playLink:
1236          "https://play.google.com/store/apps/details?id=fm.fountain.apps",
1237        appleLink:
1238          "https://apps.apple.com/us/app/fountain-podcast-player/id1576394424",
1239        logo: fountain,
1240        extendedDescription:
1241          "Discover millions of podcasts and emerging artists worth supporting. Powered by RSS, Lightning and Nostr",
1242        installGuide: (
1243          <>
1244            <p className="text-muted-foreground">
1245              Download and open{" "}
1246              <span className="font-medium text-foreground">Fountain</span> on
1247              your iOS or Android device
1248            </p>
1249          </>
1250        ),
1251        finalizeGuide: (
1252          <>
1253            <div>
1254              <h3 className="font-medium">In Fountain</h3>
1255              <ul className="list-inside list-decimal text-muted-foreground">
1256                <li>Go to Wallet tab</li>
1257                <li>Click the settings cog</li>
1258                <li>Go to connected accounts {"->"} Nostr Wallet Connect</li>
1259                <li>Scan or paste the connection secret from Alby Hub</li>
1260              </ul>
1261            </div>
1262          </>
1263        ),
1264        categories: ["audio"],
1265      },
1266      {
1267        id: "wavespace",
1268        title: "wavecard® by wave.space",
1269        description:
1270          "Spend Bitcoin from your AlbyHub at 150M+ merchants worldwide",
1271        webLink: "https://app.wave.space/?utm_source=albyhub&affiliate=AlbyHub",
1272        logo: wavespace,
1273        extendedDescription:
1274          "The world's first Bitcoin VISA Debit Card that allows you to spend BTC globally, anywhere VISA is accepted – straight from the safety of your own NWC-enabled wallet. ✨ EXCLUSIVE ALBYHUB SPECIAL🐝 → Get 21% cashback on your wavecard transactions (up to 10,000 sats) using code »AlbyHub«",
1275        finalizeGuide: (
1276          <>
1277            <div>
1278              <h3 className="font-medium">In wave.space</h3>
1279              <ul className="list-inside list-decimal text-muted-foreground">
1280                <li>
1281                  Open{" "}
1282                  <ExternalLink
1283                    to="https://app.wave.space/?utm_source=albyhub&affiliate=AlbyHub"
1284                    className="font-medium text-foreground underline"
1285                  >
1286                    wave.space
1287                  </ExternalLink>{" "}
1288                  in your browser and{" "}
1289                  <span className="font-medium text-foreground">
1290                    Sign up or log in
1291                  </span>{" "}
1292                  to your account
1293                </li>
1294                <li>
1295                  Click on{" "}
1296                  <span className="font-medium text-foreground">
1297                    Connect Wallet
1298                  </span>
1299                </li>
1300                <li>
1301                  Choose{" "}
1302                  <span className="font-medium text-foreground">
1303                    Nostr Wallet Connect
1304                  </span>
1305                </li>
1306                <li>Paste the connection secret from Alby Hub</li>
1307              </ul>
1308            </div>
1309          </>
1310        ),
1311        categories: ["payment-tools"],
1312      },
1313      {
1314        id: "snort",
1315        title: "Snort",
1316        description: "Web Nostr client",
1317        webLink: "https://snort.social/",
1318        logo: snort,
1319        extendedDescription:
1320          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1321        installGuide: (
1322          <>
1323            <p className="text-muted-foreground">
1324              Open{" "}
1325              <ExternalLink
1326                to="https://snort.social"
1327                className="font-medium text-foreground underline"
1328              >
1329                Snort
1330              </ExternalLink>{" "}
1331              in your browser
1332            </p>
1333          </>
1334        ),
1335        finalizeGuide: (
1336          <>
1337            <div>
1338              <h3 className="font-medium">In Snort</h3>
1339              <ul className="list-inside list-decimal text-muted-foreground">
1340                <li>
1341                  Click on{" "}
1342                  <span className="font-medium text-foreground">Settings</span> →{" "}
1343                  <span className="font-medium text-foreground">Wallet</span>
1344                </li>
1345                <li>
1346                  Choose{" "}
1347                  <span className="font-medium text-foreground">
1348                    Nostr Wallet Connect
1349                  </span>
1350                </li>
1351                <li>Paste the connection secret from Alby Hub</li>
1352              </ul>
1353            </div>
1354          </>
1355        ),
1356        categories: ["social-media"],
1357      },
1358      {
1359        id: "habla-news",
1360        title: "Habla News",
1361        description: "Blogging platform",
1362        webLink: "https://habla.news/",
1363        logo: hablanews,
1364        extendedDescription:
1365          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1366        installGuide: (
1367          <>
1368            <p className="text-muted-foreground">
1369              Open{" "}
1370              <ExternalLink
1371                to="https://habla.news"
1372                className="font-medium text-foreground underline"
1373              >
1374                habla.news
1375              </ExternalLink>{" "}
1376              in your browser
1377            </p>
1378          </>
1379        ),
1380        finalizeGuide: (
1381          <>
1382            <div>
1383              <h3 className="font-medium">In Habla News</h3>
1384              <ul className="list-inside list-decimal text-muted-foreground">
1385                <li>
1386                  Go to{" "}
1387                  <span className="font-medium text-foreground">Settings</span> →{" "}
1388                  <span className="font-medium text-foreground">Wallet</span> →{" "}
1389                  Click{" "}
1390                  <span className="font-medium text-foreground">
1391                    Connect Wallet
1392                  </span>
1393                </li>
1394                <li>
1395                  Choose{" "}
1396                  <span className="font-medium text-foreground">
1397                    NWC Generic
1398                  </span>{" "}
1399                </li>
1400                <li>Paste the connection secret from Alby Hub</li>
1401              </ul>
1402            </div>
1403          </>
1404        ),
1405        categories: ["blogging"],
1406      },
1407      {
1408        id: "iris",
1409        title: "Iris",
1410        description: "The nostr client for better social networks",
1411        webLink: "https://iris.to/",
1412        logo: iris,
1413        extendedDescription:
1414          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1415        installGuide: (
1416          <>
1417            <p className="text-muted-foreground">
1418              Open{" "}
1419              <ExternalLink
1420                to="https://iris.to"
1421                className="font-medium text-foreground underline"
1422              >
1423                iris.to
1424              </ExternalLink>{" "}
1425              in your browser
1426            </p>
1427          </>
1428        ),
1429        finalizeGuide: (
1430          <>
1431            <div>
1432              <h3 className="font-medium">In Iris</h3>
1433              <ul className="list-inside list-decimal text-muted-foreground">
1434                <li>
1435                  Go to{" "}
1436                  <span className="font-medium text-foreground">Settings</span> →{" "}
1437                  <span className="font-medium text-foreground">Wallet</span> →{" "}
1438                  Click{" "}
1439                  <span className="font-medium text-foreground">
1440                    + Add NWC Wallet
1441                  </span>
1442                </li>
1443                <li>Paste the connection secret from Alby Hub</li>
1444              </ul>
1445            </div>
1446          </>
1447        ),
1448        categories: ["social-media"],
1449      },
1450      {
1451        id: "clams",
1452        readonly: true,
1453        title: "Clams",
1454        description: "Multi wallet accounting tool",
1455        webLink: "https://clams.tech/",
1456        logo: clams,
1457        extendedDescription:
1458          "Get insights into your transaction history and accounting tools by connecting your Hub",
1459        installGuide: (
1460          <>
1461            <p className="text-muted-foreground">
1462              Download and open{" "}
1463              <ExternalLink
1464                to="https://clams.tech/"
1465                className="font-medium text-foreground underline"
1466              >
1467                Clams
1468              </ExternalLink>{" "}
1469              on your device
1470            </p>
1471          </>
1472        ),
1473        finalizeGuide: (
1474          <>
1475            <div>
1476              <h3 className="font-medium">In Clams</h3>
1477              <ul className="list-inside list-decimal text-muted-foreground">
1478                <li>Add a connection: "+ Add Connection" → NWC</li>
1479                <li>Add label & paste connection secret</li>
1480                <li>Click Connect and Save</li>
1481              </ul>
1482            </div>
1483          </>
1484        ),
1485        categories: ["payment-tools"],
1486      },
1487      {
1488        id: "nostrcheck-server",
1489        readonly: true,
1490        title: "Nostrcheck Server",
1491        description: "Sovereign Nostr services",
1492        webLink: "https://github.com/quentintaranpino/nostrcheck-server",
1493        logo: nostrcheckserver,
1494        extendedDescription:
1495          "Enable payments to your Hub from users who register or upload and download files",
1496        installGuide: (
1497          <>
1498            <p className="text-muted-foreground">
1499              Click{" "}
1500              <Link
1501                to="/apps/new?app=nostrcheck-server"
1502                className="font-medium text-foreground underline"
1503              >
1504                Connect to Nostrcheck Server
1505              </Link>
1506            </p>
1507          </>
1508        ),
1509        finalizeGuide: (
1510          <>
1511            <div>
1512              <h3 className="font-medium">In Nostrcheck server</h3>
1513              <ul className="list-inside list-decimal text-muted-foreground">
1514                <li>
1515                  Go to{" "}
1516                  <span className="font-medium text-foreground">Settings</span>{" "}
1517                  and choose{" "}
1518                  <span className="font-medium text-foreground">Payments</span>{" "}
1519                  tab
1520                </li>
1521                <li>
1522                  Scroll to Nostr wallet connect settings and paste the{" "}
1523                  <span className="font-medium text-foreground">
1524                    connection secret
1525                  </span>{" "}
1526                  from Alby Hub
1527                </li>
1528                <li>
1529                  Press the{" "}
1530                  <span className="font-medium text-foreground">Save</span> button
1531                </li>
1532              </ul>
1533            </div>
1534          </>
1535        ),
1536        categories: ["nostr-tools"],
1537      },
1538      {
1539        id: "nostrudel",
1540        title: "noStrudel",
1541        description: "Web Nostr client",
1542        webLink: "https://nostrudel.ninja/",
1543        logo: nostrudel,
1544        extendedDescription:
1545          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1546        installGuide: (
1547          <>
1548            <p className="text-muted-foreground">
1549              Open{" "}
1550              <ExternalLink
1551                to="https://nostrudel.ninja"
1552                className="font-medium text-foreground underline"
1553              >
1554                noStrudel
1555              </ExternalLink>{" "}
1556              in your browser
1557            </p>
1558          </>
1559        ),
1560        finalizeGuide: (
1561          <>
1562            <div>
1563              <h3 className="font-medium">In Nostrudel</h3>
1564              <ul className="list-inside list-decimal text-muted-foreground">
1565                <li>
1566                  Click on{" "}
1567                  <span className="font-medium text-foreground">Settings</span> →{" "}
1568                  <span className="font-medium text-foreground">Lightning</span> →{" "}
1569                  <span className="font-medium text-foreground">
1570                    Connect Wallet
1571                  </span>
1572                </li>
1573                <li>
1574                  Choose{" "}
1575                  <span className="font-medium text-foreground">
1576                    Custom Nostr Wallet Connect
1577                  </span>
1578                </li>
1579                <li>Paste the connection secret from Alby Hub</li>
1580              </ul>
1581            </div>
1582          </>
1583        ),
1584        categories: ["social-media"],
1585      },
1586      {
1587        id: "yakihonne",
1588        title: "YakiHonne",
1589        description: "Your all in one nostr client",
1590        webLink: "https://yakihonne.com/",
1591        playLink:
1592          "https://play.google.com/store/apps/details?id=com.yakihonne.yakihonne",
1593        appleLink: "https://apps.apple.com/us/app/yakihonne/id6472556189",
1594        logo: yakihonne,
1595        extendedDescription:
1596          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1597        installGuide: (
1598          <>
1599            <p className="text-muted-foreground">
1600              Open{" "}
1601              <ExternalLink
1602                to="https://yakihonne.com/wallet"
1603                className="font-medium text-foreground underline"
1604              >
1605                YakiHonne
1606              </ExternalLink>{" "}
1607              in your browser
1608            </p>
1609          </>
1610        ),
1611        finalizeGuide: (
1612          <>
1613            <div>
1614              <h3 className="font-medium">In YakiHonne</h3>
1615              <ul className="list-inside list-decimal text-muted-foreground">
1616                <li>
1617                  Click on{" "}
1618                  <span className="font-medium text-foreground">Add wallet</span>
1619                </li>
1620                <li>
1621                  Choose{" "}
1622                  <span className="font-medium text-foreground">
1623                    Nostr Wallet Connect
1624                  </span>
1625                </li>
1626                <li>Paste the connection secret from Alby Hub</li>
1627              </ul>
1628            </div>
1629          </>
1630        ),
1631        categories: ["social-media", "blogging"],
1632      },
1633      {
1634        id: "zapplanner",
1635        title: "ZapPlanner",
1636        description: "Schedule payments",
1637        extendedDescription: "Schedule payments to a lightning address",
1638        webLink: "https://zapplanner.albylabs.com/",
1639        logo: zapplanner,
1640        internal: true,
1641        categories: ["payment-tools"],
1642      },
1643      {
1644        id: "zapplepay",
1645        title: "Zapple Pay",
1646        description: "Zap from any client",
1647        webLink: "https://www.zapplepay.com/",
1648        logo: zapplepay,
1649        extendedDescription:
1650          "ZapplePay will make payments from your Hub to zap posts when you react to them",
1651        installGuide: (
1652          <>
1653            <p className="text-muted-foreground">
1654              Open{" "}
1655              <ExternalLink
1656                to="https://www.zapplepay.com"
1657                className="font-medium text-foreground"
1658              >
1659                Zapple Pay
1660              </ExternalLink>{" "}
1661              in your browser
1662            </p>
1663          </>
1664        ),
1665        finalizeGuide: (
1666          <>
1667            <div>
1668              <h3 className="font-medium">In Zapple Pay</h3>
1669              <ul className="list-inside list-decimal text-muted-foreground">
1670                <li>
1671                  Add your details (e.g. you npub, etc.), then choose{" "}
1672                  <span className="font-medium text-foreground">Wallet</span> →{" "}
1673                  <span className="font-medium text-foreground">
1674                    Manual Connect
1675                  </span>
1676                </li>
1677                <li>Paste the connection secret from Alby Hub</li>
1678              </ul>
1679            </div>
1680          </>
1681        ),
1682        categories: ["nostr-tools"],
1683      },
1684      {
1685        id: "lume",
1686        title: "Lume",
1687        description: "macOS Nostr client",
1688        webLink: "https://lume.nu/",
1689        logo: lume,
1690        extendedDescription:
1691          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1692        installGuide: (
1693          <>
1694            <p className="text-muted-foreground">
1695              Download Lume from{" "}
1696              <ExternalLink
1697                to="https://github.com/lumehq/lume/releases"
1698                className="font-medium text-foreground underline"
1699              >
1700                GitHub
1701              </ExternalLink>{" "}
1702              and install it on your computer
1703            </p>
1704          </>
1705        ),
1706        finalizeGuide: (
1707          <>
1708            <div>
1709              <h3 className="font-medium">In Lume</h3>
1710              <ul className="list-inside list-decimal text-muted-foreground">
1711                <li>
1712                  Click on your profile image →{" "}
1713                  <span className="font-medium text-foreground">Settings</span> →{" "}
1714                  <span className="font-medium text-foreground">Wallet</span> →{" "}
1715                  <span className="font-medium text-foreground">
1716                    Connect Wallet
1717                  </span>
1718                </li>
1719                <li>
1720                  Choose{" "}
1721                  <span className="font-medium text-foreground">
1722                    Nostr Wallet Connect
1723                  </span>
1724                </li>
1725                <li>Paste the connection secret from Alby Hub</li>
1726              </ul>
1727            </div>
1728          </>
1729        ),
1730        categories: ["social-media"],
1731      },
1732      {
1733        id: "nadanada",
1734        title: "nadanada",
1735        description: "No-KYC eSIM, VPN and phone numbers",
1736        webLink: "https://nadanada.me?ref=getalby",
1737        logo: nadanada,
1738        extendedDescription:
1739          "Privacy-first eSIM, VPN, and phone numbers with no account required.",
1740        installGuide: (
1741          <>
1742            <p className="text-muted-foreground">
1743              Open{" "}
1744              <ExternalLink
1745                to="https://nadanada.me?ref=getalby"
1746                className="font-medium text-foreground underline"
1747              >
1748                nadanada
1749              </ExternalLink>{" "}
1750              in your browser
1751            </p>
1752          </>
1753        ),
1754        finalizeGuide: (
1755          <>
1756            <div>
1757              <h3 className="font-medium">In nadanada</h3>
1758              <ul className="list-inside list-decimal text-muted-foreground">
1759                <li>Choose a service of your choice</li>
1760                <li>
1761                  At checkout, choose{" "}
1762                  <span className="font-medium text-foreground">
1763                    Lightning
1764                  </span>{" "}
1765                </li>
1766                <li>
1767                  Click{" "}
1768                  <span className="font-medium text-foreground">
1769                    Pay with Wallet
1770                  </span>
1771                </li>
1772                <li>
1773                  In the modal, click{" "}
1774                  <span className="font-medium text-foreground">
1775                    Connect Wallet to Pay
1776                  </span>
1777                </li>
1778                <li>
1779                  Choose{" "}
1780                  <span className="font-medium text-foreground">
1781                    Nostr Wallet Connect
1782                  </span>{" "}
1783                </li>
1784                <li>
1785                  Paste the connection secret from Alby Hub and continue to
1786                  confirm payment
1787                </li>
1788              </ul>
1789            </div>
1790          </>
1791        ),
1792        categories: ["misc"],
1793        addedDate: "2026-04-10",
1794      },
1795      {
1796        id: "nakapay",
1797        readonly: true,
1798        title: "NakaPay",
1799        description: "Non-custodial Lightning payments for businesses via NWC",
1800        webLink: "https://www.nakapay.app",
1801        logo: nakapay,
1802        extendedDescription:
1803          "Accept Bitcoin Lightning payments directly to your Hub wallet. NakaPay generates invoices that customers pay directly to you - your funds never go through NakaPay (fully non-custodial)",
1804        installGuide: (
1805          <>
1806            <div>
1807              <p className="text-sm text-muted-foreground mb-4">
1808                NakaPay is a{" "}
1809                <span className="font-medium text-foreground">
1810                  fully non-custodial
1811                </span>{" "}
1812                payment service. Customer payments go directly to your Alby Hub
1813                wallet - NakaPay never holds your funds.
1814              </p>
1815              <ul className="list-inside list-decimal text-muted-foreground">
1816                <li>
1817                  Visit{" "}
1818                  <ExternalLink
1819                    to="https://www.nakapay.app"
1820                    className="font-medium text-foreground underline"
1821                  >
1822                    NakaPay
1823                  </ExternalLink>{" "}
1824                  and log in with any Lightning wallet (LNURL-auth)
1825                </li>
1826                <li>
1827                  Your business account will be automatically created on first
1828                  login
1829                </li>
1830              </ul>
1831            </div>
1832          </>
1833        ),
1834        finalizeGuide: (
1835          <>
1836            <div>
1837              <h3 className="font-medium">In NakaPay</h3>
1838              <ul className="list-inside list-decimal text-muted-foreground">
1839                <li>
1840                  Go to{" "}
1841                  <span className="font-medium text-foreground">Dashboard</span> →{" "}
1842                  <span className="font-medium text-foreground">Settings</span> →{" "}
1843                  <span className="font-medium text-foreground">Wallet</span>
1844                </li>
1845                <li>
1846                  Paste your Alby Hub NWC connection string in the wallet
1847                  connection field
1848                </li>
1849                <li>Test the connection to verify everything works</li>
1850                <li>
1851                  Create API keys in{" "}
1852                  <span className="font-medium text-foreground">Dashboard</span> →{" "}
1853                  <span className="font-medium text-foreground">
1854                    API Management
1855                  </span>{" "}
1856                  for your applications
1857                </li>
1858                <li>
1859                  10. Start accepting payments directly to your Alby Hub wallet!
1860                </li>
1861              </ul>
1862            </div>
1863          </>
1864        ),
1865        categories: ["merchant-tools"],
1866      },
1867      {
1868        id: "zappy-bird",
1869        title: "Zappy Bird",
1870        description: "Lose sats quickly",
1871        webLink: "https://rolznz.github.io/zappy-bird/",
1872        logo: zappybird,
1873        extendedDescription:
1874          "Makes a payment from your Hub each time your bird flaps its wings",
1875        installGuide: (
1876          <>
1877            <p className="text-muted-foreground">
1878              Open{" "}
1879              <ExternalLink
1880                to="https://rolznz.github.io/zappy-bird"
1881                className="font-medium text-foreground underline"
1882              >
1883                Zappy Bird
1884              </ExternalLink>{" "}
1885              in your browser
1886            </p>
1887          </>
1888        ),
1889        finalizeGuide: (
1890          <>
1891            <div>
1892              <h3 className="font-medium">In Zappy Bird</h3>
1893              <ul className="list-inside list-decimal text-muted-foreground">
1894                <li>
1895                  Click on{" "}
1896                  <span className="font-medium text-foreground">
1897                    Connect Wallet
1898                  </span>{" "}
1899                  in the top right corner
1900                </li>
1901                <li>
1902                  Choose{" "}
1903                  <span className="font-medium text-foreground">
1904                    Nostr Wallet Connect
1905                  </span>{" "}
1906                </li>
1907                <li>Paste the connection secret from Alby Hub</li>
1908              </ul>
1909            </div>
1910          </>
1911        ),
1912        categories: ["games"],
1913      },
1914      {
1915        id: "tictactoe",
1916        title: "Tic Tac Toe",
1917        description:
1918          "Earn satoshis while playing multiplayer tic-tac-toe. Lightning network fast.",
1919        extendedDescription:
1920          "Earn satoshis while playing multiplayer tic-tac-toe. Lightning network fast.",
1921        webLink: "https://lntictactoe.com/",
1922        internal: true,
1923        logo: tictactoe,
1924        categories: ["games"],
1925      },
1926      {
1927        id: "nostur",
1928        title: "Nostur",
1929        description: "Social media",
1930        webLink: "https://nostur.com/",
1931        appleLink:
1932          "https://apps.apple.com/us/app/nostur-nostr-client/id1672780508",
1933        logo: nostur,
1934        extendedDescription:
1935          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1936  
1937        installGuide: (
1938          <>
1939            <p className="text-muted-foreground">
1940              Download and open{" "}
1941              <span className="font-medium text-foreground">Nostur</span> on your
1942              iOS device
1943            </p>
1944          </>
1945        ),
1946        finalizeGuide: (
1947          <>
1948            <div>
1949              <h3 className="font-medium">In Nostur</h3>
1950              <ul className="list-inside list-decimal text-muted-foreground">
1951                <li>
1952                  Click on your profile image →{" "}
1953                  <span className="font-medium text-foreground">Settings</span> →
1954                  scroll to{" "}
1955                  <span className="font-medium text-foreground">Zapping</span>
1956                </li>
1957                <li>
1958                  Choose{" "}
1959                  <span className="font-medium text-foreground">
1960                    Custom Nostr Wallet Connect
1961                  </span>
1962                </li>
1963                <li>Paste the connection secret from Alby Hub</li>
1964              </ul>
1965            </div>
1966          </>
1967        ),
1968        categories: ["social-media"],
1969      },
1970      {
1971        id: "wherostr",
1972        title: "Wherostr",
1973        description: "Map of notes",
1974        webLink: "https://wherostr.social/",
1975        playLink:
1976          "https://play.google.com/store/apps/details?id=th.co.mapboss.wherostr.social.wherostr_social&hl=en&pli=1",
1977        appleLink: "https://apps.apple.com/us/app/wherostr/id6503808206",
1978        logo: wherostr,
1979        extendedDescription:
1980          "Tip nostr posts and profiles and receive zaps seamlessly with your Hub",
1981        installGuide: (
1982          <>
1983            <p className="text-muted-foreground">
1984              Open{" "}
1985              <ExternalLink
1986                to="https://wherostr.social"
1987                className="font-medium text-foreground underline"
1988              >
1989                Wherostr
1990              </ExternalLink>{" "}
1991              in your browser and log in
1992            </p>
1993          </>
1994        ),
1995        finalizeGuide: (
1996          <>
1997            <div>
1998              <h3 className="font-medium">In Wherostr</h3>
1999              <ul className="list-inside list-decimal text-muted-foreground">
2000                <li>
2001                  Click on <span className="font-medium text-foreground">≡</span>{" "}
2002                  → <span className="font-medium text-foreground">Settings</span>{" "}
2003                  → <span className="font-medium text-foreground">Wallet</span>
2004                </li>
2005                <li>
2006                  Choose{" "}
2007                  <span className="font-medium text-foreground">
2008                    Nostr Wallet Connect
2009                  </span>
2010                </li>
2011                <li>Scan or paste the connection secret from Alby Hub</li>
2012              </ul>
2013            </div>
2014          </>
2015        ),
2016        categories: ["social-media"],
2017      },
2018      {
2019        id: "stackernews",
2020        title: "stacker news",
2021        description: "Like Hacker News but with Bitcoin",
2022        webLink: "https://stacker.news/",
2023        logo: stackernews,
2024        extendedDescription:
2025          "Upvote posts with sats and receive sats for your own posts directly in your Hub",
2026        installGuide: (
2027          <>
2028            <p className="text-muted-foreground">
2029              Open{" "}
2030              <ExternalLink
2031                to="https://stacker.news"
2032                className="font-medium text-foreground underline"
2033              >
2034                stacker news
2035              </ExternalLink>{" "}
2036              in your browser
2037            </p>
2038          </>
2039        ),
2040        finalizeGuide: (
2041          <>
2042            <div>
2043              <h3 className="font-medium">In stacker news</h3>
2044              <ul className="list-inside list-decimal text-muted-foreground">
2045                <li>
2046                  Click on your username →{" "}
2047                  <span className="font-medium text-foreground">Wallet</span> →{" "}
2048                  <span className="font-medium text-foreground">
2049                    Attach wallets
2050                  </span>{" "}
2051                  →{" "}
2052                  <span className="font-medium text-foreground">Attach NWC</span>
2053                </li>
2054                <li>
2055                  Paste the connection secret from Alby Hub into{" "}
2056                  <span className="font-medium text-foreground">
2057                    connection for sending
2058                  </span>
2059                </li>
2060                <li className="text-muted-foreground">
2061                  You can make another stacker news connection with receive-only
2062                  permissions, for receiving zaps.
2063                </li>
2064              </ul>
2065            </div>
2066          </>
2067        ),
2068        categories: ["social-media"],
2069      },
2070      {
2071        id: "pullthatupjamie-ai",
2072        title: "Pull That Up Jamie!",
2073        description: "Instantly pull up anything with private web search + AI",
2074        webLink: "https://www.pullthatupjamie.ai/",
2075        logo: pullthatupjamie,
2076        extendedDescription:
2077          "Pay from your Hub to do private AI-powered searches",
2078        installGuide: (
2079          <>
2080            <p className="text-muted-foreground">
2081              Open{" "}
2082              <ExternalLink
2083                to="https://www.pullthatupjamie.ai/"
2084                className="font-medium text-foreground underline"
2085              >
2086                pullthatupjamie.ai
2087              </ExternalLink>{" "}
2088              in your browser
2089            </p>
2090          </>
2091        ),
2092        finalizeGuide: (
2093          <>
2094            <div>
2095              <h3 className="font-medium">In Pull That Up Jamie!</h3>
2096              <ul className="list-inside list-decimal text-muted-foreground">
2097                <li>Click on the account dropdown and select "Connect Wallet"</li>
2098                <li>
2099                  Choose{" "}
2100                  <span className="font-medium text-foreground">
2101                    Nostr Wallet Connect
2102                  </span>
2103                </li>
2104                <li>Paste the connection secret from Alby Hub</li>
2105              </ul>
2106            </div>
2107          </>
2108        ),
2109        categories: ["misc"],
2110      },
2111      {
2112        id: "zapstore",
2113        title: "Zapstore",
2114        description: "Discover great apps through your social connections",
2115        webLink: "https://zapstore.dev/",
2116        logo: zapstore,
2117        extendedDescription:
2118          "Pay to zap apps and support their creators seamlessly with your Hub",
2119        installGuide: (
2120          <>
2121            <p className="text-muted-foreground">
2122              Install{" "}
2123              <ExternalLink
2124                to="https://www.zapstore.dev/"
2125                className="font-medium text-foreground underline"
2126              >
2127                Zapstore
2128              </ExternalLink>{" "}
2129              on your Android smartphone
2130            </p>
2131          </>
2132        ),
2133        finalizeGuide: (
2134          <>
2135            <div>
2136              <h3 className="font-medium">In Zapstore</h3>
2137              <ul className="list-inside list-decimal text-muted-foreground">
2138                <li>Open the settings</li>
2139                <li>Paste the connection secret from Alby Hub</li>
2140              </ul>
2141            </div>
2142          </>
2143        ),
2144        categories: ["misc"],
2145      },
2146      {
2147        id: "zeus",
2148        title: "ZEUS",
2149        description: "A self-custodial Bitcoin wallet that puts you in control.",
2150        webLink: "https://zeusln.com/",
2151        playLink: "https://play.google.com/store/apps/details?id=app.zeusln.zeus",
2152        appleLink: "https://apps.apple.com/us/app/zeus-wallet/id1456038895",
2153        zapStoreLink: "https://zapstore.dev/download/",
2154        logo: zeus,
2155        extendedDescription:
2156          "Send and receive payments, to and from your Hub, on the go",
2157        installGuide: (
2158          <>
2159            <p className="text-muted-foreground">
2160              Install{" "}
2161              <ExternalLink
2162                to="https://zeusln.com/download/"
2163                className="font-medium text-foreground underline"
2164              >
2165                ZEUS
2166              </ExternalLink>{" "}
2167              on your Android or iOS smartphone
2168            </p>
2169          </>
2170        ),
2171        finalizeGuide: (
2172          <>
2173            <div>
2174              <h3 className="font-medium">In ZEUS</h3>
2175              <ul className="list-inside list-decimal text-muted-foreground">
2176                <li>Open the settings</li>
2177                <li>
2178                  Scan the connection QR using the QR scanner in the bottom right
2179                  corner of the bottom of the app, OR manually paste in the
2180                  connection string under{" "}
2181                  <span className="font-medium text-foreground">Menu</span> {">"}{" "}
2182                  <span className="font-medium text-foreground">
2183                    Connect a Wallet
2184                  </span>{" "}
2185                  {">"} <span className="font-medium text-foreground">+</span>{" "}
2186                  after selecting{" "}
2187                  <span className="font-medium text-foreground">
2188                    Nostr Wallet Connect
2189                  </span>{" "}
2190                  as the{" "}
2191                  <span className="font-medium text-foreground">
2192                    Wallet interface
2193                  </span>
2194                  .
2195                </li>
2196              </ul>
2197            </div>
2198          </>
2199        ),
2200        categories: ["wallet-interfaces"],
2201      },
2202      {
2203        id: "bitrefill",
2204        title: "Bitrefill",
2205        description: "Live on bitcoin",
2206        extendedDescription: "Buy gift cards and e-sims with no KYC",
2207        webLink: "https://bitrefill.com",
2208        logo: bitrefill,
2209        categories: ["shopping"],
2210        appleLink:
2211          "https://apps.apple.com/us/app/bitrefill-esims-gift-cards/id1378102623",
2212        playLink:
2213          "https://play.google.com/store/apps/details?id=com.bitrefill.app&hl=en",
2214        installGuide: (
2215          <>
2216            <p className="text-muted-foreground">
2217              Open{" "}
2218              <ExternalLink
2219                to="https://bitrefill.com"
2220                className="font-medium text-foreground underline"
2221              >
2222                Bitrefill
2223              </ExternalLink>{" "}
2224              in your browser, or download the app on iOS or Android
2225            </p>
2226          </>
2227        ),
2228        finalizeGuide: (
2229          <>
2230            <div>
2231              <h3 className="font-medium">In Bitrefill</h3>
2232              <ul className="list-inside list-decimal text-muted-foreground">
2233                <li>
2234                  Go to settings {"->"} wallets {"->"} lightning {"->"} payments.
2235                </li>
2236                <li>Paste the connection secret to connect Alby Hub</li>
2237              </ul>
2238            </div>
2239          </>
2240        ),
2241      },
2242      {
2243        id: "bringin",
2244        title: "Bringin",
2245        description:
2246          "Spend Bitcoin from your Alby Hub with VISA at 150M+ merchants worldwide",
2247        webLink: "https://bringin.xyz",
2248        playLink:
2249          "https://play.google.com/store/apps/details?id=xyz.bringin.client",
2250        appleLink: "https://apps.apple.com/in/app/bringin/id1579153016",
2251        zapStoreLink: "https://zapstore.dev/download/",
2252        logo: bringin,
2253        extendedDescription:
2254          "Bringin turns your Alby Hub into a global spending account. Connect once and instantly swap sats into Euro with a linked IBAN and debit card. Spend Bitcoin at 150M+ VISA merchants worldwide, or pay directly with Euro IBAN transfers—all while keeping your funds in self-custody via Alby Hub. Lightning in, real-world payments out.",
2255        categories: ["payment-tools"],
2256        installGuide: (
2257          <>
2258            <p className="text-muted-foreground">
2259              Install Bringin on your Android or iOS smartphone
2260            </p>
2261          </>
2262        ),
2263        finalizeGuide: (
2264          <>
2265            <div>
2266              <h3 className="font-medium">Connect Alby Hub to Bringin</h3>
2267              <ul className="list-inside list-decimal text-muted-foreground">
2268                <li>
2269                  Log in to Bringin, open the{" "}
2270                  <span className="font-medium text-foreground">Bitcoin</span>{" "}
2271                  tab, and tap{" "}
2272                  <span className="font-medium text-foreground">Get started</span>
2273                  .
2274                </li>
2275                <li>
2276                  Select{" "}
2277                  <span className="font-medium text-foreground">Alby Hub</span>{" "}
2278                  and paste your{" "}
2279                  <span className="font-medium text-foreground">NWC secret</span>.
2280                </li>
2281                <li>
2282                  That's it—your Alby Hub is linked. Use Bringin to swap sats to
2283                  Euro and spend at 150M+ VISA merchants worldwide.
2284                </li>
2285              </ul>
2286            </div>
2287          </>
2288        ),
2289      },
2290      {
2291        id: "jumble",
2292        title: "Jumble",
2293        description: "Social media client with Bitcoin Connect",
2294        webLink: "https://jumble.social",
2295        logo: jumble,
2296        extendedDescription:
2297          "A social media client that uses Bitcoin Connect for seamless wallet integration with your Hub",
2298        installGuide: (
2299          <>
2300            <p className="text-muted-foreground">
2301              Open{" "}
2302              <ExternalLink
2303                to="https://jumble.social"
2304                className="font-medium text-foreground underline"
2305              >
2306                Jumble
2307              </ExternalLink>{" "}
2308              in your browser
2309            </p>
2310          </>
2311        ),
2312        finalizeGuide: (
2313          <>
2314            <div>
2315              <h3 className="font-medium">In Jumble</h3>
2316              <ul className="list-inside list-decimal text-muted-foreground">
2317                <li>
2318                  Click on Settings {"->"} Wallet {"->"}
2319                  <span className="font-medium text-foreground">
2320                    other wallets
2321                  </span>
2322                </li>
2323                <li>
2324                  Choose{" "}
2325                  <span className="font-medium text-foreground">
2326                    Nostr Wallet Connect
2327                  </span>
2328                </li>
2329                <li>Paste the connection secret from Alby Hub</li>
2330              </ul>
2331            </div>
2332          </>
2333        ),
2334        categories: ["social-media"],
2335      },
2336      {
2337        id: "takemysats",
2338        readonly: true,
2339        title: "Take My Sats",
2340        description: "Create your online store and accept Bitcoin payments",
2341        webLink: "https://www.takemysats.com",
2342        logo: takemysats,
2343        extendedDescription:
2344          "A Bitcoin e-commerce platform that enables merchants to create online stores and accept Lightning payments directly to your Hub",
2345        installGuide: (
2346          <>
2347            <p className="text-muted-foreground">
2348              Open{" "}
2349              <ExternalLink
2350                to="https://www.takemysats.com"
2351                className="font-medium text-foreground underline"
2352              >
2353                Take My Sats
2354              </ExternalLink>{" "}
2355              in your browser and create your store
2356            </p>
2357          </>
2358        ),
2359        finalizeGuide: (
2360          <>
2361            <div>
2362              <h3 className="font-medium">In Take My Sats</h3>
2363              <ul className="list-inside list-decimal text-muted-foreground">
2364                <li>
2365                  Go to your store{" "}
2366                  <span className="font-medium text-foreground">Settings</span>
2367                </li>
2368                <li>
2369                  Choose{" "}
2370                  <span className="font-medium text-foreground">
2371                    Nostr Wallet Connect
2372                  </span>{" "}
2373                  as your payment method
2374                </li>
2375                <li>Paste the connection secret from Alby Hub</li>
2376              </ul>
2377            </div>
2378          </>
2379        ),
2380        categories: ["merchant-tools"],
2381      },
2382      {
2383        id: "tunnelsats",
2384        title: "TunnelSats",
2385        description: "Privacy Lightning VPN",
2386        webLink: "https://tunnelsats.com",
2387        logo: tunnelsats,
2388        extendedDescription:
2389          "Secure your lightning node with a dedicated static IP. Automated, non-custodial VPN renewals via Nostr Wallet Connect.",
2390        finalizeGuide: (
2391          <>
2392            <div>
2393              <p>
2394                Link your Alby Hub to TunnelSats for non-custodial automated
2395                renewals:
2396              </p>
2397              <ol className="list-inside list-decimal text-muted-foreground">
2398                <li>
2399                  Go to the{" "}
2400                  <ExternalLink
2401                    to="https://tunnelsats.com/dashboard?section=automation"
2402                    className="font-medium text-foreground underline"
2403                  >
2404                    TunnelSats Dashboard
2405                  </ExternalLink>
2406                  .
2407                </li>
2408                <li>Sign in with your node or Nostr extension.</li>
2409                <li>
2410                  Navigate to the <span className="font-medium">Automation</span>{" "}
2411                  tab.
2412                </li>
2413                <li>
2414                  Click{" "}
2415                  <span className="font-medium text-foreground">
2416                    Connect Wallet
2417                  </span>
2418                  .
2419                </li>
2420                <li>
2421                  Paste the{" "}
2422                  <span className="font-medium text-foreground">
2423                    Connection Secret
2424                  </span>{" "}
2425                  from this Alby Hub.
2426                </li>
2427                <li>
2428                  Alternatively, use this{" "}
2429                  <ExternalLink
2430                    to="https://tunnelsats.com/dashboard?section=automation"
2431                    className="font-medium text-foreground underline"
2432                  >
2433                    One-Click Connect
2434                  </ExternalLink>{" "}
2435                  link to pre-fill the connection.
2436                </li>
2437              </ol>
2438            </div>
2439          </>
2440        ),
2441        categories: ["misc"],
2442      },
2443      {
2444        // Keep the legacy app store ID so existing LendaSwap connections still match this entry.
2445        id: "lendaswap",
2446        title: "Satora",
2447        legacyTitles: ["LendaSwap"],
2448        description: "Self-custodial Bitcoin ↔ Stablecoin atomic swaps",
2449        webLink: "https://app.satora.io/?ref=lnds_e3f8dd88_f7db93dbf176",
2450        logo: satoraLogo,
2451        extendedDescription:
2452          "Swap between Lightning Bitcoin and stablecoins (USDC, USDT) on Polygon, Arbitrum, and Ethereum. Satora uses your Hub to pay swap invoices and generate receiving invoices — all self-custodial via HTLCs.",
2453        installGuide: (
2454          <>
2455            <p className="text-muted-foreground">
2456              Open{" "}
2457              <ExternalLink
2458                to="https://app.satora.io/?ref=lnds_e3f8dd88_f7db93dbf176"
2459                className="font-medium text-foreground underline"
2460              >
2461                Satora
2462              </ExternalLink>{" "}
2463              in your browser
2464            </p>
2465          </>
2466        ),
2467        finalizeGuide: (
2468          <>
2469            <div>
2470              <h3 className="font-medium">In Satora</h3>
2471              <ul className="list-inside list-decimal text-muted-foreground">
2472                <li>
2473                  Click the{" "}
2474                  <span className="font-medium text-foreground">
2475                    ⚡ Lightning
2476                  </span>{" "}
2477                  button in the header
2478                </li>
2479                <li>Paste the connection secret from Alby Hub</li>
2480                <li>
2481                  When swapping Lightning → stablecoins, click{" "}
2482                  <span className="font-medium text-foreground">
2483                    Pay with Lightning Wallet
2484                  </span>{" "}
2485                  to pay directly from your Hub
2486                </li>
2487                <li>
2488                  When swapping stablecoins → Lightning, click{" "}
2489                  <span className="font-medium text-foreground">
2490                    Generate invoice from wallet
2491                  </span>{" "}
2492                  to receive directly into your Hub
2493                </li>
2494              </ul>
2495            </div>
2496          </>
2497        ),
2498        categories: ["payment-tools"],
2499        addedDate: "2026-04-10",
2500      },
2501    ] satisfies AppStoreApp[]
2502  ).sort((a, b) => (a.title.toUpperCase() > b.title.toUpperCase() ? 1 : -1));
2503  
2504  export function getAppStoreUrl(app: AppStoreApp) {
2505    return app.internal ? `/internal-apps/${app.id}` : `/appstore/${app.id}`;
2506  }
2507  
2508  export const getAppStoreApp = (app: App) => {
2509    return appStoreApps.find(
2510      (suggestedApp) =>
2511        suggestedApp.id === (app.metadata?.app_store_app_id ?? "") ||
2512        app.name.includes(suggestedApp.title) ||
2513        suggestedApp.legacyTitles?.some((title) => app.name.includes(title))
2514    );
2515  };
2516