Other

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

Rowy 深度剖析:给 Firestore 套上一张电子表格

项目背景与痛点

Firebase 生态里最尴尬的一环,是 Firestore 的控制台。它能看数据,但不能改数据;能建集合,但不能建结构。团队一旦把业务压到 Firestore 上,立刻会撞上三堵墙:产品经理无法自查数据,运营改一条记录要找工程师写脚本,Schema 只存在于 TypeScript 的 interface 里、数据库本身毫无约束。

于是各家开始「自己写一个运营后台」,而这类后台的复杂度往往超过主业。Airtable 好用但不属于你的云,Retool 灵活但只连 SQL,Supabase Studio 面向 Postgres。Rowy 的位置非常明确:Firestore 的可视化操作层,且代码与数据都不离开 GCP 项目边界。

它的赌注是——后端不应该被拆成「数据库 + 后台 + 云函数平台」三个东西,而应该被折叠成一张表。

核心技术揭秘

Rowy 最有意思的一点是:Firestore 是无 Schema 的文档库,但 Rowy 在它之上重建了一套 Schema——不是靠数据库约束,而是靠元数据。每张表的列定义、字段类型、校验规则、公式,都以文档形式存放在 Firestore 自身的元数据集合里(_rowy_ 前缀),UI 通过这些元数据渲染表格。这就是典型的 Schema as Data:结构本身也是可查询、可权限控制、可版本化的数据。

字段类型是插件化的。每一种列类型(文本、关联、文件、公式、派生列)都自带三件东西:单元格渲染组件、编辑控件、以及面向云函数的 TypeScript 类型贡献。最后这一点常被忽略但价值极高——你在 Monaco 编辑器里写云函数时,rowy SDK 的入参类型是由当前表的列定义自动生成的,改一列类型,云函数里的类型提示立刻跟着变。

数据流大致如下:

graph TD A[浏览器表格 UI - React 字段插件] --> B[Firestore SDK 写入] B --> C[Firestore 文档集合] C --> D[onSnapshot 增量推送] D --> A C --> E{"触发器类型"} E -->|"文档变更"| F[Firestore 事件触发器] E -->|"定时调度"| G[Cloud Scheduler] E -->|"HTTP 请求"| H[可调用函数] F --> I[用户编写的 JS/TS 云函数] G --> I H --> I I --> J[rowy SDK 回写文档] J --> C I --> K[外部服务 - SendGrid Algolia BigQuery]

关键机制在于 onSnapshot 与分页窗口的配合。全集合监听在 Firestore 上是要按文档读取计费的,Rowy 不能傻听整个集合,只能维护一个可视窗口内的监听器,滚动时热切换。这是体验与账单之间的硬权衡,也是同类工具最容易翻车的地方。

云函数侧则是「浏览器里写代码、云端打包部署」:编辑器把 TS 编译产物连同依赖打包上传,注册成 Cloud Functions,日志通过 GCP 回传到 UI。派生列(Formula / Derivative)本质就是列级的反应式计算——文档变更触发函数,函数读取整行、算出值、回写同一条文档。

功能亮点与差异

对比 Airtable,Rowy 的杀手锏是不锁定数据:数据就在你自己的 Firestore 项目里,随时可以用 Admin SDK 直接读写,工具只是视图层。对比 Retool/Appsmith,它反过来——不让你拖拽画界面,而是让你直接写代码,把复杂度留给 JS 而非低代码 DSL。对比 Supabase Studio,它选择了 NoSQL + 云函数一体化的路线。

真正独特的是扩展(Extensions)体系:Algolia 搜索索引同步、SendGrid 邮件、BigQuery 数据镜像,都是预置的云函数模板,装完即用且代码完全可改。这比「平台内建集成」更诚实——它承认集成逻辑迟早要被改。

应用场景与落地建议

适合:内容运营后台、AI 应用的数据标注与 Prompt 管理、内部工具的数据层、需要快速验证的 MVP 后端。这些场景共同点是数据结构简单、读多写少、团队小。

生产落地必须注意几条:

  • 安全规则是生死线。前端直连 Firestore,绕开 UI 用 SDK 读库是完全可行的。必须写死 firestore.rules,并给运营同学 viewer 角色而非 editor。
  • 算清楚账单。实时监听 + 派生列回写 = 每个单元格修改可能触发一次函数调用与一次文档写入。数据量大时,派生列要慎用。
  • 别把它当 OLTP 主库。Firestore 没有 join,复杂查询靠索引与反范式冗余,Rowy 不会替你解决这个问题。
  • 云函数冷启动。默认实例数下,低频触发的函数首包延迟可能到秒级,涉及用户请求路径的要用 min instances。

综合评价

优点:把 Firestore 的可操作性从「几乎为零」拉到「接近 Airtable」,同时保住数据主权;字段类型插件与类型自动生成的设计,说明作者是真的按开发者习惯在想问题;扩展体系开放且可改,不搞黑盒。

缺点:深度绑定 Firebase/GCP,迁移成本基本等于重写;表格 UI 在万级行以上会有明显压力;多人协同编辑是 last-write-wins,没有单元格级冲突处理;文档与社区规模相对小众,遇到坑更多得自己读源码。

一句话总结:Rowy 不是一个低代码平台,它是给 Firestore 补上的那块缺失的「人机界面」,顺便把云函数的编写体验拉回了 IDE 时代。 如果你的后端已经压在 GCP 上,它值得认真评估;如果你还没上 Firestore,别为了它上。

关于

GitHub 原始描述(英文)

Low-code backend platform. Manage database on spreadsheet-like UI and build cloud functions workflows in JS/TS, all in your browser.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

CSS
HTML
JavaScript
TypeScript

README

✨ Airtable-like UI for managing database ✨ Build any automation, with or without code ✨

Connect to your database and create Cloud Functions in low-code - without leaving your browser.
Focus on building your apps. Low-code for Firebase and Google Cloud.

Live Demo 🛝

💥 Explore Rowy on live demo playground 💥

Features ✨

https://user-images.githubusercontent.com/307298/157185793-f67511cd-7b7b-4229-9589-d7defbf7a63f.mp4

Powerful spreadsheet interface for Firestore

  • CMS for Firestore
  • CRUD operations
  • Bulk import or export data - csv, json, tsv
  • Sort and filter by row values
  • Lock, Freeze, Resize, Hide and Rename columns
  • Multiple views for the same collection

Automate with cloud functions and ready made extensions

  • Build cloud functions workflows on field level data changes
    • Use any NPM modules or APIs
  • Connect to your favourite tool with pre-built code blocks or create your own
    • SendGrid, Algolia, Twilio, Bigquery and more

Rich and flexible data fields

  • 30+ fields supported
    • Basic types: Short Text, Long Text, Email, Phone, URL…
    • Custom UI pickers: Date, Checkbox, Single Select, Multi Select…
    • Uploaders: Image, File
    • Rich Editors: JSON, Code, Rich Text (HTML), Markdown
  • Data validation, default values, required fields
  • Action field: Clickable trigger for any Cloud Function
  • Aggregate field: Populate cell with value aggregated from the row’s sub-table
  • Connector field: Connect data from multiple table collections
  • Connect Service: Get data from any HTTP endpoint

Collaborate with your team

  • Granular table-level and field-level permission control
    with role based access controls
  • Built in user management
  • Customizable views for different user roles

Quick guided install

Set up Rowy on your Google Cloud Platform project with this easy deploy button. Your data and cloud functions stay on your own Firestore/GCP and is managed via a cloud run instance that operates exclusively on your GCP project. So we do not access or store any of your data on Rowy.

Guided quick start button

https://rowy.app

Documentation

You can find the full documentation with how-to guides and templates here.

Manual Install

We recommend the quick guided install option above. Manual install option is only recommended if you want to develop and contribute to the project. Follow this guide for manual setup.

Roadmap

View our roadmap on Rowy - Upvote, downvote, share your thoughts!

If you’d like to propose a feature, submit an issue here.

Support the project

Help

评论

暂无评论