我做了个开源数据应用平台 Lumina:数据人的快乐,终于轮到我了(内含在线 Demo)

我做了个开源数据应用平台 Lumina:数据人的快乐,终于轮到我了(内含在线 Demo)

先上干货:在线 Demo 与账号

大家好,我是一个"不想复制 CSV 去做 KPI 报表"的数据人。某天我意识到,摸鱼不如摸框架,于是撸了个开源数据产品平台------Lumina。

一句话版本:

  • 连接数据库 → 配数据集(SQL/表)→ 配视图(图表)→ 拼仪表盘 → 订阅推送
  • 支持组织/角色权限、公共/签名分享、计划任务与通知通道
  • 前后端 TypeScript 单仓,工程化走起(日志、健康检查、只读演示环境......)

为什么做 Lumina?

  • 给业务看:别总让我发截图了,点开就能看,手机也能看,最好还能订阅到邮箱/群里。
  • 给数据看:一套数据集,多个视图复用。今天柱状图,明天折线图,后天 KPI 卡------别再写三遍 SQL。
  • 给工程看:别担心,日志、鉴权、限流、健康检查都安排了;二次开发也不痛(TypeScript 全栈)。

Lumina 能干啥?(一分钟懂)

  • 数据源(Datasource):连 MySQL(更多在路上),一键枚举库/表/字段,连接测试要有。
  • 数据集(Dataset):基于表或 SQL 建模,字段命名/别名/筛选项统一个口径。
  • 视图(View):拖拉拽绑定数据集,调一调维度/度量,预览看看效果,再发布。
  • 仪表盘(Dashboard):把多个视图拼在一起,布局一摆,领导 KPI 就上线了。
  • 通知(Notification)+ 订阅(Subscription):定时任务按 Cron 来,结果推送到邮箱/Webhook。
  • 分享(Public/Sign):公开链接或者签名访问,外部同学也能看(可精细控制)。
  • 权限与组织:多组织/多角色(Admin/Editor/Viewer),不给点权限,谁都动不了。

五分钟上手(不画饼,给路径)

  1. 打开 Demo 并登录(见文首),挑个「数据源」连上;

  2. 新建「数据集」:选表或写 SQL,预览字段,保存;

  3. 新建「视图」:选数据集,配置维度/度量(柱状、折线等),预览 OK;

  4. 新建「仪表盘」:把视图加进去,摆个舒服的布局;

  5. 设置「订阅」:挑个仪表盘/视图,配置 Cron,选通知通道,跑一下测试;

  6. 分享给同事:公共链接 or 签名分享,权限拿捏好。

打不开脑洞?随便上一个产品留存/活跃/销售趋势,就能跑起来。

  • 真·数据复用:Dataset 一处改名/校验,所有 View 自动受益,治理最省心。
  • 订阅有测试:推送前先"试一下",失败别等凌晨两点才知道。
  • 演示环境只读:线上 Demo 安全放心玩,真正的写操作我们局部中间件精准拦截。
  • 工程化:
    • 结构化日志(AsyncLocalStorage 贯穿请求链路)
    • 启动自检:MySQL / Redis / RabbitMQ 状态一网打尽
    • 全局鉴权 + 局部只读中间件(精确到 create/update/delete 路由)
    • 公共预览与签名分享,不登陆也能看(受控)
  • 二次开发友好:Monorepo + TypeScript,全仓一致的工程体验。

图表类型(你想要的"花里胡哨")

  • 已支持:柱状图、折线图、饼图、面积图、KPI 卡、表格、百分比图、雷达图、散点图等
  • 规划中:地图、漏斗、仪表盘、热力图、更多自定义组件
  • 说明:每种图表都支持基础配置与数据绑定,后续可扩展更多类型。

数据源支持 & 订阅渠道(你关心的"入"和"出")

  • 数据源(当前已支持,见 packages/query-engine):

    • MySQL、PostgreSQL、ClickHouse、Oracle、SQL Server(MSSQL)、MongoDB、Elasticsearch(ES Search)
    • 说明:统一入口 QueryEngine(type, config),底层连接器可按需扩展(适配器模式)。
  • 订阅渠道(当前已支持,见 packages/notify):

    • 邮件(SMTP)、钉钉机器人、飞书(Lark)、Slack、Telegram、Discord
    • 规划中:企业微信、通用 Webhook、Server酱、Bark、短信、语音电话
    • 彩蛋:提供"连通性测试",尽量把失败拦在上线之前。

技术栈(简洁但不简单)

  • Monorepo:pnpm + turbo
  • 后端:Egg.js、Sequelize、ioredis、amqplib、JWT
  • 前端:React + antd + Vite
  • 其他:ESLint、统一 TS 类型、结构化日志、健康检查、限流

谁适合用?

  • 中小团队的内部 BI 诉求:做 KPI 看板、日报订阅、运营复盘。
  • 想要可二开、能长出来的开源基座:你可以把它当"开源低代码 BI 内核"。
  • 想给客户/外部伙伴只读查看的场景:公共/签名分享就绪。

Roadmap(部分)

  • 数据源更多友军:......(欢迎 PR)
  • 视图联动与更丰富的图形库
  • 更细粒度的权限模型与审计

本地体验(可选)

想自己跑一遍?下面是极简流程,详细请看仓库 README。

bash 复制代码
# 环境:Node 20+、pnpm 9+,准备 MySQL/Redis/RabbitMQ
pnpm install
pnpm -C apps/server dev
pnpm -C apps/web dev

开源与参与

  • https://github.com/TNT-Likely/Lumina
  • Star & Issue 都是对作者续命的"电池"🔋
  • 功能建议、Bug 反馈、文档纠错,通通欢迎!
  • 如果你公司在用,也欢迎在评论区打个卡,给后来者一点信心。

最后:别让 KPI 吞噬你的周末

数据人的快乐,从摆脱"复制 CSV + 发截图"开始。用 Lumina,把习惯变流程,把流程变自动化。

觉得还行,来个"三连"(点赞、收藏、转发),下次更新直接安排「更好看的图」和「更聪明的订阅」。