RTR - 用本地服务器取代纸质表单

我开发了一款 Windows 桌面应用,能将管理员的电脑变成公司内网的表单服务器。无需云端、无需账户、终端用户无需安装任何软件。

Intermediate

我在 Akemax 实习时,最让我印象深刻的一点是,大量的日常报告仍然依赖纸质流程。如果工厂车间里有人需要提交报告,他们得走到楼下,拿一张纸质表单,手写填好,然后交上去。虽然能用,但效率很低,还会打断工作节奏。我一直在想:为什么不把表单放到服务器上呢?

这个想法一直留在我脑海里。使用这些表单的人并不是程序员。他们不想安装软件、创建账户或学习新工具。他们只需要填好表单然后回去工作。所以我开发的东西必须极其简单 - 打开一个网址,选择一个表单,填写,提交。

RTR (Real-Time Reporting) 就是这样诞生的。

第 1 步:RTR 的实际功能

应用启动后,它会在管理员的桌面上运行并创建一个本地服务器。同一网络上的用户可以访问管理员的网址,进入表单页面,选择表单,输入日期和所需信息,然后提交。

在管理端应用中,管理员可以查看已提交的表单,并根据需要创建或修改表单。

# The architecture in a nutshell:
┌─────────────────────┐     IPC only     ┌──────────────┐
│   Admin Panel (UI)  │ ◄──────────────► │   Main Process│
│   Electron Window   │                  │   (Node.js)   │
└─────────────────────┘                  └──────┬───────┘
                                                │
                                         ┌──────┴───────┐
                                         │  Express HTTP │
                                         │  Port 8080    │
                                         │  LAN only     │
                                         └──────┬───────┘
                                                │
                              ┌─────────────────┼─────────────────┐
                              │                 │                 │
                         Phone/Tablet      Desktop PC       Any Browser
                         on the LAN        on the LAN       on the LAN

第 2 步:为什么没有用户账户

RTR 没有使用个人用户账户,而是记录提交表单时所用设备的 MAC 地址。由于企业通常有固定数量的设备连接到其网络,这种方式可以简单地将提交内容与设备关联起来,而不需要员工登录。

我之所以采用这种方式,是因为按照表单的本质,任何人都应该能够拿起表单直接填写,而不必先创建账户或登录。

第 3 步:基于网络的安全策略

RTR 专为内网环境设计。它不接受来自本地网络之外的连接,因此其安全性本质上取决于所运行网络的安全性。

管理面板本身是一个原生 Electron 窗口,完全通过进程间通信进行交互 - 不会为其打开任何网络套接字,因此无论防火墙如何设置,它都无法从 LAN 访问。表单服务器仅绑定到面向 LAN 的网络适配器,并将访问限制在白名单中的 IP 地址或 CIDR 范围内。

第 4 步:核心功能

  • 表单构建器 - 使用不同的问题类型创建和修改报告表单
  • 提交浏览器 - 查看、筛选和搜索已收集的回复
  • CSV 导出 - 导出提交内容,可在 Excel、Google Sheets 或任何数据工具中进行分析
  • IP 白名单 - 精确控制哪些设备可以访问和提交表单
  • 设备追踪 - 通过 MAC 地址记录将提交内容与设备关联
  • 完全本地化 - 所有数据都存储在管理员电脑上的 SQLite 中,无需云端

第 5 步:技术栈

RTR 使用以下技术构建:

  • Electron - 管理面板的原生桌面外壳
  • Node.js + Express - 用于表单分发的轻量级 HTTP 服务器
  • SQLite - 零配置的本地数据库
  • NSIS - Windows 安装程序打包工具

第 6 步:下载

下载 RTR v0.1.0 (Windows x64)

或者克隆源码自行构建:

git clone https://github.com/petermurrayx/RTR--Real-Time-Reporting.git
cd RTR--Real-Time-Reporting
npm install
npm start        # development mode
npm run build    # build the installer
注意: 安装程序适用于 Windows 10/11 (x64)。首次启动时,Windows 防火墙会询问是否允许 LAN 访问 - 请允许,以便其他设备能够访问表单服务器。

虽然这个项目没有使用任何花哨的新 AI 技术,但它让我想起了自己当初选择计算机科学的原因:用技术让人们的生活更轻松,帮助他们更高效地工作,把事情做好。

如果你有空闲时间,欢迎来看看。项目采用 MIT 许可证,任何人都可以使用或修改代码。