diff --git a/frontend/custom-river-config.json b/frontend/custom-river-config.json
new file mode 100644
index 000000000..aca537adf
--- /dev/null
+++ b/frontend/custom-river-config.json
@@ -0,0 +1,51 @@
+{
+ "theme": "wiz",
+ "enterprise": "river",
+ "branding": {
+ "name": "river",
+ "title": "river",
+ "site_id": 22,
+ "header_img": "/resources/riverlogo.svg",
+ "footer_img": "/resources/riverlogo.svg"
+ },
+ "dashboard": {
+ "widgets": [
+ {
+ "component": "fees",
+ "mobileOrder": 4
+ },
+ {
+ "component": "walletBalance",
+ "mobileOrder": 1,
+ "props": {
+ "wallet": "RIVER"
+ }
+ },
+ {
+ "component": "twitter",
+ "mobileOrder": 5,
+ "props": {
+ "handle": "River"
+ }
+ },
+ {
+ "component": "wallet",
+ "mobileOrder": 2,
+ "props": {
+ "wallet": "RIVER",
+ "period": "all"
+ }
+ },
+ {
+ "component": "blocks"
+ },
+ {
+ "component": "walletTransactions",
+ "mobileOrder": 3,
+ "props": {
+ "wallet": "RIVER"
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/frontend/src/index.mempool.river.html b/frontend/src/index.mempool.river.html
new file mode 100644
index 000000000..536912146
--- /dev/null
+++ b/frontend/src/index.mempool.river.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+ River | Invest in Bitcoin with confidence
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/resources/river/android-chrome-192x192.png b/frontend/src/resources/river/android-chrome-192x192.png
new file mode 100644
index 000000000..d93e04f57
Binary files /dev/null and b/frontend/src/resources/river/android-chrome-192x192.png differ
diff --git a/frontend/src/resources/river/android-chrome-512x512.png b/frontend/src/resources/river/android-chrome-512x512.png
new file mode 100644
index 000000000..6fe2c476b
Binary files /dev/null and b/frontend/src/resources/river/android-chrome-512x512.png differ
diff --git a/frontend/src/resources/river/apple-touch-icon.png b/frontend/src/resources/river/apple-touch-icon.png
new file mode 100644
index 000000000..f6d000039
Binary files /dev/null and b/frontend/src/resources/river/apple-touch-icon.png differ
diff --git a/frontend/src/resources/river/favicon-16x16.png b/frontend/src/resources/river/favicon-16x16.png
new file mode 100644
index 000000000..9820793f1
Binary files /dev/null and b/frontend/src/resources/river/favicon-16x16.png differ
diff --git a/frontend/src/resources/river/favicon-32x32.png b/frontend/src/resources/river/favicon-32x32.png
new file mode 100644
index 000000000..49ac8b1b0
Binary files /dev/null and b/frontend/src/resources/river/favicon-32x32.png differ
diff --git a/frontend/src/resources/river/favicon.ico b/frontend/src/resources/river/favicon.ico
new file mode 100644
index 000000000..7d109754b
Binary files /dev/null and b/frontend/src/resources/river/favicon.ico differ
diff --git a/frontend/src/resources/river/river-preview.png b/frontend/src/resources/river/river-preview.png
new file mode 100644
index 000000000..71ac98673
Binary files /dev/null and b/frontend/src/resources/river/river-preview.png differ
diff --git a/frontend/src/resources/river/site.webmanifest b/frontend/src/resources/river/site.webmanifest
new file mode 100644
index 000000000..45dc8a206
--- /dev/null
+++ b/frontend/src/resources/river/site.webmanifest
@@ -0,0 +1 @@
+{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/frontend/src/resources/riverlogo.svg b/frontend/src/resources/riverlogo.svg
new file mode 100644
index 000000000..3a6e28ce8
--- /dev/null
+++ b/frontend/src/resources/riverlogo.svg
@@ -0,0 +1,4 @@
+
diff --git a/production/mempool-build-all b/production/mempool-build-all
index 10ad179ea..3b42c08d9 100755
--- a/production/mempool-build-all
+++ b/production/mempool-build-all
@@ -131,7 +131,7 @@ export NVM_DIR="${HOME}/.nvm"
source "${NVM_DIR}/nvm.sh"
# what to look for
-frontends=(mainnet liquid onbtc bitb meta)
+frontends=(mainnet liquid onbtc bitb meta river)
backends=(mainnet testnet testnet4 signet liquid liquidtestnet onbtc bitb)
frontend_repos=()
backend_repos=()
diff --git a/production/mempool-start-all b/production/mempool-start-all
index 9d4c6ee58..0cd43431c 100755
--- a/production/mempool-start-all
+++ b/production/mempool-start-all
@@ -16,7 +16,7 @@ screen -dmS x startx
sleep 3
# start unfurlers for each frontend
-for site in mainnet liquid onbtc bitb meta;do
+for site in mainnet liquid onbtc bitb meta river;do
cd "$HOME/${site}/unfurler" && \
echo "starting mempool unfurler: ${site}" && \
screen -dmS "unfurler-${site}" sh -c 'while true;do npm run unfurler;sleep 2;done'
diff --git a/production/unfurler-config.river.json b/production/unfurler-config.river.json
new file mode 100644
index 000000000..219464437
--- /dev/null
+++ b/production/unfurler-config.river.json
@@ -0,0 +1,17 @@
+{
+ "SERVER": {
+ "HOST": "https://river.tk7.mempool.space",
+ "HTTP_PORT": 8007
+ },
+ "MEMPOOL": {
+ "HTTP_HOST": "http://127.0.0.1",
+ "HTTP_PORT": 7,
+ "NETWORK": "river"
+ },
+ "PUPPETEER": {
+ "CLUSTER_SIZE": 8,
+ "EXEC_PATH": "/usr/local/bin/chrome",
+ "MAX_PAGE_AGE": 86400,
+ "RENDER_TIMEOUT": 3000
+ }
+}
diff --git a/unfurler/src/routes.ts b/unfurler/src/routes.ts
index dcea29cde..9bf8faa2b 100644
--- a/unfurler/src/routes.ts
+++ b/unfurler/src/routes.ts
@@ -333,6 +333,28 @@ export const networks = {
routes: routes.lightning.routes,
}
}
+ },
+ river: {
+ networkName: 'River',
+ title: 'River | Invest in Bitcoin with confidence',
+ description: 'Easily buy Bitcoin in minutes. Zero fees on recurring buys. Invest in Bitcoin with confidence with world-class security.',
+ fallbackImg: '/resources/river/river-preview.jpg',
+ routes: { // only dynamic routes supported
+ block: routes.block,
+ address: routes.address,
+ wallet: routes.wallet,
+ tx: routes.tx,
+ mining: {
+ title: "Mining",
+ routes: {
+ pool: routes.mining.routes.pool,
+ }
+ },
+ lightning: {
+ title: "Lightning",
+ routes: routes.lightning.routes,
+ }
+ }
}
};