From 616f9bd8c6b9dd8d2013c1d78ff0ee6aa6cb5da5 Mon Sep 17 00:00:00 2001 From: cryptocommuniums-afk Date: Mon, 2 Feb 2026 10:12:26 +0800 Subject: [PATCH] refactor: move project under backend --- .gitignore | 5 ++--- backend/.gitignore | 3 +++ README.md => backend/README.md | 2 ++ {app => backend/app}/.env | 2 +- {app => backend/app}/package-lock.json | 0 {app => backend/app}/package.json | 0 {app => backend/app}/src/public/app.js | 11 +++++++++-- {app => backend/app}/src/public/docs/index.html | 6 +++--- {app => backend/app}/src/public/index.html | 6 +++--- {app => backend/app}/src/public/openapi.json | 2 +- {app => backend/app}/src/public/styles.css | 0 {app => backend/app}/src/server.js | 0 {app => backend/app}/src/storage.js | 0 {app => backend/app}/src/utils/rpc.js | 0 {app => backend/app}/src/watchers/btcWatcher.js | 0 {app => backend/app}/src/watchers/evmWatcher.js | 0 {infra => backend/infra}/docker/btcpay-src | 0 {infra => backend/infra}/docker/btcpay/.env.example | 0 .../infra}/docker/btcpay/docker-compose.yml | 0 {infra => backend/infra}/docker/keagate-src | 0 {infra => backend/infra}/docker/keagate/local.json | 2 +- {infra => backend/infra}/docker/x402-rs | 0 .../infra}/nginx/sites-enabled/capay.conf | 12 ++++++++++-- {x402 => backend/x402}/facilitator/.env | 0 {x402 => backend/x402}/facilitator/config.json | 0 {x402 => backend/x402}/facilitator/networks.json | 0 {x402 => backend/x402}/facilitator/tokens.json | 0 27 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 backend/.gitignore rename README.md => backend/README.md (94%) rename {app => backend/app}/.env (96%) rename {app => backend/app}/package-lock.json (100%) rename {app => backend/app}/package.json (100%) rename {app => backend/app}/src/public/app.js (95%) rename {app => backend/app}/src/public/docs/index.html (91%) rename {app => backend/app}/src/public/index.html (97%) rename {app => backend/app}/src/public/openapi.json (99%) rename {app => backend/app}/src/public/styles.css (100%) rename {app => backend/app}/src/server.js (100%) rename {app => backend/app}/src/storage.js (100%) rename {app => backend/app}/src/utils/rpc.js (100%) rename {app => backend/app}/src/watchers/btcWatcher.js (100%) rename {app => backend/app}/src/watchers/evmWatcher.js (100%) rename {infra => backend/infra}/docker/btcpay-src (100%) rename {infra => backend/infra}/docker/btcpay/.env.example (100%) rename {infra => backend/infra}/docker/btcpay/docker-compose.yml (100%) rename {infra => backend/infra}/docker/keagate-src (100%) rename {infra => backend/infra}/docker/keagate/local.json (91%) rename {infra => backend/infra}/docker/x402-rs (100%) rename {infra => backend/infra}/nginx/sites-enabled/capay.conf (91%) rename {x402 => backend/x402}/facilitator/.env (100%) rename {x402 => backend/x402}/facilitator/config.json (100%) rename {x402 => backend/x402}/facilitator/networks.json (100%) rename {x402 => backend/x402}/facilitator/tokens.json (100%) diff --git a/.gitignore b/.gitignore index d0fa236..9fda91c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -app/node_modules/ -app/data/ -*.log +# Local artifacts created before moving into backend/ +app/ diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..d0fa236 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,3 @@ +app/node_modules/ +app/data/ +*.log diff --git a/README.md b/backend/README.md similarity index 94% rename from README.md rename to backend/README.md index 912da86..2e421b2 100644 --- a/README.md +++ b/backend/README.md @@ -24,6 +24,7 @@ npm run dev ``` 服务默认监听 `:3001`(可在 `app/.env` 修改)。 +通过域名访问时统一前缀为:`https://capay.hao.work/backend`。 ### 免费套餐低频监控 在 `app/.env` 中已设置: @@ -35,6 +36,7 @@ npm run dev 支持多个 Alchemy 免费 key:使用 `ALCHEMY_API_KEYS=key1,key2`,系统会按轮询周期进行轮转调用,降低单 key 的频率。 ## API 说明(简化版) +域名访问时请在路径前加 `/backend` 前缀(例如:`/backend/payments/orders`)。 ### 1) 开通商户 `POST /merchants` ```json diff --git a/app/.env b/backend/app/.env similarity index 96% rename from app/.env rename to backend/app/.env index 15fdbb3..0d8b275 100644 --- a/app/.env +++ b/backend/app/.env @@ -1,5 +1,5 @@ APP_PORT=3001 -APP_HOST=https://capay.hao.work +APP_HOST=https://capay.hao.work/backend PLAN=free ADMIN_API_KEY=whoami139 diff --git a/app/package-lock.json b/backend/app/package-lock.json similarity index 100% rename from app/package-lock.json rename to backend/app/package-lock.json diff --git a/app/package.json b/backend/app/package.json similarity index 100% rename from app/package.json rename to backend/app/package.json diff --git a/app/src/public/app.js b/backend/app/src/public/app.js similarity index 95% rename from app/src/public/app.js rename to backend/app/src/public/app.js index 3afcf9d..9e8c7ce 100644 --- a/app/src/public/app.js +++ b/backend/app/src/public/app.js @@ -21,7 +21,9 @@ const curlTrackTx = document.getElementById('curl-track-tx'); const webhookTip = document.getElementById('webhook-tip'); const STORAGE_KEY = 'capay_admin_key'; -const baseUrl = window.location.origin; +const basePath = window.location.pathname.replace(/\/[^/]*$/, '/').replace(/\/+$/, ''); +const apiBase = basePath || ''; +const baseUrl = `${window.location.origin}${apiBase}`; function setStatus(text, ok) { statusText.textContent = text; @@ -43,13 +45,18 @@ function setAdminKey(value) { localStorage.setItem(STORAGE_KEY, value); } +function withBase(path) { + if (!apiBase) return path; + return `${apiBase}${path}`; +} + async function request(path, options = {}) { const headers = options.headers ? { ...options.headers } : {}; const adminKey = getAdminKey(); if (adminKey) { headers['x-admin-key'] = adminKey; } - const res = await fetch(path, { ...options, headers }); + const res = await fetch(withBase(path), { ...options, headers }); if (!res.ok) { const text = await res.text(); let message = text; diff --git a/app/src/public/docs/index.html b/backend/app/src/public/docs/index.html similarity index 91% rename from app/src/public/docs/index.html rename to backend/app/src/public/docs/index.html index dc41deb..149452d 100644 --- a/app/src/public/docs/index.html +++ b/backend/app/src/public/docs/index.html @@ -5,7 +5,7 @@ Capay API Docs - +