Juntiy Joint Intelligence
物业账单管家 Property Billing System 封面

我把「物业账单管家」开源了:一个零依赖、场景驱动的轻量账单系统

#Juntiy Workspace#开源#项目#micro-SaaS

EN: Today I’m open-sourcing Property Billing System — a lightweight, scenario-driven billing tool I built for property managers, landlords, and small commercial parks. This post explains what it does and why it’s designed the way it is.

CN: 今天我把 物业账单管家(Property Billing System) 开源了。它是一个面向物业公司、二房东、商铺园区的轻量化综合账单系统。这篇推广文聊聊它解决什么问题,以及为什么这样设计

物业账单管家工作台


它解决什么问题 / What problem it solves

EN: Billing tenants every month shouldn’t require an ERP. Most small property managers still live in Excel — rent, parking, waste fees, and a pile of water/electricity meters per unit. Producing a clean, professional dunning notice each month is tedious and error-prone.

CN: 每月给租户出账单,本不该上一个重型的 ERP。但大量中小物业、二房东、商铺园区依然活在 Excel 里:租金、停车费、垃圾清运费,再加上每一户绑着的好几个水表电表。每个月产出一张干净、专业、带催款单的账单,既繁琐又容易出错。

EN: Property Billing System turns that whole loop into one click:

CN: 物业账单管家把这一整套流程收敛成「一键」:


设计理念 / Design philosophy

EN: The core idea is scenario-driven, not generic. I optimized for the person who actually runs a small property, not for a feature checklist. CN: 核心理念是场景驱动,而非堆功能。我为真正在管小物业的人优化,而不是为了凑一份功能清单。

1. 零依赖、零构建 / Zero dependencies, zero build

EN: It’s plain Node.js + hand-written responsive CSS + JSON file persistence. No npm install, no bundler, no framework. Install Node and run node server.js — done. Maintenance cost is near zero.

CN: 整套系统就是原生 Node.js + 手写响应式 CSS + JSON 文件持久化。没有 npm install、没有构建步骤、没有框架。装好 Node 跑一句 node server.js 就能用,维护成本极低。

2. 文件即数据库 / Files are the database

EN: All data lives in three JSON files under data/. Backup = copy a folder. That’s a deliberate choice — for a lightweight internal tool, a full database engine is overkill and a liability.

CN: 全部数据就是 data/ 下的三个 JSON 文件。备份 = 复制一个目录。这是刻意的取舍:对一个轻量内部工具来说,上全套数据库引擎属于过度设计,反而是负担。

3. 落在真实工作流里 / Built around the real workflow

EN: The features that matter to a property manager are the “unglamorous” ones: Excel one-click import (download template → fill → upload), e-stamp overlay, RMB capital amounts (“叁仟贰佰壹拾元整”), and exporting a PNG to send over WeChat. I prioritized exactly where the friction actually is.

CN: 对物业来说真正有用的,往往是那些”不起眼”的能力:Excel 一键导入(下载模板→填好→上传)、电子公章叠加、人民币大写金额(“叁仟贰佰壹拾元整”)、以及导出 PNG 直接微信发送。我把精力放在这些真正卡人的环节上。

账单详情(含电子公章)

4. 抄表可追溯到源 / Readings are traceable

EN: Every reading snapshot stores the meter’s unit price at that time, so historical bills are immune to later price changes. The system also auto-detects readings lower than the previous month and flags them — because real meters occasionally go backwards or get mis-keyed.

CN: 每条抄表记录都会快照当时表计单价,所以历史账单不受后续改价影响。系统还会自动识别”本期读数低于上期”的异常并提示——因为真实场景里电表偶尔会倒走、或录错。


核心能力一览 / Feature highlights

EN: A quick map of what’s inside:

CN: 一份能力清单:

能力说明
多表计抄表一户绑定多个水/电表,单价独立,自动算用量与金额
自动追溯调取上月读数计算用量,异常自动提醒
Excel 导入官方模板 + 兼容旧版电费/水费宽表,可重复导入不重复
电子公章透明底 PNG 自动叠加落款,附收款码与付款指引
三种输出打印 / PDF / PNG 图片 / 纯文本催款话术
一键部署Docker、宝塔/云服务器、PM2 守护进程皆可

月度抄表录入


如何部署 / How to run it

EN: Two commands and you’re up:

CN: 两条命令即可跑起来:

# 方式一:直接运行(需 Node.js >= 18)
node server.js
# 打开 http://localhost:3000

# 方式二:Docker 一键部署
docker compose up -d

EN: Ship it to a VPS (Aliyun / Tencent Lightweight) behind a reverse proxy with PM2, attach a domain + HTTPS, and it’s production-ready.

CN: 上云也很简单:用 PM2 守护进程跑在云服务器(阿里云 / 腾讯云轻量),前面挂反向代理并绑域名 + HTTPS,即可用于生产。


为什么开源 / Why open source

EN: This is part of Juntiy Workspace — my line of lightweight micro-SaaS and automation for small businesses and independent operators. I believe tools like this should be transparent, self-hostable, and free to adapt. If it saves you an afternoon of monthly billing pain, that’s the win.

CN: 这是 Juntiy Workspace 系列的一员——我面向小微企业与个人运营者打造的轻量 micro-SaaS 与自动化产品线。我相信这类工具应当透明、可自托管、可自由改造。如果它能帮你省下每个月出账单的那半天折腾,这个开源就值了。

EN: 👉 Repo: github.com/Juntiy/property-billing-system CN: 👉 仓库地址:github.com/Juntiy/property-billing-system

喜欢的话点个 Star ⭐,也欢迎提 Issue 和 PR。Joint Intelligence, Unified Solutions.