跳转到内容
StackVitals 概览仪表盘,显示多个项目的部署状态、正常运行时间和成本

所有个人项目,一个仪表盘

正常运行时间、部署状态、云成本和 AI/CI 使用量——在一个轻量级、自托管、单数据库的仪表盘中,专为独立开发者打造。

监控内容

每个适配器都是可选的——只有在提供了相应凭证时才会激活。只启用你需要的适配器。

🟢

正常运行时间监控

对公共 URL 进行 HTTP 健康检查。响应时间、状态码、可用/不可用历史。

🚀

部署状态

AWS Amplify 构建状态、分支和最新部署时间戳一目了然。

💰

云成本

AWS Cost Explorer 当月与上月对比,按服务细分。

🤖

AI 使用量

OpenAI Token 总数、请求次数、缓存 Token 以及按 API Key 和模型的花费。

⚙️

CI 状态

GitHub Actions 工作流运行次数、最新状态、触发类型和定时运行健康状况。

🌐

域名健康

Cloudflare zone 状态、DNS 记录数、apex/www/MX 存在性和注册商过期信息。

✉️

邮件投递

Resend 发送域名验证状态,用于你的事务性邮件设置。

🗄️

数据库健康

Supabase 项目可达性以及来自你应用的仅计数聚合统计。

全方位查看

通过标签页视图查看应用详情、采集器诊断、域名清单、使用量汇总和成本明细。

应用详情视图,显示每个项目的提供商状态和健康检查
应用详情
采集器诊断,显示运行历史和错误状态
采集器
域名清单,显示 Cloudflare zone 和 DNS 状态
域名
使用量视图,显示 OpenAI Token 计数和 GitHub Actions 运行
使用量
成本明细,显示按 AWS 服务的当月与上月对比
成本

工作原理

两个组成部分,都在一个仓库中。没有常驻服务。

1

采集器收集数据

Node 脚本调用提供商 API(AWS、Supabase、OpenAI、GitHub、Cloudflare、Resend),将追加写入的快照存入你的 Supabase 数据库。它们通过 GitHub Actions 定时运行——从不在浏览器中执行。

2

仪表盘读取并渲染

静态 React/Vite 前端从 Supabase 读取预聚合的数据行并进行渲染。原始应用数据永远不会离开你的源项目——只有计数、状态和成本。

支持的适配器

每个适配器只采集仪表盘需要的数据,使用所需的最小权限。

适配器 采集内容 凭证 最小权限
HTTP 健康检查 公共 URL 的可用性和响应时间 无(只需项目的公共 URL)
Amplify 部署状态、分支、最新构建 AWS access key/secret、region 只读 Amplify 访问
AWS Cost Explorer 按 AWS 服务划分的账户级当月/上月成本 AWS access key/secret、region 只读 Cost Explorer 访问
Supabase 项目健康 仪表盘自身项目或被监控应用的可达性 Supabase 项目 URL + service-role key 项目范围的 service-role key
被监控应用 Supabase 聚合 通过自定义 RPC 获取的仅计数聚合统计 应用的 Supabase URL、anon key、service-role key、RPC 名称 Service-role key(仅计数 RPC——从不读取原始数据)
Resend 发送域名验证状态 Resend API key 只读 API key
OpenAI 使用量 Token 总数、请求次数、缓存 Token、按 Key/模型的花费 OpenAI admin API key Admin key(使用量端点需要)
GitHub Actions 工作流运行次数、最新状态、触发类型、分支、持续时间 仓库 owner/repo 映射 + 读取 token Actions: read
Cloudflare 域名 Zone 状态、DNS 记录数、apex/www/MX、注册商过期信息 Cloudflare API token、可选 account ID 只读 token(范围限定为 zones/DNS)

五步开始

1
克隆仓库 git clone https://github.com/SteveWang92/stackvitals && cd stackvitals && npm install
2
创建 Supabase 项目 应用 supabase/migrations/ 中的迁移并运行 supabase/seed.sql
3
配置环境 .env.example 复制为 .env,填入你的 Supabase URL、anon key 和允许的邮箱。
4
描述你的项目 projects.example.json 复制为 projects.config.json——至少需要一个 slug、名称和公共 URL 即可获得 HTTP 健康监控。
5
运行 npm run collect:status 采集数据,然后 npm run dev 查看仪表盘。