基估宝 (Real-Time Fund) 是一个用于实时查看基金估值和重仓股表现的工具。它采用纯前端方案,通过 JSONP 直连东方财富、腾讯财经等公开接口,支持基金自选、持仓管理、定投计划、云端同步等功能。该项目基于 Next.js 构建,支持多种部署方式。


1. 系统要求与准备

1.1 本地开发环境

  • Node.js:版本 18.x 或 20.x(推荐 LTS)。
  • 包管理器npm(随 Node.js 安装)。
  • Git:用于克隆仓库。

1.2 可选的外部服务(用于完整功能)

  • Supabase 账户:用于云端数据同步、用户认证和 Edge Functions。
  • Web3Forms Access Key:用于反馈功能。
  • Google Analytics ID(可选):用于统计。

2. 安装与本地开发

2.1 克隆仓库并安装依赖

1
2
3
git clone https://github.com/hzm0321/real-time-fund.git
cd real-time-fund
npm install

2.2 配置环境变量

复制示例环境变量文件并填入必要信息:

1
cp env.example .env.local

编辑 .env.local 文件,至少需要配置以下核心变量(如需使用云端同步和登录功能):

1
2
NEXT_PUBLIC_SUPABASE_URL=你的Supabase项目URL
NEXT_PUBLIC_SUPABASE_ANON_KEY=你的Supabase匿名公钥

其他变量(如 NEXT_PUBLIC_WEB3FORMS_ACCESS_KEYNEXT_PUBLIC_GA_ID)可按需配置,不使用相关功能时可留空。

2.3 启动开发服务器

1
npm run dev

访问 http://localhost:3000 即可查看效果。


3. 部署方式

3.1 部署到 GitHub Pages(推荐,免费)

项目已配置 GitHub Actions,推送到 main 分支时会自动构建并部署。

  1. Fork 此仓库 到您的 GitHub 账户。
  2. 在您的仓库 Settings > Secrets and variables > Actions 中,添加 Repository secrets,字段名称需与 .env.local 中的变量名完全一致(如 NEXT_PUBLIC_SUPABASE_URL)。
  3. 确保您的仓库已启用 GitHub Pages,并将构建分支设置为 gh-pages(通常 Actions 会自动处理)。
  4. 推送代码到 main 分支,等待 Actions 完成。
  5. 访问您的 GitHub Pages 地址(通常为 https://<用户名>.github.io/real-time-fund)。

手动构建(可选):

1
npm run build

静态文件将生成在 out 目录,可手动部署到任意静态托管服务。

3.2 使用 Docker 部署(适合服务器)

项目提供了 Docker 镜像,支持两种配置方式:

3.2.1 从 Docker Hub 拉取(推荐)

1
2
3
4
5
6
7
8
9
10
11
# 拉取镜像
docker pull hzm0321/real-time-fund:latest

# 使用环境变量文件启动
docker run -d -p 3000:3000 --name real-time-fund --restart always --env-file .env hzm0321/real-time-fund:latest

# 或直接指定变量
docker run -d -p 3000:3000 --name real-time-fund --restart always \
-e NEXT_PUBLIC_SUPABASE_URL=你的URL \
-e NEXT_PUBLIC_SUPABASE_ANON_KEY=你的密钥 \
hzm0321/real-time-fund:latest

启动后访问 http://localhost:3000

3.2.2 从源码构建镜像

1
2
3
4
5
6
7
# 构建时注入配置(推荐)
docker build -t real-time-fund \
--build-arg NEXT_PUBLIC_SUPABASE_URL=你的URL \
--build-arg NEXT_PUBLIC_SUPABASE_ANON_KEY=你的密钥 .

# 或使用 docker-compose(读取同目录 .env 文件)
docker compose up -d

3.3 其他平台

  • Vercel:项目已包含 Vercel 配置,可直接一键部署。
  • Cloudflare Workers:项目根目录包含 wrangler.jsonc 配置文件,支持部署到 Cloudflare。

4. Supabase 配置(用于云端同步)

如需使用云端同步、用户登录等功能,需完成 Supabase 配置。

4.1 获取 API 密钥

  1. Supabase 创建项目。
  2. Project Settings > API 中,获取 Project URLanon public 密钥。
  3. 将这些值填入 .env.localNEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY

4.2 执行数据库初始化

项目根目录下的 /doc/supabase.sql 文件包含了创建 user_configs 表及策略的 SQL。

  1. 在 Supabase 控制台的 SQL Editor 中执行该文件内容。
  2. 这将创建用于存储用户配置、持仓、交易记录等数据的表。

4.3 (可选) 配置认证

  • 验证码登录:在 Supabase 控制台的 Authentication > Providers 中配置 Email 提供商,可调整验证码位数和邮件模板。
  • GitHub 登录:需在 GitHub 创建 OAuth App,并在 Supabase 的 Authentication > Providers 中启用 GitHub 并填入 Client ID 和 Secret。

4.4 (可选) 部署 Edge Functions

项目提供了 analyze-fund (用于基金截图OCR识别) 和 fund-valuation-ranking (估值排行代理) 两个云端函数。

  • 在 Supabase 控制台的 Edge Functions 中,按文档说明创建这两个函数。
  • analyze-fund 函数设置 AINX_API_KEY 等必要的 Secrets。

5. 常见问题排查

问题 可能原因 解决方案
本地开发 npm run dev 启动失败 Node.js 版本过低或依赖安装不完整 检查 Node.js 版本(>=18),删除 node_modulespackage-lock.json 后重新运行 npm install
部署后基金数据无法加载 API 跨域问题或接口地址变更 项目使用 JSONP 方案,通常无跨域问题。检查网络请求,确认接口返回数据正常。若接口变更,可更新 lib/api.js 中的接口地址。
云端同步失败或401错误 Supabase 环境变量未配置或 JWT 无效 确认 .env.local 中的 NEXT_PUBLIC_SUPABASE_URLANON_KEY 正确,并确保用户已登录。
Docker 容器中页面加载空白 环境变量未正确传递给容器 确保使用 -e--env-file 传递了所有必需的 NEXT_PUBLIC_* 变量。
GitHub Actions 部署失败 Secrets 未设置或构建脚本错误 检查仓库设置的 Secrets 是否与 .env.local 中变量名一致,并查看 Actions 日志中的具体错误。

6. 总结

Real-Time Fund 是一个功能丰富、部署灵活的基金数据查看工具。

核心部署路径

  1. 本地开发:克隆项目 → npm install → 配置 .env.localnpm run dev
  2. 静态托管(推荐):通过 GitHub Actions 自动部署到 GitHub Pages,或使用 npm run build 构建静态文件后手动部署到 Vercel、Netlify 等平台。
  3. 服务器/Docker 部署:拉取或构建 Docker 镜像,通过环境变量注入配置后运行。
  4. 完整功能配置:如需云端同步,则必须配置 Supabase 数据库和认证。

无论选择哪种方式,环境变量配置(特别是 Supabase 相关变量)都是成功运行的关键。建议先从本地开发开始,熟悉功能后再选择适合的部署方式。

项目地址:https://github.com/hzm0321/real-time-fund