API
ChurchApps API 是一个模块化单体应用——一个为六个数据模块提供服务的单一代码库,每个模块都有各自的数据库。这种架构既拥有微服务式的组织优势(清晰的边界、独立的数据存储),又保留了单一部署所带来的运维简便性。
模块
| 模块 | 用途 |
|---|---|
| Membership | 人员、小组、家庭、权限 |
| Attendance | 服务、场次、签到记录 |
| Content | 页面、板块、元素、流媒体 |
| Giving | 捐款、基金、支付处理 |
| Messaging | 对话、通知、邮件 |
| Doing | 任务、计划、分配 |
技术栈
- 运行时: Node.js 22.x,搭配 TypeScript(ES 模块)
- 框架: Express
- 依赖注入: Inversify(基于装饰器的路由)
- 数据库: MySQL——每个模块一个数据库,各自拥有独立的连接池
- 认证: 通过
CustomAuthProvider实现基于 JWT 的身份验证 - 部署: 通过 Serverless Framework v3 部署到 AWS Lambda
端口
| 协议 | 端口 | 说明 |
|---|---|---|
| HTTP | 8084 | 主 REST API |
| WebSocket | 8087 | 实时套接字连接 |
Lambda 函数
部署到 AWS 时,API 以六个 Lambda 函数的形式运行:
web——处理所有 HTTP 请求socket——管理 WebSocket 连接timer15Min——每 30 分钟运行一次,用于发送邮件通知(名称是历史遗留)timerMidnight——每天运行一次,用于摘要邮件和维护任务timerScheduledTasks——每天运行一次,处理到期的自动化任务及逾期工作流处理timerWebhooks——每分钟运行一次,投递排队中的出站 Webhook
共享库
API 依赖两个共享的 ChurchApps 包:
@churchapps/helpers——基础工具(DateHelper、ApiHelper 等)@churchapps/apihelper——Express 服务器工具,包括认证、数据库辅助函数和 AWS 集成
信息
API 使用 ES 模块(package.json 中的 "type": "module")。请确保你的导入语句使用 ES 模块语法。