v0.3.1 最新
NestJS
Next.js 14
Expo
YooKassa
Rigs Market
户外与运动装备租赁市场:房源信息、地图、预订、聊天、通过YooKassa收取押金、移动应用及商家后台。页面展示的是整个租赁流程,而不仅仅是展示页面。
01 / product scope
Rigs围绕一条链路运转:搜索 → 预订 → 支付 → 交付 → 归还
3
个单体仓库中的应用:API、web与mobile。
15
个NestJS模块:租赁、支付、聊天、搜索、后台管理及后台任务。
84
个旧页面中的API端点:REST API加上用于聊天的WebSocket。
0
个TypeScript错误(`v0.2.0`与`v0.3.0`版本发布之后)。
02 / stack & tags
一个TypeScript单体仓库:同一类型贯穿API、web与mobile
Rigs从两端运转:租客在地图上寻找装备,房东收到预订,支付模块保管押金,而聊天功能则在交付前解决有争议的细节。
代码中展示了`@rigs/types`、API、web与mobile之间的关联。如果预订或支付模型发生变化,这一变化应在所有部分中可见,而不是在支付完成后才以错误的形式暴露出来。
UX/UI
NestJS
Next.js
TypeScript
Expo
Mapbox
Socket.io
YooKassa
PostGIS
Redis
Elasticsearch
MinIO
Turborepo
TypeScript
99.2%
CSS
0.7%
Dockerfile
0.1%
JavaScript
0.0%
03 / release log
Rigs的版本发布聚焦于支付、安全及移动端兼容性
v0.3.1
支付Webhook与押金冻结热修复
一次简短的版本发布:修复了两个可能导致用户损失资金或卡在错误状态的场景。
- YooKassa的webhook不再因`Authorization: Bearer`比较错误而被拒绝。
- 支付成功后,预订会正确进入`paid/completed`状态,而不再处于悬而未决的状态。
- 自动取消逾期预订时,会为每条记录调用`cancelDepositHold()`。
v0.3.0
Security Hardening & Code Quality
一次API审计之后的版本发布:安全性、日志记录、Socket.io类型化,以及规范的环境配置。
- 新增`helmet`,Socket.io的CORS从`origin: '*'`改为基于`WEB_URL`的白名单。
- `HttpLoggerMiddleware`现在会记录请求方法、路径、状态码及响应时间。
- Socket.io新增类型化事件:`ServerToClientEvents`与`ClientToServerEvents`。
v0.2.0
Expo SDK 54迁移
移动端从Expo SDK 51全面升级到SDK 54。版本说明中分别记录了严重、中等及轻微修复。
- `expo-router`升级至v6,路由已重写为类型化对象。
- `expo-notifications`升级至v0.32:改用banner/list形式,替代已废弃的alert API。
- 迁移完成后`npx tsc --noEmit`显示0个错误。
04 / file map
关键文件
05 / next projects