From c84396ed62844e03397f4aa942ad5926e76d572e Mon Sep 17 00:00:00 2001
From: hzrd149 <github@hzrd149.com>
Date: Wed, 22 Jan 2025 12:09:06 -0600
Subject: [PATCH] Add option to download another nsite as a homepage Replace
 homepage with simple welcome page

---
 .changeset/pink-rings-roll.md      |   5 +
 .changeset/real-ladybugs-remain.md |   5 +
 .env.example                       |   7 +
 package.json                       |   1 +
 pnpm-lock.yaml                     | 553 +++++++++++++++++++++++++
 public/components/nsite-card.js    | 110 -----
 public/favicon.ico                 | Bin 15406 -> 0 bytes
 public/index.html                  |  72 +++-
 public/lib/lit.min.js              |  29 --
 public/lib/milligram.css           | 635 -----------------------------
 public/lib/normalize.css           | 349 ----------------
 public/logo.jpg                    | Bin 45294 -> 0 bytes
 public/main.js                     |  58 ---
 public/pool.js                     |   4 -
 public/upload/index.html           |  46 ---
 public/upload/upload.js            | 142 -------
 src/env.ts                         |   5 +
 src/index.ts                       |  52 ++-
 src/logger.ts                      |   3 +-
 19 files changed, 677 insertions(+), 1399 deletions(-)
 create mode 100644 .changeset/pink-rings-roll.md
 create mode 100644 .changeset/real-ladybugs-remain.md
 delete mode 100644 public/components/nsite-card.js
 delete mode 100644 public/favicon.ico
 delete mode 100644 public/lib/lit.min.js
 delete mode 100644 public/lib/milligram.css
 delete mode 100644 public/lib/normalize.css
 delete mode 100644 public/logo.jpg
 delete mode 100644 public/main.js
 delete mode 100644 public/pool.js
 delete mode 100644 public/upload/index.html
 delete mode 100644 public/upload/upload.js

diff --git a/.changeset/pink-rings-roll.md b/.changeset/pink-rings-roll.md
new file mode 100644
index 0000000..cc71850
--- /dev/null
+++ b/.changeset/pink-rings-roll.md
@@ -0,0 +1,5 @@
+---
+"nsite-ts": minor
+---
+
+Replace homepage with simple welcome page
diff --git a/.changeset/real-ladybugs-remain.md b/.changeset/real-ladybugs-remain.md
new file mode 100644
index 0000000..29f0a8e
--- /dev/null
+++ b/.changeset/real-ladybugs-remain.md
@@ -0,0 +1,5 @@
+---
+"nsite-ts": minor
+---
+
+Add option to download another nsite as a homepage
diff --git a/.env.example b/.env.example
index 2eaf90c..e6cd6a8 100644
--- a/.env.example
+++ b/.env.example
@@ -17,6 +17,13 @@ MAX_FILE_SIZE='2 MB'
 # The cache folder for nginx
 NGINX_CACHE_DIR='/var/nginx/cache'
 
+# A nprofile pointer for an nsite to use as the default homepage
+# Setting this will override anything in the ./public folder
+NSITE_HOMEPAGE=""
+
+# a local directory to download the homepage to
+NSITE_HOMEPAGE_DIR="public"
+
 # Screenshots require Puppeteer to be setup https://pptr.dev/troubleshooting#setting-up-chrome-linux-sandbox
 ENABLE_SCREENSHOTS="false"
 SCREENSHOTS_DIR="./screenshots"
diff --git a/package.json b/package.json
index 0fa7f70..9160cee 100644
--- a/package.json
+++ b/package.json
@@ -33,6 +33,7 @@
     "koa-static": "^5.0.0",
     "mime": "^4.0.6",
     "nostr-tools": "^2.10.4",
+    "nsite-cli": "^0.1.14",
     "pac-proxy-agent": "^7.1.0",
     "proxy-agent": "^6.5.0",
     "puppeteer": "^23.11.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c2c3a42..e06ba33 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -53,6 +53,9 @@ importers:
       nostr-tools:
         specifier: ^2.10.4
         version: 2.10.4(typescript@5.7.3)
+      nsite-cli:
+        specifier: ^0.1.14
+        version: 0.1.14(@types/node@20.17.14)(typescript@5.7.3)
       pac-proxy-agent:
         specifier: ^7.1.0
         version: 7.1.0
@@ -214,6 +217,94 @@ packages:
   '@gar/promisify@1.1.3':
     resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
 
+  '@inquirer/checkbox@4.0.6':
+    resolution: {integrity: sha512-PgP35JfmGjHU0LSXOyRew0zHuA9N6OJwOlos1fZ20b7j8ISeAdib3L+n0jIxBtX958UeEpte6xhG/gxJ5iUqMw==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/confirm@5.1.3':
+    resolution: {integrity: sha512-fuF9laMmHoOgWapF9h9hv6opA5WvmGFHsTYGCmuFxcghIhEhb3dN0CdQR4BUMqa2H506NCj8cGX4jwMsE4t6dA==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/core@10.1.4':
+    resolution: {integrity: sha512-5y4/PUJVnRb4bwWY67KLdebWOhOc7xj5IP2J80oWXa64mVag24rwQ1VAdnj7/eDY/odhguW0zQ1Mp1pj6fO/2w==}
+    engines: {node: '>=18'}
+
+  '@inquirer/core@3.1.2':
+    resolution: {integrity: sha512-lR2GaqBkp42Ew9BOAOqf2pSp+ymVES1qN8OC90WWh45yeoYLl0Ty1GyCxmkKqBJtq/+Ea1MF12AdFcZcpRNFsw==}
+    engines: {node: '>=14.18.0'}
+
+  '@inquirer/editor@4.2.3':
+    resolution: {integrity: sha512-S9KnIOJuTZpb9upeRSBBhoDZv7aSV3pG9TECrBj0f+ZsFwccz886hzKBrChGrXMJwd4NKY+pOA9Vy72uqnd6Eg==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/expand@4.0.6':
+    resolution: {integrity: sha512-TRTfi1mv1GeIZGyi9PQmvAaH65ZlG4/FACq6wSzs7Vvf1z5dnNWsAAXBjWMHt76l+1hUY8teIqJFrWBk5N6gsg==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/figures@1.0.9':
+    resolution: {integrity: sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==}
+    engines: {node: '>=18'}
+
+  '@inquirer/input@4.1.3':
+    resolution: {integrity: sha512-zeo++6f7hxaEe7OjtMzdGZPHiawsfmCZxWB9X1NpmYgbeoyerIbWemvlBxxl+sQIlHC0WuSAG19ibMq3gbhaqQ==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/number@3.0.6':
+    resolution: {integrity: sha512-xO07lftUHk1rs1gR0KbqB+LJPhkUNkyzV/KhH+937hdkMazmAYHLm1OIrNKpPelppeV1FgWrgFDjdUD8mM+XUg==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/password@4.0.6':
+    resolution: {integrity: sha512-QLF0HmMpHZPPMp10WGXh6F+ZPvzWE7LX6rNoccdktv/Rov0B+0f+eyXkAcgqy5cH9V+WSpbLxu2lo3ysEVK91w==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/prompts@7.2.3':
+    resolution: {integrity: sha512-hzfnm3uOoDySDXfDNOm9usOuYIaQvTgKp/13l1uJoe6UNY+Zpcn2RYt0jXz3yA+yemGHvDOxVzqWl3S5sQq53Q==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/rawlist@4.0.6':
+    resolution: {integrity: sha512-QoE4s1SsIPx27FO4L1b1mUjVcoHm1pWE/oCmm4z/Hl+V1Aw5IXl8FYYzGmfXaBT0l/sWr49XmNSiq7kg3Kd/Lg==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/search@3.0.6':
+    resolution: {integrity: sha512-eFZ2hiAq0bZcFPuFFBmZEtXU1EarHLigE+ENCtpO+37NHCl4+Yokq1P/d09kUblObaikwfo97w+0FtG/EXl5Ng==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/select@4.0.6':
+    resolution: {integrity: sha512-yANzIiNZ8fhMm4NORm+a74+KFYHmf7BZphSOBovIzYPVLquseTGEkU5l2UTnBOf5k0VLmTgPighNDLE9QtbViQ==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
+  '@inquirer/type@1.5.5':
+    resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==}
+    engines: {node: '>=18'}
+
+  '@inquirer/type@3.0.2':
+    resolution: {integrity: sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
   '@ioredis/commands@1.2.0':
     resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
 
@@ -266,6 +357,9 @@ packages:
     resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==}
     engines: {node: ^14.21.3 || >=16}
 
+  '@noble/secp256k1@2.2.3':
+    resolution: {integrity: sha512-l7r5oEQym9Us7EAigzg30/PQAvynhMt2uoYtT3t26eGDVm9Yii5mZ5jWSWmZ/oSIR2Et0xfc6DXrG0bZ787V3w==}
+
   '@nodelib/fs.scandir@2.1.5':
     resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
     engines: {node: '>= 8'}
@@ -278,6 +372,10 @@ packages:
     resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
     engines: {node: '>= 8'}
 
+  '@nostr-dev-kit/ndk@2.11.0':
+    resolution: {integrity: sha512-FKIMtcVsVcquzrC+yir9lOXHCIHmQ3IKEVCMohqEB7N96HjP2qrI9s5utbjI3lkavFNF5tXg1Gp9ODEo7XCfLA==}
+    engines: {node: '>=16'}
+
   '@npmcli/fs@1.1.1':
     resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==}
 
@@ -534,6 +632,9 @@ packages:
   '@types/ms@2.1.0':
     resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
 
+  '@types/mute-stream@0.0.1':
+    resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==}
+
   '@types/node@12.20.55':
     resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
 
@@ -555,6 +656,9 @@ packages:
   '@types/serve-static@1.15.7':
     resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
 
+  '@types/wrap-ansi@3.0.0':
+    resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==}
+
   '@types/ws@8.5.13':
     resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==}
 
@@ -588,6 +692,10 @@ packages:
     resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
     engines: {node: '>=6'}
 
+  ansi-escapes@4.3.2:
+    resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+    engines: {node: '>=8'}
+
   ansi-regex@5.0.1:
     resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
     engines: {node: '>=8'}
@@ -622,6 +730,12 @@ packages:
     resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
     engines: {node: '>=4'}
 
+  asynckit@0.4.0:
+    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+  axios@1.7.9:
+    resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==}
+
   b4a@1.6.7:
     resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
 
@@ -721,6 +835,10 @@ packages:
     resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
     engines: {node: '>=6'}
 
+  chalk@4.1.2:
+    resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+    engines: {node: '>=10'}
+
   chardet@0.7.0:
     resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
 
@@ -748,6 +866,14 @@ packages:
     resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
     engines: {node: '>=6'}
 
+  cli-spinners@2.9.2:
+    resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+    engines: {node: '>=6'}
+
+  cli-width@4.1.0:
+    resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
+    engines: {node: '>= 12'}
+
   cliui@8.0.1:
     resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
     engines: {node: '>=12'}
@@ -774,6 +900,14 @@ packages:
   colorette@2.0.20:
     resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
 
+  combined-stream@1.0.8:
+    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+    engines: {node: '>= 0.8'}
+
+  commander@12.1.0:
+    resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
+    engines: {node: '>=18'}
+
   concat-map@0.0.1:
     resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
 
@@ -805,6 +939,10 @@ packages:
     resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
     engines: {node: '>= 8'}
 
+  data-uri-to-buffer@4.0.1:
+    resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
+    engines: {node: '>= 12'}
+
   data-uri-to-buffer@6.0.2:
     resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
     engines: {node: '>= 14'}
@@ -849,6 +987,10 @@ packages:
     resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
     engines: {node: '>= 14'}
 
+  delayed-stream@1.0.0:
+    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+    engines: {node: '>=0.4.0'}
+
   delegates@1.0.0:
     resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
 
@@ -940,6 +1082,14 @@ packages:
   escape-html@1.0.3:
     resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
 
+  escape-string-regexp@1.0.5:
+    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+    engines: {node: '>=0.8.0'}
+
+  escape-string-regexp@5.0.0:
+    resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+    engines: {node: '>=12'}
+
   escodegen@2.1.0:
     resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
     engines: {node: '>=6.0'}
@@ -987,6 +1137,18 @@ packages:
   fd-slicer@1.1.0:
     resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
 
+  fetch-blob@3.2.0:
+    resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
+    engines: {node: ^12.20 || >= 14.13}
+
+  figures@3.2.0:
+    resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
+    engines: {node: '>=8'}
+
+  figures@5.0.0:
+    resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==}
+    engines: {node: '>=14'}
+
   file-uri-to-path@1.0.0:
     resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
 
@@ -1007,6 +1169,14 @@ packages:
       debug:
         optional: true
 
+  form-data@4.0.1:
+    resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
+    engines: {node: '>= 6'}
+
+  formdata-polyfill@4.0.10:
+    resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
+    engines: {node: '>=12.20.0'}
+
   fresh@0.5.2:
     resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
     engines: {node: '>= 0.6'}
@@ -1088,6 +1258,10 @@ packages:
     resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
     engines: {node: '>=4'}
 
+  has-flag@4.0.0:
+    resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+    engines: {node: '>=8'}
+
   has-symbols@1.1.0:
     resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
     engines: {node: '>= 0.4'}
@@ -1189,6 +1363,16 @@ packages:
   ini@1.3.8:
     resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
 
+  inquirer-autocomplete-standalone@0.8.1:
+    resolution: {integrity: sha512-mlzwCTiXDX1Cw4yJL5PCq32k23XYLTK8K6BDFoL1a76iJeFB5ul6IoMU9spgdDagl2SM7P6ZaCNjj8VNXRDPOQ==}
+    engines: {node: '>=16'}
+
+  inquirer@12.3.2:
+    resolution: {integrity: sha512-YjQCIcDd3yyDuQrbII0FBtm/ZqNoWtvaC71yeCnd5Vbg4EgzsAGaemzfpzmqfvIZEp2roSwuZZKdM0C65hA43g==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@types/node': '>=18'
+
   ioredis@5.4.2:
     resolution: {integrity: sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==}
     engines: {node: '>=12.22.0'}
@@ -1235,6 +1419,10 @@ packages:
     resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
     engines: {node: '>=4'}
 
+  is-unicode-supported@1.3.0:
+    resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
+    engines: {node: '>=12'}
+
   is-windows@1.0.2:
     resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
     engines: {node: '>=0.10.0'}
@@ -1291,6 +1479,9 @@ packages:
     resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==}
     engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4}
 
+  light-bolt11-decoder@3.2.0:
+    resolution: {integrity: sha512-3QEofgiBOP4Ehs9BI+RkZdXZNtSys0nsJ6fyGeSiAGCBsMwHGUDS/JQlY/sTnWs91A2Nh0S9XXfA8Sy9g6QpuQ==}
+
   lines-and-columns@1.2.4:
     resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
 
@@ -1415,6 +1606,14 @@ packages:
   ms@2.1.3:
     resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
 
+  mute-stream@1.0.0:
+    resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
+    engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+  mute-stream@2.0.0:
+    resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
+    engines: {node: ^18.17.0 || >=20.5.0}
+
   napi-build-utils@2.0.0:
     resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
 
@@ -1437,6 +1636,14 @@ packages:
   node-addon-api@7.1.1:
     resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
 
+  node-domexception@1.0.0:
+    resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
+    engines: {node: '>=10.5.0'}
+
+  node-fetch@3.3.2:
+    resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
   node-gyp@8.4.1:
     resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==}
     engines: {node: '>= 10.12.0'}
@@ -1472,6 +1679,11 @@ packages:
     engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
     deprecated: This package is no longer supported.
 
+  nsite-cli@0.1.14:
+    resolution: {integrity: sha512-ZPIIrft//YJJpKINrVDOiTxA1ut1vK5YocrY/Dwf2dSM0xzER2ipF6QL5hfVHbT84wC5R3Ea9O1IoH17nuFHoQ==}
+    engines: {node: '>=20.0.0', npm: '>=8.0.0 '}
+    hasBin: true
+
   on-finished@2.3.0:
     resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
     engines: {node: '>= 0.8'}
@@ -1696,9 +1908,16 @@ packages:
     deprecated: Rimraf versions prior to v4 are no longer supported
     hasBin: true
 
+  run-async@3.0.0:
+    resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
+    engines: {node: '>=0.12.0'}
+
   run-parallel@1.2.0:
     resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
 
+  rxjs@7.8.1:
+    resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
+
   safe-buffer@5.1.2:
     resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
 
@@ -1827,6 +2046,10 @@ packages:
     resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
     engines: {node: '>=4'}
 
+  supports-color@7.2.0:
+    resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+    engines: {node: '>=8'}
+
   tar-fs@2.1.2:
     resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==}
 
@@ -1870,6 +2093,9 @@ packages:
     resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==}
     hasBin: true
 
+  tseep@1.3.1:
+    resolution: {integrity: sha512-ZPtfk1tQnZVyr7BPtbJ93qaAh2lZuIOpTMjhrYa4XctT8xe7t4SAW9LIxrySDuYMsfNNayE51E/WNGrNVgVicQ==}
+
   tslib@2.8.1:
     resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
 
@@ -1883,6 +2109,10 @@ packages:
   tunnel-agent@0.6.0:
     resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
 
+  type-fest@0.21.3:
+    resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+    engines: {node: '>=10'}
+
   type-is@1.6.18:
     resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
     engines: {node: '>= 0.6'}
@@ -1890,6 +2120,9 @@ packages:
   typed-query-selector@2.12.0:
     resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==}
 
+  typescript-lru-cache@2.0.0:
+    resolution: {integrity: sha512-Jp57Qyy8wXeMkdNuZiglE6v2Cypg13eDA1chHwDG6kq51X7gk4K7P7HaDdzZKCxkegXkVHNcPD0n5aW6OZH3aA==}
+
   typescript@5.7.3:
     resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
     engines: {node: '>=14.17'}
@@ -1914,6 +2147,10 @@ packages:
     resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
     engines: {node: '>= 4.0.0'}
 
+  utf8-buffer@1.0.0:
+    resolution: {integrity: sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==}
+    engines: {node: '>=8'}
+
   util-deprecate@1.0.2:
     resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
 
@@ -1921,6 +2158,10 @@ packages:
     resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
     engines: {node: '>= 0.8'}
 
+  web-streams-polyfill@3.3.3:
+    resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
+    engines: {node: '>= 8'}
+
   websocket-polyfill@1.0.0:
     resolution: {integrity: sha512-QwfEy8jcOOCVO9su9UP+msEmhZa4a9WSJfePIdCT8GxwVl2Z9toM7nCqFfDDxA/sRmxgf1KNiwL6PXvjJ9qRxw==}
 
@@ -1932,6 +2173,10 @@ packages:
   wide-align@1.1.5:
     resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
 
+  wrap-ansi@6.2.0:
+    resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+    engines: {node: '>=8'}
+
   wrap-ansi@7.0.0:
     resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
     engines: {node: '>=10'}
@@ -1977,6 +2222,10 @@ packages:
     resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==}
     engines: {node: '>= 4.0.0'}
 
+  yoctocolors-cjs@2.1.2:
+    resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
+    engines: {node: '>=18'}
+
   zod@3.23.8:
     resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
 
@@ -2171,6 +2420,132 @@ snapshots:
   '@gar/promisify@1.1.3':
     optional: true
 
+  '@inquirer/checkbox@4.0.6(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/figures': 1.0.9
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+      ansi-escapes: 4.3.2
+      yoctocolors-cjs: 2.1.2
+
+  '@inquirer/confirm@5.1.3(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+
+  '@inquirer/core@10.1.4(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/figures': 1.0.9
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      ansi-escapes: 4.3.2
+      cli-width: 4.1.0
+      mute-stream: 2.0.0
+      signal-exit: 4.1.0
+      strip-ansi: 6.0.1
+      wrap-ansi: 6.2.0
+      yoctocolors-cjs: 2.1.2
+    transitivePeerDependencies:
+      - '@types/node'
+
+  '@inquirer/core@3.1.2':
+    dependencies:
+      '@inquirer/type': 1.5.5
+      '@types/mute-stream': 0.0.1
+      '@types/node': 20.17.14
+      '@types/wrap-ansi': 3.0.0
+      ansi-escapes: 4.3.2
+      chalk: 4.1.2
+      cli-spinners: 2.9.2
+      cli-width: 4.1.0
+      figures: 3.2.0
+      mute-stream: 1.0.0
+      run-async: 3.0.0
+      strip-ansi: 6.0.1
+      wrap-ansi: 6.2.0
+
+  '@inquirer/editor@4.2.3(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+      external-editor: 3.1.0
+
+  '@inquirer/expand@4.0.6(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+      yoctocolors-cjs: 2.1.2
+
+  '@inquirer/figures@1.0.9': {}
+
+  '@inquirer/input@4.1.3(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+
+  '@inquirer/number@3.0.6(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+
+  '@inquirer/password@4.0.6(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+      ansi-escapes: 4.3.2
+
+  '@inquirer/prompts@7.2.3(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/checkbox': 4.0.6(@types/node@20.17.14)
+      '@inquirer/confirm': 5.1.3(@types/node@20.17.14)
+      '@inquirer/editor': 4.2.3(@types/node@20.17.14)
+      '@inquirer/expand': 4.0.6(@types/node@20.17.14)
+      '@inquirer/input': 4.1.3(@types/node@20.17.14)
+      '@inquirer/number': 3.0.6(@types/node@20.17.14)
+      '@inquirer/password': 4.0.6(@types/node@20.17.14)
+      '@inquirer/rawlist': 4.0.6(@types/node@20.17.14)
+      '@inquirer/search': 3.0.6(@types/node@20.17.14)
+      '@inquirer/select': 4.0.6(@types/node@20.17.14)
+      '@types/node': 20.17.14
+
+  '@inquirer/rawlist@4.0.6(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+      yoctocolors-cjs: 2.1.2
+
+  '@inquirer/search@3.0.6(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/figures': 1.0.9
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+      yoctocolors-cjs: 2.1.2
+
+  '@inquirer/select@4.0.6(@types/node@20.17.14)':
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/figures': 1.0.9
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+      ansi-escapes: 4.3.2
+      yoctocolors-cjs: 2.1.2
+
+  '@inquirer/type@1.5.5':
+    dependencies:
+      mute-stream: 1.0.0
+
+  '@inquirer/type@3.0.2(@types/node@20.17.14)':
+    dependencies:
+      '@types/node': 20.17.14
+
   '@ioredis/commands@1.2.0': {}
 
   '@keyv/redis@3.0.1':
@@ -2237,6 +2612,8 @@ snapshots:
 
   '@noble/hashes@1.7.1': {}
 
+  '@noble/secp256k1@2.2.3': {}
+
   '@nodelib/fs.scandir@2.1.5':
     dependencies:
       '@nodelib/fs.stat': 2.0.5
@@ -2249,6 +2626,25 @@ snapshots:
       '@nodelib/fs.scandir': 2.1.5
       fastq: 1.18.0
 
+  '@nostr-dev-kit/ndk@2.11.0(typescript@5.7.3)':
+    dependencies:
+      '@noble/curves': 1.8.1
+      '@noble/hashes': 1.7.1
+      '@noble/secp256k1': 2.2.3
+      '@scure/base': 1.2.4
+      debug: 4.4.0(supports-color@5.5.0)
+      light-bolt11-decoder: 3.2.0
+      nostr-tools: 2.10.4(typescript@5.7.3)
+      tseep: 1.3.1
+      typescript-lru-cache: 2.0.0
+      utf8-buffer: 1.0.0
+      websocket-polyfill: 1.0.0
+    transitivePeerDependencies:
+      - bufferutil
+      - supports-color
+      - typescript
+      - utf-8-validate
+
   '@npmcli/fs@1.1.1':
     dependencies:
       '@gar/promisify': 1.1.3
@@ -2522,6 +2918,10 @@ snapshots:
 
   '@types/ms@2.1.0': {}
 
+  '@types/mute-stream@0.0.1':
+    dependencies:
+      '@types/node': 20.17.14
+
   '@types/node@12.20.55': {}
 
   '@types/node@20.17.14':
@@ -2547,6 +2947,8 @@ snapshots:
       '@types/node': 20.17.14
       '@types/send': 0.17.4
 
+  '@types/wrap-ansi@3.0.0': {}
+
   '@types/ws@8.5.13':
     dependencies:
       '@types/node': 20.17.14
@@ -2586,6 +2988,10 @@ snapshots:
 
   ansi-colors@4.1.3: {}
 
+  ansi-escapes@4.3.2:
+    dependencies:
+      type-fest: 0.21.3
+
   ansi-regex@5.0.1: {}
 
   ansi-styles@4.3.0:
@@ -2618,6 +3024,16 @@ snapshots:
     dependencies:
       tslib: 2.8.1
 
+  asynckit@0.4.0: {}
+
+  axios@1.7.9(debug@4.4.0):
+    dependencies:
+      follow-redirects: 1.15.9(debug@4.4.0)
+      form-data: 4.0.1
+      proxy-from-env: 1.1.0
+    transitivePeerDependencies:
+      - debug
+
   b4a@1.6.7: {}
 
   balanced-match@1.0.2: {}
@@ -2742,6 +3158,11 @@ snapshots:
 
   callsites@3.1.0: {}
 
+  chalk@4.1.2:
+    dependencies:
+      ansi-styles: 4.3.0
+      supports-color: 7.2.0
+
   chardet@0.7.0: {}
 
   chokidar@3.6.0:
@@ -2771,6 +3192,10 @@ snapshots:
   clean-stack@2.2.0:
     optional: true
 
+  cli-spinners@2.9.2: {}
+
+  cli-width@4.1.0: {}
+
   cliui@8.0.1:
     dependencies:
       string-width: 4.2.3
@@ -2792,6 +3217,12 @@ snapshots:
 
   colorette@2.0.20: {}
 
+  combined-stream@1.0.8:
+    dependencies:
+      delayed-stream: 1.0.0
+
+  commander@12.1.0: {}
+
   concat-map@0.0.1: {}
 
   console-control-strings@1.1.0:
@@ -2823,6 +3254,8 @@ snapshots:
       shebang-command: 2.0.0
       which: 2.0.2
 
+  data-uri-to-buffer@4.0.1: {}
+
   data-uri-to-buffer@6.0.2: {}
 
   debug@2.6.9:
@@ -2853,6 +3286,8 @@ snapshots:
       escodegen: 2.1.0
       esprima: 4.0.1
 
+  delayed-stream@1.0.0: {}
+
   delegates@1.0.0: {}
 
   denque@2.1.0: {}
@@ -2922,6 +3357,10 @@ snapshots:
 
   escape-html@1.0.3: {}
 
+  escape-string-regexp@1.0.5: {}
+
+  escape-string-regexp@5.0.0: {}
+
   escodegen@2.1.0:
     dependencies:
       esprima: 4.0.1
@@ -2974,6 +3413,20 @@ snapshots:
     dependencies:
       pend: 1.2.0
 
+  fetch-blob@3.2.0:
+    dependencies:
+      node-domexception: 1.0.0
+      web-streams-polyfill: 3.3.3
+
+  figures@3.2.0:
+    dependencies:
+      escape-string-regexp: 1.0.5
+
+  figures@5.0.0:
+    dependencies:
+      escape-string-regexp: 5.0.0
+      is-unicode-supported: 1.3.0
+
   file-uri-to-path@1.0.0: {}
 
   fill-range@7.1.1:
@@ -2989,6 +3442,16 @@ snapshots:
     optionalDependencies:
       debug: 4.4.0(supports-color@5.5.0)
 
+  form-data@4.0.1:
+    dependencies:
+      asynckit: 0.4.0
+      combined-stream: 1.0.8
+      mime-types: 2.1.35
+
+  formdata-polyfill@4.0.10:
+    dependencies:
+      fetch-blob: 3.2.0
+
   fresh@0.5.2: {}
 
   fs-constants@1.0.0: {}
@@ -3092,6 +3555,8 @@ snapshots:
 
   has-flag@3.0.0: {}
 
+  has-flag@4.0.0: {}
+
   has-symbols@1.1.0: {}
 
   has-tostringtag@1.0.2:
@@ -3209,6 +3674,24 @@ snapshots:
 
   ini@1.3.8: {}
 
+  inquirer-autocomplete-standalone@0.8.1:
+    dependencies:
+      '@inquirer/core': 3.1.2
+      '@inquirer/type': 1.5.5
+      figures: 5.0.0
+      picocolors: 1.1.1
+
+  inquirer@12.3.2(@types/node@20.17.14):
+    dependencies:
+      '@inquirer/core': 10.1.4(@types/node@20.17.14)
+      '@inquirer/prompts': 7.2.3(@types/node@20.17.14)
+      '@inquirer/type': 3.0.2(@types/node@20.17.14)
+      '@types/node': 20.17.14
+      ansi-escapes: 4.3.2
+      mute-stream: 2.0.0
+      run-async: 3.0.0
+      rxjs: 7.8.1
+
   ioredis@5.4.2:
     dependencies:
       '@ioredis/commands': 1.2.0
@@ -3265,6 +3748,8 @@ snapshots:
     dependencies:
       better-path-resolve: 1.0.0
 
+  is-unicode-supported@1.3.0: {}
+
   is-windows@1.0.2: {}
 
   isexe@2.0.0: {}
@@ -3352,6 +3837,10 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  light-bolt11-decoder@3.2.0:
+    dependencies:
+      '@scure/base': 1.1.1
+
   lines-and-columns@1.2.4: {}
 
   locate-path@5.0.0:
@@ -3483,6 +3972,10 @@ snapshots:
 
   ms@2.1.3: {}
 
+  mute-stream@1.0.0: {}
+
+  mute-stream@2.0.0: {}
+
   napi-build-utils@2.0.0: {}
 
   negotiator@0.6.3: {}
@@ -3498,6 +3991,14 @@ snapshots:
 
   node-addon-api@7.1.1: {}
 
+  node-domexception@1.0.0: {}
+
+  node-fetch@3.3.2:
+    dependencies:
+      data-uri-to-buffer: 4.0.1
+      fetch-blob: 3.2.0
+      formdata-polyfill: 4.0.10
+
   node-gyp@8.4.1:
     dependencies:
       env-paths: 2.2.1
@@ -3558,6 +4059,30 @@ snapshots:
       set-blocking: 2.0.0
     optional: true
 
+  nsite-cli@0.1.14(@types/node@20.17.14)(typescript@5.7.3):
+    dependencies:
+      '@noble/hashes': 1.7.1
+      '@nostr-dev-kit/ndk': 2.11.0(typescript@5.7.3)
+      axios: 1.7.9(debug@4.4.0)
+      blossom-client-sdk: 2.1.1
+      commander: 12.1.0
+      debug: 4.4.0(supports-color@5.5.0)
+      dotenv: 16.4.7
+      inquirer: 12.3.2(@types/node@20.17.14)
+      inquirer-autocomplete-standalone: 0.8.1
+      mime-types: 2.1.35
+      node-fetch: 3.3.2
+      nostr-tools: 2.10.4(typescript@5.7.3)
+      proxy-agent: 6.5.0
+      websocket-polyfill: 1.0.0
+      ws: 8.18.0
+    transitivePeerDependencies:
+      - '@types/node'
+      - bufferutil
+      - supports-color
+      - typescript
+      - utf-8-validate
+
   on-finished@2.3.0:
     dependencies:
       ee-first: 1.1.1
@@ -3802,10 +4327,16 @@ snapshots:
       glob: 7.2.3
     optional: true
 
+  run-async@3.0.0: {}
+
   run-parallel@1.2.0:
     dependencies:
       queue-microtask: 1.2.3
 
+  rxjs@7.8.1:
+    dependencies:
+      tslib: 2.8.1
+
   safe-buffer@5.1.2: {}
 
   safe-buffer@5.2.1: {}
@@ -3943,6 +4474,10 @@ snapshots:
     dependencies:
       has-flag: 3.0.0
 
+  supports-color@7.2.0:
+    dependencies:
+      has-flag: 4.0.0
+
   tar-fs@2.1.2:
     dependencies:
       chownr: 1.1.4
@@ -4003,6 +4538,8 @@ snapshots:
 
   touch@3.1.1: {}
 
+  tseep@1.3.1: {}
+
   tslib@2.8.1: {}
 
   tsscmp@1.0.6: {}
@@ -4013,6 +4550,8 @@ snapshots:
     dependencies:
       safe-buffer: 5.2.1
 
+  type-fest@0.21.3: {}
+
   type-is@1.6.18:
     dependencies:
       media-typer: 0.3.0
@@ -4020,6 +4559,8 @@ snapshots:
 
   typed-query-selector@2.12.0: {}
 
+  typescript-lru-cache@2.0.0: {}
+
   typescript@5.7.3: {}
 
   unbzip2-stream@1.4.3:
@@ -4043,10 +4584,14 @@ snapshots:
 
   universalify@0.1.2: {}
 
+  utf8-buffer@1.0.0: {}
+
   util-deprecate@1.0.2: {}
 
   vary@1.1.2: {}
 
+  web-streams-polyfill@3.3.3: {}
+
   websocket-polyfill@1.0.0:
     dependencies:
       import2: 1.0.3
@@ -4065,6 +4610,12 @@ snapshots:
       string-width: 4.2.3
     optional: true
 
+  wrap-ansi@6.2.0:
+    dependencies:
+      ansi-styles: 4.3.0
+      string-width: 4.2.3
+      strip-ansi: 6.0.1
+
   wrap-ansi@7.0.0:
     dependencies:
       ansi-styles: 4.3.0
@@ -4100,4 +4651,6 @@ snapshots:
 
   ylru@1.4.0: {}
 
+  yoctocolors-cjs@2.1.2: {}
+
   zod@3.23.8: {}
diff --git a/public/components/nsite-card.js b/public/components/nsite-card.js
deleted file mode 100644
index d7e002c..0000000
--- a/public/components/nsite-card.js
+++ /dev/null
@@ -1,110 +0,0 @@
-import { html, css, LitElement } from "lit";
-import { nip19 } from "nostr-tools";
-import { pool, relays } from "../pool.js";
-
-export class NsiteCard extends LitElement {
-  static styles = css`
-    :host {
-      min-width: 3in;
-      max-width: 4in;
-      border: 1px solid lightslategray;
-      display: flex;
-      flex-direction: column;
-      padding: 0.5em;
-      gap: 0.3em;
-      border-radius: 0.5em;
-    }
-
-    .title {
-      display: flex;
-      gap: 0.5em;
-      align-items: center;
-      color: initial;
-      text-decoration: none;
-    }
-    .title h3 {
-      margin: 0;
-    }
-    .avatar {
-      width: 3rem;
-      height: 3rem;
-      border: none;
-      outline: none;
-      border-radius: 50%;
-    }
-
-    .thumb {
-      display: flex;
-      overflow: hidden;
-    }
-
-    .thumb > img {
-      width: 100%;
-      border-radius: 0.5em;
-    }
-
-    .about {
-      display: -webkit-box;
-      -webkit-line-clamp: 3;
-      -webkit-box-orient: vertical;
-      overflow: hidden;
-    }
-
-    time {
-      margin-top: auto;
-    }
-  `;
-
-  static properties = {
-    nsite: { type: Object },
-    profile: { state: true, type: Object },
-    hasThumb: { state: true, type: Boolean },
-  };
-
-  constructor() {
-    super();
-    this.hasThumb = true;
-  }
-
-  connectedCallback() {
-    super.connectedCallback();
-
-    pool.get(relays, { kinds: [0], authors: [this.nsite.pubkey] }).then((event) => {
-      if (event) this.profile = JSON.parse(event.content);
-    });
-  }
-
-  handleError() {
-    this.hasThumb = false;
-  }
-
-  render() {
-    const npub = nip19.npubEncode(this.nsite.pubkey);
-    const url = new URL("/", `${location.protocol}//${npub}.${location.host}`);
-
-    return html`
-      ${this.hasThumb
-        ? html`
-            <a class="thumb" href="${url}" target="_blank">
-              <img src="/screenshot/${this.nsite.pubkey}.png" @error=${this.handleError} />
-            </a>
-          `
-        : undefined}
-      <a class="title" href="${url}" target="_blank">
-        ${this.profile && html`<img src="${this.profile.image || this.profile.picture}" class="avatar" />`}
-        <div>
-          ${this.profile
-            ? html`
-                <h3>${this.profile.display_name || this.profile.name}</h3>
-                <small>${this.profile.nip05}</small>
-              `
-            : html`<h3>${npub.slice(0, 8)}</h3>`}
-        </div>
-      </a>
-      ${this.profile && html`<p class="about">${this.profile.about}</p>`}
-      <time>${new Date(this.nsite.created_at * 1000).toDateString()}</time>
-    `;
-  }
-}
-
-customElements.define("nsite-card", NsiteCard);
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index ce391bcaa9a673b13aa4c373c4a884d8d4f6bdf7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15406
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

diff --git a/public/index.html b/public/index.html
index cea69c8..89e0726 100644
--- a/public/index.html
+++ b/public/index.html
@@ -3,27 +3,65 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>nsite</title>
-
-    <script type="importmap">
-      {
-        "imports": {
-          "blossom-client-sdk": "https://esm.run/blossom-client-sdk",
-          "nostr-tools": "https://esm.run/nostr-tools",
-          "lit": "https://esm.run/lit",
-          "lit/directives/repeat.js": "https://esm.run/lit/directives/repeat.js"
-        }
-      }
-    </script>
-
+    <title>Welcome to nsite-ts</title>
     <style>
-      nostr-picture > img {
-        width: 100%;
+      body {
+        font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
+        line-height: 1.6;
+        color: #333;
+        max-width: 800px;
+        margin: 40px auto;
+        padding: 0 20px;
+        background-color: #f5f5f5;
+      }
+      .container {
+        background-color: white;
+        padding: 30px;
+        border-radius: 8px;
+        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+      }
+      h1 {
+        color: #2c3e50;
+        margin-bottom: 20px;
+      }
+      .info {
+        background-color: #f8f9fa;
+        border-left: 4px solid #007bff;
+        padding: 15px;
+        margin: 20px 0;
+      }
+      code {
+        background-color: #f1f1f1;
+        padding: 2px 6px;
+        border-radius: 3px;
+        font-family: Monaco, monospace;
+        user-select: all;
+        word-break: break-all;
       }
     </style>
-    <script type="module" src="./main.js"></script>
   </head>
   <body>
-    <nsite-app></nsite-app>
+    <div class="container">
+      <h1>Welcome to nsite-ts</h1>
+      <p>If you're seeing this page, nsite-ts has been successfully installed and is working.</p>
+
+      <div class="info">
+        <p>
+          To set a custom homepage, set the <code>NSITE_HOMEPAGE</code> environment variable to your desired nprofile
+        </p>
+        <p>
+          Example:
+          <br />
+          <code
+            >NSITE_HOMEPAGE=nprofile1qqspspfsrjnurtf0jdyswm8jstustv7pu4qw3pn4u99etptvgzm4uvcpz9mhxue69uhkummnw3e82efwvdhk6qg5waehxw309aex2mrp0yhxgctdw4eju6t04mzfem</code
+          >
+        </p>
+      </div>
+
+      <p>
+        For more information about configuring nsite-ts, please refer to the
+        <a href="https://github.com/hzrd149/nsite-ts">documentation</a>
+      </p>
+    </div>
   </body>
 </html>
diff --git a/public/lib/lit.min.js b/public/lib/lit.min.js
deleted file mode 100644
index dd99bbe..0000000
--- a/public/lib/lit.min.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * @license
- * Copyright 2019 Google LLC
- * SPDX-License-Identifier: BSD-3-Clause
- */
-const t=globalThis,s=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,i=Symbol(),e=new WeakMap;class o{constructor(t,s,e){if(this._$cssResult$=!0,e!==i)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=s}get styleSheet(){let t=this.i;const i=this.t;if(s&&void 0===t){const s=void 0!==i&&1===i.length;s&&(t=e.get(i)),void 0===t&&((this.i=t=new CSSStyleSheet).replaceSync(this.cssText),s&&e.set(i,t))}return t}toString(){return this.cssText}}const h=t=>new o("string"==typeof t?t:t+"",void 0,i),r=(t,...s)=>{const e=1===t.length?t[0]:s.reduce(((s,i,e)=>s+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[e+1]),t[0]);return new o(e,t,i)},n=(i,e)=>{if(s)i.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const s of e){const e=document.createElement("style"),o=t.litNonce;void 0!==o&&e.setAttribute("nonce",o),e.textContent=s.cssText,i.appendChild(e)}},c=s?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let s="";for(const i of t.cssRules)s+=i.cssText;return h(s)})(t):t
-/**
- * @license
- * Copyright 2017 Google LLC
- * SPDX-License-Identifier: BSD-3-Clause
- */,{is:a,defineProperty:l,getOwnPropertyDescriptor:u,getOwnPropertyNames:d,getOwnPropertySymbols:f,getPrototypeOf:p}=Object,v=globalThis,m=v.trustedTypes,y=m?m.emptyScript:"",g=v.reactiveElementPolyfillSupport,_=(t,s)=>t,b={toAttribute(t,s){switch(s){case Boolean:t=t?y:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},S=(t,s)=>!a(t,s),w={attribute:!0,type:String,converter:b,reflect:!1,hasChanged:S};Symbol.metadata??=Symbol("metadata"),v.litPropertyMetadata??=new WeakMap;class $ extends HTMLElement{static addInitializer(t){this.o(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this.u&&[...this.u.keys()]}static createProperty(t,s=w){if(s.state&&(s.attribute=!1),this.o(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),e=this.getPropertyDescriptor(t,i,s);void 0!==e&&l(this.prototype,t,e)}}static getPropertyDescriptor(t,s,i){const{get:e,set:o}=u(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const h=e?.call(this);o.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??w}static o(){if(this.hasOwnProperty(_("elementProperties")))return;const t=p(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(_("finalized")))return;if(this.finalized=!0,this.o(),this.hasOwnProperty(_("properties"))){const t=this.properties,s=[...d(t),...f(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this.u=new Map;for(const[t,s]of this.elementProperties){const i=this.p(t,s);void 0!==i&&this.u.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const s=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)s.unshift(c(t))}else void 0!==t&&s.push(c(t));return s}static p(t,s){const i=s.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this.v=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this.m=null,this._()}_(){this.S=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this.$(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this.P??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this.P?.delete(t)}$(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this.v=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return n(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this.P?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this.P?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}C(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor.p(t,i);if(void 0!==e&&!0===i.reflect){const o=(void 0!==i.converter?.toAttribute?i.converter:b).toAttribute(s,i.type);this.m=t,null==o?this.removeAttribute(e):this.setAttribute(e,o),this.m=null}}_$AK(t,s){const i=this.constructor,e=i.u.get(t);if(void 0!==e&&this.m!==e){const t=i.getPropertyOptions(e),o="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:b;this.m=e,this[e]=o.fromAttribute(s,t.type),this.m=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??S)(this[t],s))return;this.T(t,s,i)}!1===this.isUpdatePending&&(this.S=this.A())}T(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this.m!==t&&(this.M??=new Set).add(t)}async A(){this.isUpdatePending=!0;try{await this.S}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this.v){for(const[t,s]of this.v)this[t]=s;this.v=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.T(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this.P?.forEach((t=>t.hostUpdate?.())),this.update(s)):this.k()}catch(s){throw t=!1,this.k(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this.P?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}k(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this.S}shouldUpdate(t){return!0}update(t){this.M&&=this.M.forEach((t=>this.C(t,this[t]))),this.k()}updated(t){}firstUpdated(t){}}$.elementStyles=[],$.shadowRootOptions={mode:"open"},$[_("elementProperties")]=new Map,$[_("finalized")]=new Map,g?.({ReactiveElement:$}),(v.reactiveElementVersions??=[]).push("2.0.4");
-/**
- * @license
- * Copyright 2017 Google LLC
- * SPDX-License-Identifier: BSD-3-Clause
- */
-const P=globalThis,C=P.trustedTypes,T=C?C.createPolicy("lit-html",{createHTML:t=>t}):void 0,x="$lit$",A=`lit$${Math.random().toFixed(9).slice(2)}$`,M="?"+A,k=`<${M}>`,E=document,U=()=>E.createComment(""),N=t=>null===t||"object"!=typeof t&&"function"!=typeof t,O=Array.isArray,R=t=>O(t)||"function"==typeof t?.[Symbol.iterator],z="[ \t\n\f\r]",V=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,L=/-->/g,I=/>/g,j=RegExp(`>|${z}(?:([^\\s"'>=/]+)(${z}*=${z}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),D=/'/g,H=/"/g,B=/^(?:script|style|textarea|title)$/i,W=t=>(s,...i)=>({_$litType$:t,strings:s,values:i}),q=W(1),J=W(2),Z=Symbol.for("lit-noChange"),F=Symbol.for("lit-nothing"),G=new WeakMap,K=E.createTreeWalker(E,129);function Q(t,s){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==T?T.createHTML(s):s}const X=(t,s)=>{const i=t.length-1,e=[];let o,h=2===s?"<svg>":"",r=V;for(let s=0;s<i;s++){const i=t[s];let n,c,a=-1,l=0;for(;l<i.length&&(r.lastIndex=l,c=r.exec(i),null!==c);)l=r.lastIndex,r===V?"!--"===c[1]?r=L:void 0!==c[1]?r=I:void 0!==c[2]?(B.test(c[2])&&(o=RegExp("</"+c[2],"g")),r=j):void 0!==c[3]&&(r=j):r===j?">"===c[0]?(r=o??V,a=-1):void 0===c[1]?a=-2:(a=r.lastIndex-c[2].length,n=c[1],r=void 0===c[3]?j:'"'===c[3]?H:D):r===H||r===D?r=j:r===L||r===I?r=V:(r=j,o=void 0);const u=r===j&&t[s+1].startsWith("/>")?" ":"";h+=r===V?i+k:a>=0?(e.push(n),i.slice(0,a)+x+i.slice(a)+A+u):i+A+(-2===a?s:u)}return[Q(t,h+(t[i]||"<?>")+(2===s?"</svg>":"")),e]};class Y{constructor({strings:t,_$litType$:s},i){let e;this.parts=[];let o=0,h=0;const r=t.length-1,n=this.parts,[c,a]=X(t,s);if(this.el=Y.createElement(c,i),K.currentNode=this.el.content,2===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(e=K.nextNode())&&n.length<r;){if(1===e.nodeType){if(e.hasAttributes())for(const t of e.getAttributeNames())if(t.endsWith(x)){const s=a[h++],i=e.getAttribute(t).split(A),r=/([.?@])?(.*)/.exec(s);n.push({type:1,index:o,name:r[2],strings:i,ctor:"."===r[1]?ot:"?"===r[1]?ht:"@"===r[1]?rt:et}),e.removeAttribute(t)}else t.startsWith(A)&&(n.push({type:6,index:o}),e.removeAttribute(t));if(B.test(e.tagName)){const t=e.textContent.split(A),s=t.length-1;if(s>0){e.textContent=C?C.emptyScript:"";for(let i=0;i<s;i++)e.append(t[i],U()),K.nextNode(),n.push({type:2,index:++o});e.append(t[s],U())}}}else if(8===e.nodeType)if(e.data===M)n.push({type:2,index:o});else{let t=-1;for(;-1!==(t=e.data.indexOf(A,t+1));)n.push({type:7,index:o}),t+=A.length-1}o++}}static createElement(t,s){const i=E.createElement("template");return i.innerHTML=t,i}}function tt(t,s,i=t,e){if(s===Z)return s;let o=void 0!==e?i.U?.[e]:i.N;const h=N(s)?void 0:s._$litDirective$;return o?.constructor!==h&&(o?._$AO?.(!1),void 0===h?o=void 0:(o=new h(t),o._$AT(t,i,e)),void 0!==e?(i.U??=[])[e]=o:i.N=o),void 0!==o&&(s=tt(t,o._$AS(t,s.values),o,e)),s}class st{constructor(t,s){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=s}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}O(t){const{el:{content:s},parts:i}=this._$AD,e=(t?.creationScope??E).importNode(s,!0);K.currentNode=e;let o=K.nextNode(),h=0,r=0,n=i[0];for(;void 0!==n;){if(h===n.index){let s;2===n.type?s=new it(o,o.nextSibling,this,t):1===n.type?s=new n.ctor(o,n.name,n.strings,this,t):6===n.type&&(s=new nt(o,this,t)),this._$AV.push(s),n=i[++r]}h!==n?.index&&(o=K.nextNode(),h++)}return K.currentNode=E,e}R(t){let s=0;for(const i of this._$AV)void 0!==i&&(void 0!==i.strings?(i._$AI(t,i,s),s+=i.strings.length-2):i._$AI(t[s])),s++}}class it{get _$AU(){return this._$AM?._$AU??this.V}constructor(t,s,i,e){this.type=2,this._$AH=F,this._$AN=void 0,this._$AA=t,this._$AB=s,this._$AM=i,this.options=e,this.V=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const s=this._$AM;return void 0!==s&&11===t?.nodeType&&(t=s.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,s=this){t=tt(this,t,s),N(t)?t===F||null==t||""===t?(this._$AH!==F&&this._$AR(),this._$AH=F):t!==this._$AH&&t!==Z&&this.L(t):void 0!==t._$litType$?this.I(t):void 0!==t.nodeType?this.j(t):R(t)?this.D(t):this.L(t)}H(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}j(t){this._$AH!==t&&(this._$AR(),this._$AH=this.H(t))}L(t){this._$AH!==F&&N(this._$AH)?this._$AA.nextSibling.data=t:this.j(E.createTextNode(t)),this._$AH=t}I(t){const{values:s,_$litType$:i}=t,e="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=Y.createElement(Q(i.h,i.h[0]),this.options)),i);if(this._$AH?._$AD===e)this._$AH.R(s);else{const t=new st(e,this),i=t.O(this.options);t.R(s),this.j(i),this._$AH=t}}_$AC(t){let s=G.get(t.strings);return void 0===s&&G.set(t.strings,s=new Y(t)),s}D(t){O(this._$AH)||(this._$AH=[],this._$AR());const s=this._$AH;let i,e=0;for(const o of t)e===s.length?s.push(i=new it(this.H(U()),this.H(U()),this,this.options)):i=s[e],i._$AI(o),e++;e<s.length&&(this._$AR(i&&i._$AB.nextSibling,e),s.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t&&t!==this._$AB;){const s=t.nextSibling;t.remove(),t=s}}setConnected(t){void 0===this._$AM&&(this.V=t,this._$AP?.(t))}}class et{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,s,i,e,o){this.type=1,this._$AH=F,this._$AN=void 0,this.element=t,this.name=s,this._$AM=e,this.options=o,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=F}_$AI(t,s=this,i,e){const o=this.strings;let h=!1;if(void 0===o)t=tt(this,t,s,0),h=!N(t)||t!==this._$AH&&t!==Z,h&&(this._$AH=t);else{const e=t;let r,n;for(t=o[0],r=0;r<o.length-1;r++)n=tt(this,e[i+r],s,r),n===Z&&(n=this._$AH[r]),h||=!N(n)||n!==this._$AH[r],n===F?t=F:t!==F&&(t+=(n??"")+o[r+1]),this._$AH[r]=n}h&&!e&&this.B(t)}B(t){t===F?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class ot extends et{constructor(){super(...arguments),this.type=3}B(t){this.element[this.name]=t===F?void 0:t}}class ht extends et{constructor(){super(...arguments),this.type=4}B(t){this.element.toggleAttribute(this.name,!!t&&t!==F)}}class rt extends et{constructor(t,s,i,e,o){super(t,s,i,e,o),this.type=5}_$AI(t,s=this){if((t=tt(this,t,s,0)??F)===Z)return;const i=this._$AH,e=t===F&&i!==F||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,o=t!==F&&(i===F||e);e&&this.element.removeEventListener(this.name,this,i),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class nt{constructor(t,s,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=s,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){tt(this,t)}}const ct={W:x,q:A,J:M,Z:1,F:X,G:st,K:R,X:tt,Y:it,tt:et,st:ht,it:rt,et:ot,ot:nt},at=P.litHtmlPolyfillSupport;at?.(Y,it),(P.litHtmlVersions??=[]).push("3.1.3");const lt=(t,s,i)=>{const e=i?.renderBefore??s;let o=e._$litPart$;if(void 0===o){const t=i?.renderBefore??null;e._$litPart$=o=new it(s.insertBefore(U(),t),t,void 0,i??{})}return o._$AI(t),o};
-/**
- * @license
- * Copyright 2017 Google LLC
- * SPDX-License-Identifier: BSD-3-Clause
- */class ut extends ${constructor(){super(...arguments),this.renderOptions={host:this},this.ht=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.ht=lt(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.ht?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.ht?.setConnected(!1)}render(){return Z}}ut._$litElement$=!0,ut[("finalized","finalized")]=!0,globalThis.litElementHydrateSupport?.({LitElement:ut});const dt=globalThis.litElementPolyfillSupport;dt?.({LitElement:ut});const ft={_$AK:(t,s,i)=>{t._$AK(s,i)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push("4.0.5");
-/**
- * @license
- * Copyright 2022 Google LLC
- * SPDX-License-Identifier: BSD-3-Clause
- */
-const pt=!1;export{o as CSSResult,ut as LitElement,$ as ReactiveElement,ft as _$LE,ct as _$LH,n as adoptStyles,r as css,b as defaultConverter,c as getCompatibleStyle,q as html,pt as isServer,Z as noChange,S as notEqual,F as nothing,lt as render,s as supportsAdoptingStyleSheets,J as svg,h as unsafeCSS};
-//# sourceMappingURL=lit-core.min.js.map
diff --git a/public/lib/milligram.css b/public/lib/milligram.css
deleted file mode 100644
index 8118dee..0000000
--- a/public/lib/milligram.css
+++ /dev/null
@@ -1,635 +0,0 @@
-/*!
-  * Milligram v1.4.1
-  * https://milligram.io
-  *
-  * Copyright (c) 2020 CJ Patoilo
-  * Licensed under the MIT license
- */
-
-*,
-*:after,
-*:before {
-  box-sizing: inherit;
-}
-
-html {
-  box-sizing: border-box;
-  font-size: 62.5%;
-}
-
-body {
-  color: #606c76;
-  font-family: 'Roboto', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
-  font-size: 1.6em;
-  font-weight: 300;
-  letter-spacing: .01em;
-  line-height: 1.6;
-}
-
-blockquote {
-  border-left: 0.3rem solid #d1d1d1;
-  margin-left: 0;
-  margin-right: 0;
-  padding: 1rem 1.5rem;
-}
-
-blockquote *:last-child {
-  margin-bottom: 0;
-}
-
-.button,
-button,
-input[type='button'],
-input[type='reset'],
-input[type='submit'] {
-  background-color: #9b4dca;
-  border: 0.1rem solid #9b4dca;
-  border-radius: .4rem;
-  color: #fff;
-  cursor: pointer;
-  display: inline-block;
-  font-size: 1.1rem;
-  font-weight: 700;
-  height: 3.8rem;
-  letter-spacing: .1rem;
-  line-height: 3.8rem;
-  padding: 0 3.0rem;
-  text-align: center;
-  text-decoration: none;
-  text-transform: uppercase;
-  white-space: nowrap;
-}
-
-.button:focus, .button:hover,
-button:focus,
-button:hover,
-input[type='button']:focus,
-input[type='button']:hover,
-input[type='reset']:focus,
-input[type='reset']:hover,
-input[type='submit']:focus,
-input[type='submit']:hover {
-  background-color: #606c76;
-  border-color: #606c76;
-  color: #fff;
-  outline: 0;
-}
-
-.button[disabled],
-button[disabled],
-input[type='button'][disabled],
-input[type='reset'][disabled],
-input[type='submit'][disabled] {
-  cursor: default;
-  opacity: .5;
-}
-
-.button[disabled]:focus, .button[disabled]:hover,
-button[disabled]:focus,
-button[disabled]:hover,
-input[type='button'][disabled]:focus,
-input[type='button'][disabled]:hover,
-input[type='reset'][disabled]:focus,
-input[type='reset'][disabled]:hover,
-input[type='submit'][disabled]:focus,
-input[type='submit'][disabled]:hover {
-  background-color: #9b4dca;
-  border-color: #9b4dca;
-}
-
-.button.button-outline,
-button.button-outline,
-input[type='button'].button-outline,
-input[type='reset'].button-outline,
-input[type='submit'].button-outline {
-  background-color: transparent;
-  color: #9b4dca;
-}
-
-.button.button-outline:focus, .button.button-outline:hover,
-button.button-outline:focus,
-button.button-outline:hover,
-input[type='button'].button-outline:focus,
-input[type='button'].button-outline:hover,
-input[type='reset'].button-outline:focus,
-input[type='reset'].button-outline:hover,
-input[type='submit'].button-outline:focus,
-input[type='submit'].button-outline:hover {
-  background-color: transparent;
-  border-color: #606c76;
-  color: #606c76;
-}
-
-.button.button-outline[disabled]:focus, .button.button-outline[disabled]:hover,
-button.button-outline[disabled]:focus,
-button.button-outline[disabled]:hover,
-input[type='button'].button-outline[disabled]:focus,
-input[type='button'].button-outline[disabled]:hover,
-input[type='reset'].button-outline[disabled]:focus,
-input[type='reset'].button-outline[disabled]:hover,
-input[type='submit'].button-outline[disabled]:focus,
-input[type='submit'].button-outline[disabled]:hover {
-  border-color: inherit;
-  color: #9b4dca;
-}
-
-.button.button-clear,
-button.button-clear,
-input[type='button'].button-clear,
-input[type='reset'].button-clear,
-input[type='submit'].button-clear {
-  background-color: transparent;
-  border-color: transparent;
-  color: #9b4dca;
-}
-
-.button.button-clear:focus, .button.button-clear:hover,
-button.button-clear:focus,
-button.button-clear:hover,
-input[type='button'].button-clear:focus,
-input[type='button'].button-clear:hover,
-input[type='reset'].button-clear:focus,
-input[type='reset'].button-clear:hover,
-input[type='submit'].button-clear:focus,
-input[type='submit'].button-clear:hover {
-  background-color: transparent;
-  border-color: transparent;
-  color: #606c76;
-}
-
-.button.button-clear[disabled]:focus, .button.button-clear[disabled]:hover,
-button.button-clear[disabled]:focus,
-button.button-clear[disabled]:hover,
-input[type='button'].button-clear[disabled]:focus,
-input[type='button'].button-clear[disabled]:hover,
-input[type='reset'].button-clear[disabled]:focus,
-input[type='reset'].button-clear[disabled]:hover,
-input[type='submit'].button-clear[disabled]:focus,
-input[type='submit'].button-clear[disabled]:hover {
-  color: #9b4dca;
-}
-
-code {
-  background: #f4f5f6;
-  border-radius: .4rem;
-  font-size: 86%;
-  margin: 0 .2rem;
-  padding: .2rem .5rem;
-  white-space: nowrap;
-}
-
-pre {
-  background: #f4f5f6;
-  border-left: 0.3rem solid #9b4dca;
-  overflow-y: hidden;
-}
-
-pre > code {
-  border-radius: 0;
-  display: block;
-  padding: 1rem 1.5rem;
-  white-space: pre;
-}
-
-hr {
-  border: 0;
-  border-top: 0.1rem solid #f4f5f6;
-  margin: 3.0rem 0;
-}
-
-input[type='color'],
-input[type='date'],
-input[type='datetime'],
-input[type='datetime-local'],
-input[type='email'],
-input[type='month'],
-input[type='number'],
-input[type='password'],
-input[type='search'],
-input[type='tel'],
-input[type='text'],
-input[type='url'],
-input[type='week'],
-input:not([type]),
-textarea,
-select {
-  -webkit-appearance: none;
-  background-color: transparent;
-  border: 0.1rem solid #d1d1d1;
-  border-radius: .4rem;
-  box-shadow: none;
-  box-sizing: inherit;
-  height: 3.8rem;
-  padding: .6rem 1.0rem .7rem;
-  width: 100%;
-}
-
-input[type='color']:focus,
-input[type='date']:focus,
-input[type='datetime']:focus,
-input[type='datetime-local']:focus,
-input[type='email']:focus,
-input[type='month']:focus,
-input[type='number']:focus,
-input[type='password']:focus,
-input[type='search']:focus,
-input[type='tel']:focus,
-input[type='text']:focus,
-input[type='url']:focus,
-input[type='week']:focus,
-input:not([type]):focus,
-textarea:focus,
-select:focus {
-  border-color: #9b4dca;
-  outline: 0;
-}
-
-select {
-  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 8" width="30"><path fill="%23d1d1d1" d="M0,0l6,8l6-8"/></svg>') center right no-repeat;
-  padding-right: 3.0rem;
-}
-
-select:focus {
-  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 8" width="30"><path fill="%239b4dca" d="M0,0l6,8l6-8"/></svg>');
-}
-
-select[multiple] {
-  background: none;
-  height: auto;
-}
-
-textarea {
-  min-height: 6.5rem;
-}
-
-label,
-legend {
-  display: block;
-  font-size: 1.6rem;
-  font-weight: 700;
-  margin-bottom: .5rem;
-}
-
-fieldset {
-  border-width: 0;
-  padding: 0;
-}
-
-input[type='checkbox'],
-input[type='radio'] {
-  display: inline;
-}
-
-.label-inline {
-  display: inline-block;
-  font-weight: normal;
-  margin-left: .5rem;
-}
-
-.container {
-  margin: 0 auto;
-  max-width: 112.0rem;
-  padding: 0 2.0rem;
-  position: relative;
-  width: 100%;
-}
-
-.row {
-  display: flex;
-  flex-direction: column;
-  padding: 0;
-  width: 100%;
-}
-
-.row.row-no-padding {
-  padding: 0;
-}
-
-.row.row-no-padding > .column {
-  padding: 0;
-}
-
-.row.row-wrap {
-  flex-wrap: wrap;
-}
-
-.row.row-top {
-  align-items: flex-start;
-}
-
-.row.row-bottom {
-  align-items: flex-end;
-}
-
-.row.row-center {
-  align-items: center;
-}
-
-.row.row-stretch {
-  align-items: stretch;
-}
-
-.row.row-baseline {
-  align-items: baseline;
-}
-
-.row .column {
-  display: block;
-  flex: 1 1 auto;
-  margin-left: 0;
-  max-width: 100%;
-  width: 100%;
-}
-
-.row .column.column-offset-10 {
-  margin-left: 10%;
-}
-
-.row .column.column-offset-20 {
-  margin-left: 20%;
-}
-
-.row .column.column-offset-25 {
-  margin-left: 25%;
-}
-
-.row .column.column-offset-33, .row .column.column-offset-34 {
-  margin-left: 33.3333%;
-}
-
-.row .column.column-offset-40 {
-  margin-left: 40%;
-}
-
-.row .column.column-offset-50 {
-  margin-left: 50%;
-}
-
-.row .column.column-offset-60 {
-  margin-left: 60%;
-}
-
-.row .column.column-offset-66, .row .column.column-offset-67 {
-  margin-left: 66.6666%;
-}
-
-.row .column.column-offset-75 {
-  margin-left: 75%;
-}
-
-.row .column.column-offset-80 {
-  margin-left: 80%;
-}
-
-.row .column.column-offset-90 {
-  margin-left: 90%;
-}
-
-.row .column.column-10 {
-  flex: 0 0 10%;
-  max-width: 10%;
-}
-
-.row .column.column-20 {
-  flex: 0 0 20%;
-  max-width: 20%;
-}
-
-.row .column.column-25 {
-  flex: 0 0 25%;
-  max-width: 25%;
-}
-
-.row .column.column-33, .row .column.column-34 {
-  flex: 0 0 33.3333%;
-  max-width: 33.3333%;
-}
-
-.row .column.column-40 {
-  flex: 0 0 40%;
-  max-width: 40%;
-}
-
-.row .column.column-50 {
-  flex: 0 0 50%;
-  max-width: 50%;
-}
-
-.row .column.column-60 {
-  flex: 0 0 60%;
-  max-width: 60%;
-}
-
-.row .column.column-66, .row .column.column-67 {
-  flex: 0 0 66.6666%;
-  max-width: 66.6666%;
-}
-
-.row .column.column-75 {
-  flex: 0 0 75%;
-  max-width: 75%;
-}
-
-.row .column.column-80 {
-  flex: 0 0 80%;
-  max-width: 80%;
-}
-
-.row .column.column-90 {
-  flex: 0 0 90%;
-  max-width: 90%;
-}
-
-.row .column .column-top {
-  align-self: flex-start;
-}
-
-.row .column .column-bottom {
-  align-self: flex-end;
-}
-
-.row .column .column-center {
-  align-self: center;
-}
-
-@media (min-width: 40rem) {
-  .row {
-    flex-direction: row;
-    margin-left: -1.0rem;
-    width: calc(100% + 2.0rem);
-  }
-  .row .column {
-    margin-bottom: inherit;
-    padding: 0 1.0rem;
-  }
-}
-
-a {
-  color: #9b4dca;
-  text-decoration: none;
-}
-
-a:focus, a:hover {
-  color: #606c76;
-}
-
-dl,
-ol,
-ul {
-  list-style: none;
-  margin-top: 0;
-  padding-left: 0;
-}
-
-dl dl,
-dl ol,
-dl ul,
-ol dl,
-ol ol,
-ol ul,
-ul dl,
-ul ol,
-ul ul {
-  font-size: 90%;
-  margin: 1.5rem 0 1.5rem 3.0rem;
-}
-
-ol {
-  list-style: decimal inside;
-}
-
-ul {
-  list-style: circle inside;
-}
-
-.button,
-button,
-dd,
-dt,
-li {
-  margin-bottom: 1.0rem;
-}
-
-fieldset,
-input,
-select,
-textarea {
-  margin-bottom: 1.5rem;
-}
-
-blockquote,
-dl,
-figure,
-form,
-ol,
-p,
-pre,
-table,
-ul {
-  margin-bottom: 2.5rem;
-}
-
-table {
-  border-spacing: 0;
-  display: block;
-  overflow-x: auto;
-  text-align: left;
-  width: 100%;
-}
-
-td,
-th {
-  border-bottom: 0.1rem solid #e1e1e1;
-  padding: 1.2rem 1.5rem;
-}
-
-td:first-child,
-th:first-child {
-  padding-left: 0;
-}
-
-td:last-child,
-th:last-child {
-  padding-right: 0;
-}
-
-@media (min-width: 40rem) {
-  table {
-    display: table;
-    overflow-x: initial;
-  }
-}
-
-b,
-strong {
-  font-weight: bold;
-}
-
-p {
-  margin-top: 0;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  font-weight: 300;
-  letter-spacing: -.1rem;
-  margin-bottom: 2.0rem;
-  margin-top: 0;
-}
-
-h1 {
-  font-size: 4.6rem;
-  line-height: 1.2;
-}
-
-h2 {
-  font-size: 3.6rem;
-  line-height: 1.25;
-}
-
-h3 {
-  font-size: 2.8rem;
-  line-height: 1.3;
-}
-
-h4 {
-  font-size: 2.2rem;
-  letter-spacing: -.08rem;
-  line-height: 1.35;
-}
-
-h5 {
-  font-size: 1.8rem;
-  letter-spacing: -.05rem;
-  line-height: 1.5;
-}
-
-h6 {
-  font-size: 1.6rem;
-  letter-spacing: 0;
-  line-height: 1.4;
-}
-
-img {
-  max-width: 100%;
-}
-
-.clearfix:after {
-  clear: both;
-  content: ' ';
-  display: table;
-}
-
-.float-left {
-  float: left;
-}
-
-.float-right {
-  float: right;
-}
-
-/*# sourceMappingURL=milligram.css.map */
\ No newline at end of file
diff --git a/public/lib/normalize.css b/public/lib/normalize.css
deleted file mode 100644
index 192eb9c..0000000
--- a/public/lib/normalize.css
+++ /dev/null
@@ -1,349 +0,0 @@
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
-
-/* Document
-   ========================================================================== */
-
-/**
- * 1. Correct the line height in all browsers.
- * 2. Prevent adjustments of font size after orientation changes in iOS.
- */
-
-html {
-  line-height: 1.15; /* 1 */
-  -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/* Sections
-   ========================================================================== */
-
-/**
- * Remove the margin in all browsers.
- */
-
-body {
-  margin: 0;
-}
-
-/**
- * Render the `main` element consistently in IE.
- */
-
-main {
-  display: block;
-}
-
-/**
- * Correct the font size and margin on `h1` elements within `section` and
- * `article` contexts in Chrome, Firefox, and Safari.
- */
-
-h1 {
-  font-size: 2em;
-  margin: 0.67em 0;
-}
-
-/* Grouping content
-   ========================================================================== */
-
-/**
- * 1. Add the correct box sizing in Firefox.
- * 2. Show the overflow in Edge and IE.
- */
-
-hr {
-  box-sizing: content-box; /* 1 */
-  height: 0; /* 1 */
-  overflow: visible; /* 2 */
-}
-
-/**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
-pre {
-  font-family: monospace, monospace; /* 1 */
-  font-size: 1em; /* 2 */
-}
-
-/* Text-level semantics
-   ========================================================================== */
-
-/**
- * Remove the gray background on active links in IE 10.
- */
-
-a {
-  background-color: transparent;
-}
-
-/**
- * 1. Remove the bottom border in Chrome 57-
- * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
- */
-
-abbr[title] {
-  border-bottom: none; /* 1 */
-  text-decoration: underline; /* 2 */
-  text-decoration: underline dotted; /* 2 */
-}
-
-/**
- * Add the correct font weight in Chrome, Edge, and Safari.
- */
-
-b,
-strong {
-  font-weight: bolder;
-}
-
-/**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
-code,
-kbd,
-samp {
-  font-family: monospace, monospace; /* 1 */
-  font-size: 1em; /* 2 */
-}
-
-/**
- * Add the correct font size in all browsers.
- */
-
-small {
-  font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` elements from affecting the line height in
- * all browsers.
- */
-
-sub,
-sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-sup {
-  top: -0.5em;
-}
-
-/* Embedded content
-   ========================================================================== */
-
-/**
- * Remove the border on images inside links in IE 10.
- */
-
-img {
-  border-style: none;
-}
-
-/* Forms
-   ========================================================================== */
-
-/**
- * 1. Change the font styles in all browsers.
- * 2. Remove the margin in Firefox and Safari.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
-  font-family: inherit; /* 1 */
-  font-size: 100%; /* 1 */
-  line-height: 1.15; /* 1 */
-  margin: 0; /* 2 */
-}
-
-/**
- * Show the overflow in IE.
- * 1. Show the overflow in Edge.
- */
-
-button,
-input { /* 1 */
-  overflow: visible;
-}
-
-/**
- * Remove the inheritance of text transform in Edge, Firefox, and IE.
- * 1. Remove the inheritance of text transform in Firefox.
- */
-
-button,
-select { /* 1 */
-  text-transform: none;
-}
-
-/**
- * Correct the inability to style clickable types in iOS and Safari.
- */
-
-button,
-[type="button"],
-[type="reset"],
-[type="submit"] {
-  -webkit-appearance: button;
-}
-
-/**
- * Remove the inner border and padding in Firefox.
- */
-
-button::-moz-focus-inner,
-[type="button"]::-moz-focus-inner,
-[type="reset"]::-moz-focus-inner,
-[type="submit"]::-moz-focus-inner {
-  border-style: none;
-  padding: 0;
-}
-
-/**
- * Restore the focus styles unset by the previous rule.
- */
-
-button:-moz-focusring,
-[type="button"]:-moz-focusring,
-[type="reset"]:-moz-focusring,
-[type="submit"]:-moz-focusring {
-  outline: 1px dotted ButtonText;
-}
-
-/**
- * Correct the padding in Firefox.
- */
-
-fieldset {
-  padding: 0.35em 0.75em 0.625em;
-}
-
-/**
- * 1. Correct the text wrapping in Edge and IE.
- * 2. Correct the color inheritance from `fieldset` elements in IE.
- * 3. Remove the padding so developers are not caught out when they zero out
- *    `fieldset` elements in all browsers.
- */
-
-legend {
-  box-sizing: border-box; /* 1 */
-  color: inherit; /* 2 */
-  display: table; /* 1 */
-  max-width: 100%; /* 1 */
-  padding: 0; /* 3 */
-  white-space: normal; /* 1 */
-}
-
-/**
- * Add the correct vertical alignment in Chrome, Firefox, and Opera.
- */
-
-progress {
-  vertical-align: baseline;
-}
-
-/**
- * Remove the default vertical scrollbar in IE 10+.
- */
-
-textarea {
-  overflow: auto;
-}
-
-/**
- * 1. Add the correct box sizing in IE 10.
- * 2. Remove the padding in IE 10.
- */
-
-[type="checkbox"],
-[type="radio"] {
-  box-sizing: border-box; /* 1 */
-  padding: 0; /* 2 */
-}
-
-/**
- * Correct the cursor style of increment and decrement buttons in Chrome.
- */
-
-[type="number"]::-webkit-inner-spin-button,
-[type="number"]::-webkit-outer-spin-button {
-  height: auto;
-}
-
-/**
- * 1. Correct the odd appearance in Chrome and Safari.
- * 2. Correct the outline style in Safari.
- */
-
-[type="search"] {
-  -webkit-appearance: textfield; /* 1 */
-  outline-offset: -2px; /* 2 */
-}
-
-/**
- * Remove the inner padding in Chrome and Safari on macOS.
- */
-
-[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-
-/**
- * 1. Correct the inability to style clickable types in iOS and Safari.
- * 2. Change font properties to `inherit` in Safari.
- */
-
-::-webkit-file-upload-button {
-  -webkit-appearance: button; /* 1 */
-  font: inherit; /* 2 */
-}
-
-/* Interactive
-   ========================================================================== */
-
-/*
- * Add the correct display in Edge, IE 10+, and Firefox.
- */
-
-details {
-  display: block;
-}
-
-/*
- * Add the correct display in all browsers.
- */
-
-summary {
-  display: list-item;
-}
-
-/* Misc
-   ========================================================================== */
-
-/**
- * Add the correct display in IE 10+.
- */
-
-template {
-  display: none;
-}
-
-/**
- * Add the correct display in IE 10.
- */
-
-[hidden] {
-  display: none;
-}
diff --git a/public/logo.jpg b/public/logo.jpg
deleted file mode 100644
index 4941c28a16c88f78582a7b5d057fad4285f83680..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 45294
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

diff --git a/public/main.js b/public/main.js
deleted file mode 100644
index b08e1fc..0000000
--- a/public/main.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import { LitElement, html, css } from "lit";
-import { repeat } from "lit/directives/repeat.js";
-import "./components/nsite-card.js";
-import { pool, relays } from "./pool.js";
-
-export class NsiteApp extends LitElement {
-  static properties = {
-    selected: { state: true },
-    status: { state: true, type: String },
-    sites: { state: true, type: Array },
-  };
-
-  static styles = css`
-    .sites {
-      display: flex;
-      gap: 0.5em;
-      flex-wrap: wrap;
-    }
-  `;
-
-  seen = new Set();
-  constructor() {
-    super();
-    this.sites = [];
-  }
-
-  connectedCallback() {
-    super.connectedCallback();
-
-    pool.subscribeMany(relays, [{ kinds: [34128], "#d": ["/index.html"] }], {
-      onevent: (event) => {
-        if (this.seen.has(event.pubkey)) return;
-        this.seen.add(event.pubkey);
-
-        this.sites = [...this.sites, event].sort((a, b) => b.created_at - a.created_at);
-      },
-    });
-  }
-
-  render() {
-    return html`<div class="container">
-      <img src="/logo.jpg" style="max-height: 2in" />
-      <h1>nsite</h1>
-      <a class="navbar-item" href="https://github.com/hzrd149/nsite-ts" target="_blank">Source Code</a>
-
-      <h2 class="subtitle is-2">Latest nsites:</h2>
-      <div class="sites">
-        ${repeat(
-          this.sites,
-          (nsite) => nsite.pubkey,
-          (nsite) => html`<nsite-card .nsite="${nsite}"></nsite-card>`,
-        )}
-      </div>
-    </div>`;
-  }
-}
-
-customElements.define("nsite-app", NsiteApp);
diff --git a/public/pool.js b/public/pool.js
deleted file mode 100644
index d333c8c..0000000
--- a/public/pool.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import { SimplePool } from "nostr-tools";
-
-export const relays = ["wss://relay.damus.io", "wss://nos.lol", "wss://nostr.wine"];
-export const pool = new SimplePool();
diff --git a/public/upload/index.html b/public/upload/index.html
deleted file mode 100644
index 26165e3..0000000
--- a/public/upload/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>nsite</title>
-    <script type="importmap">
-      {
-        "imports": {
-          "blossom-client-sdk": "https://esm.run/blossom-client-sdk",
-          "nostr-tools": "https://esm.run/nostr-tools"
-        }
-      }
-    </script>
-  </head>
-  <body>
-    <label>relays</label>
-    <br />
-    <textarea type="text" id="relays" cols="50" rows="4"></textarea>
-    <br />
-    <br />
-    <label>blossom servers</label>
-    <br />
-    <textarea type="text" id="servers" cols="50" rows="4"></textarea>
-    <br />
-    <br />
-    <input type="file" id="files" webkitdirectory directory multiple />
-    <button id="upload-button">Upload nsite</button>
-    <div
-      id="log"
-      style="
-        max-height: 50em;
-        max-width: 80em;
-        width: 100%;
-        border: 1px solid gray;
-        min-height: 8em;
-        margin: 0.5em 0;
-        overflow: auto;
-        font-size: 0.8em;
-        gap: 0.1em;
-        white-space: pre;
-      "
-    ></div>
-    <script type="module" src="/upload/upload.js"></script>
-  </body>
-</html>
diff --git a/public/upload/upload.js b/public/upload/upload.js
deleted file mode 100644
index a0dda2b..0000000
--- a/public/upload/upload.js
+++ /dev/null
@@ -1,142 +0,0 @@
-import { multiServerUpload, BlossomClient } from "blossom-client-sdk";
-import { SimplePool } from "nostr-tools";
-
-const logContainer = document.getElementById("log");
-function log(...args) {
-  const el = document.createElement("div");
-  el.innerText = args.join(" ");
-  logContainer.appendChild(el);
-}
-
-const uploadButton = document.getElementById("upload-button");
-
-/** @type {HTMLInputElement} */
-const filesInput = document.getElementById("files");
-
-/**
- * @param {FileSystemFileEntry} fileEntry
- * @returns {File}
- */
-export function readFileSystemFile(fileEntry) {
-  return new Promise((res, rej) => {
-    fileEntry.file(
-      (file) => res(file),
-      (err) => rej(err),
-    );
-  });
-}
-
-/**
- * @param {FileSystemDirectoryEntry} directory
- * @returns {FileSystemEntry[]}
- */
-export function readFileSystemDirectory(directory) {
-  return new Promise((res, rej) => {
-    directory.createReader().readEntries(
-      (entries) => res(entries),
-      (err) => rej(err),
-    );
-  });
-}
-
-/**
- * uploads a file system entry to blossom servers
- * @param {FileSystemEntry} entry
- * @returns {{file: File, path: string, sha256: string}[]}
- */
-async function readFileSystemEntry(entry) {
-  const files = [];
-  if (entry instanceof FileSystemFileEntry && entry.isFile) {
-    try {
-      const file = await readFileSystemFile(entry);
-      const sha256 = await BlossomClient.getFileSha256(file);
-      const path = entry.fullPath;
-
-      files.push({ file, path, sha256 });
-    } catch (e) {
-      log("Failed to add" + entry.fullPath);
-      log(e.message);
-    }
-  } else if (entry instanceof FileSystemDirectoryEntry && entry.isDirectory) {
-    const entries = await readFileSystemDirectory(entry);
-    for (const e of entries) files.push(...(await readFileSystemEntry(e)));
-  }
-
-  return files;
-}
-
-/**
- * uploads a file system entry to blossom servers
- * @param {FileList} list
- * @returns {{file: File, path: string, sha256: string}[]}
- */
-async function readFileList(list) {
-  const files = [];
-  for (const file of list) {
-    const path = file.webkitRelativePath ? file.webkitRelativePath : file.name;
-    const sha256 = await BlossomClient.getFileSha256(file);
-    files.push({ file, path, sha256 });
-  }
-  return files;
-}
-
-const pool = new SimplePool();
-
-/**
- * uploads a file system entry to blossom servers
- * @param {{file:File, path:string}} files
- * @param {import("blossom-client-sdk").Signer} signer
- * @param {*} auth
- * @param {string[]} servers
- * @param {string[]} relays
- */
-async function uploadFiles(files, signer, auth, servers, relays) {
-  for (const { file, path, sha256 } of files) {
-    try {
-      const upload = multiServerUpload(servers, file, signer, auth);
-
-      let published = false;
-      for await (let { blob } of upload) {
-        if (!published) {
-          const signed = await signer({
-            kind: 34128,
-            content: "",
-            created_at: Math.round(Date.now() / 1000),
-            tags: [
-              ["d", path],
-              ["x", sha256],
-            ],
-          });
-          await pool.publish(relays, signed);
-
-          log("Published", path, sha256, signed.id);
-        }
-      }
-    } catch (error) {
-      log(`Failed to upload ${path}`, error);
-    }
-  }
-}
-
-uploadButton.addEventListener("click", async () => {
-  if (!window.nostr) return alert("Missing NIP-07 signer");
-
-  const signer = (draft) => window.nostr.signEvent(draft);
-  const relays = document.getElementById("relays").value.split(/\n|,/);
-  const servers = document.getElementById("servers").value.split(/\n|,/);
-
-  try {
-    if (filesInput.files) {
-      const files = await readFileList(filesInput.files);
-
-      // strip leading dir
-      for (const file of files) file.path = file.path.replace(/^[^\/]+\//, "/");
-
-      log(`Found ${files.length} files`);
-
-      await uploadFiles(files, signer, undefined, servers, relays);
-    }
-  } catch (error) {
-    alert(`Failed to upload files: ${error.message}`);
-  }
-});
diff --git a/src/env.ts b/src/env.ts
index e11001a..e32cdb4 100644
--- a/src/env.ts
+++ b/src/env.ts
@@ -1,6 +1,9 @@
 import "dotenv/config";
 import xbytes from "xbytes";
 
+const NSITE_HOMEPAGE = process.env.NSITE_HOMEPAGE;
+const NSITE_HOMEPAGE_DIR = process.env.NSITE_HOMEPAGE_DIR || "public";
+
 const LOOKUP_RELAYS = process.env.LOOKUP_RELAYS?.split(",").map((u) => u.trim()) ?? [
   "wss://user.kindpag.es/",
   "wss://purplepag.es/",
@@ -30,6 +33,8 @@ const SCREENSHOTS_DIR = process.env.SCREENSHOTS_DIR || "./screenshots";
 const ONION_HOST = process.env.ONION_HOST;
 
 export {
+  NSITE_HOMEPAGE,
+  NSITE_HOMEPAGE_DIR,
   SUBSCRIPTION_RELAYS,
   LOOKUP_RELAYS,
   BLOSSOM_SERVERS,
diff --git a/src/index.ts b/src/index.ts
index 9c283c5..f34293b 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -10,6 +10,8 @@ import mime from "mime";
 import morgan from "koa-morgan";
 import send from "koa-send";
 import { npubEncode } from "nostr-tools/nip19";
+import { spawn } from "node:child_process";
+import { nip19 } from "nostr-tools";
 
 import { resolveNpubFromHostname } from "./helpers/dns.js";
 import { getNsiteBlobs, parseNsiteEvent } from "./events.js";
@@ -19,6 +21,8 @@ import {
   ENABLE_SCREENSHOTS,
   HOST,
   NGINX_CACHE_DIR,
+  NSITE_HOMEPAGE,
+  NSITE_HOMEPAGE_DIR,
   NSITE_HOST,
   NSITE_PORT,
   ONION_HOST,
@@ -64,12 +68,12 @@ app.use(async (ctx, next) => {
 
   // resolve pubkey if not in cache
   if (pubkey === undefined) {
-    console.log(`${ctx.hostname}: Resolving`);
+    logger(`${ctx.hostname}: Resolving`);
     pubkey = await resolveNpubFromHostname(ctx.hostname);
 
     if (pubkey) {
       await userDomains.set(ctx.hostname, pubkey);
-      console.log(`${ctx.hostname}: Found ${pubkey}`);
+      logger(`${ctx.hostname}: Found ${pubkey}`);
     } else {
       await userDomains.set(ctx.hostname, "");
     }
@@ -194,14 +198,48 @@ if (ENABLE_SCREENSHOTS) {
   });
 }
 
+// download homepage
+if (NSITE_HOMEPAGE) {
+  try {
+    const log = logger.extend("homepage");
+    // create the public dir
+    try {
+      fs.mkdirSync(NSITE_HOMEPAGE_DIR);
+    } catch (error) {}
+
+    const bin = (await import.meta.resolve("nsite-cli")).replace("file://", "");
+
+    const decode = nip19.decode(NSITE_HOMEPAGE);
+    if (decode.type !== "nprofile") throw new Error("NSITE_HOMEPAGE must be a valid nprofile");
+
+    // use nsite-cli to download the homepage
+    const args = [bin, "download", NSITE_HOMEPAGE_DIR, nip19.npubEncode(decode.data.pubkey)];
+    if (decode.data.relays) args.push("--relays", decode.data.relays?.join(","));
+
+    const child = spawn("node", args, { stdio: "pipe" });
+
+    child.on("spawn", () => log("Downloading..."));
+    child.stdout.on("data", (line) => log(line.toString("utf-8")));
+    child.on("error", (e) => log("Failed", e));
+    child.on("close", (code) => {
+      if (code === 0) log("Finished");
+      else log("Failed");
+    });
+  } catch (error) {
+    console.log(`Failed to download homepage`);
+    console.log(error);
+  }
+}
+
 // serve static files from public
 const serveOptions: serve.Options = {
   hidden: true,
   maxAge: 60 * 60 * 1000,
   index: "index.html",
 };
+
 try {
-  const www = path.resolve(process.cwd(), "public");
+  const www = NSITE_HOMEPAGE_DIR;
   fs.statSync(www);
   app.use(serve(www, serveOptions));
 } catch (error) {
@@ -210,19 +248,19 @@ try {
 }
 
 app.listen({ host: NSITE_HOST, port: NSITE_PORT }, () => {
-  console.log("Started on port", HOST);
+  logger("Started on port", HOST);
 });
 
 // invalidate nginx cache and screenshots on new events
 if (SUBSCRIPTION_RELAYS.length > 0) {
-  console.log(`Listening for new nsite events on: ${SUBSCRIPTION_RELAYS.join(", ")}`);
+  logger(`Listening for new nsite events on: ${SUBSCRIPTION_RELAYS.join(", ")}`);
 
   subscribeForEvents(SUBSCRIPTION_RELAYS, async (event) => {
     try {
       const nsite = parseNsiteEvent(event);
       if (nsite) {
         if (NGINX_CACHE_DIR) {
-          console.log(`${nsite.pubkey}: Invalidating ${nsite.path}`);
+          logger(`${nsite.pubkey}: Invalidating ${nsite.path}`);
           await invalidatePubkeyPath(nsite.pubkey, nsite.path);
         }
 
@@ -243,7 +281,7 @@ process.on("unhandledRejection", (reason, promise) => {
 });
 
 async function shutdown() {
-  console.log("Shutting down...");
+  logger("Shutting down...");
   pool.destroy();
   process.exit(0);
 }
diff --git a/src/logger.ts b/src/logger.ts
index 7578cbd..b3dcf2c 100644
--- a/src/logger.ts
+++ b/src/logger.ts
@@ -1,8 +1,7 @@
 import debug from "debug";
 
 // enable default logging
-if (!debug.enabled("nsite")) debug.enable("nsite");
-if (!debug.enabled("nsite:*")) debug.enable("nsite:*");
+if (!debug.enabled("nsite")) debug.enable("nsite,nsite:*");
 
 const logger = debug("nsite");