案例研究
DropTaxi
面向印度出租车运营商的多租户出租车预订 SaaS。一次部署为每个租户提供品牌网站、自定义域名和针对每个运营商的 SEO。
164
项测试通过
5
种车型支持
0
次部署即可添加租户
挑战
出租车运营商需要品牌网站,但不想承担每个租户的基础设施成本
印度各地的小型出租车运营商通过电话和 WhatsApp 经营业务。他们没有网络存在。有网站的运营商要为定制网站支付每月数千卢比的托管费,更新费率或添加城市意味着要联系开发人员。
客户希望打造一个平台,任何运营商只需绑定域名、填写表单,就能获得一个有品牌标识、SEO 优化的预订网站。无需代码更改。无需重新部署。预订网站需要计算五种车型的单程和往返费率,通过 Telegram 发送预订通知,并在 Google 上为每个运营商的目标城市获得排名。
约束条件:所有这些必须在单次部署上运行。一台服务器。一个代码库。所有租户共用同一套基础设施。
我们构建的内容
完整的 SaaS 平台,从预订引擎到管理后台
每个租户的品牌网站
每个运营商获得一个带有品牌名称、Logo、主题颜色和自定义域名的网站。SSR 层在每个请求中读取 Host 头,从 Turso 解析租户,并渲染正确的品牌。访客看到的是一个完整的预订网站。他们永远不会知道它与数十个其他运营商共享基础设施。
共享费率引擎
一个费率计算引擎处理每个租户的定价。它支持五种车型的单程和往返路线:Hatchback、Sedan、SUV、Innova 和 Innova Crysta。每个租户通过管理后台设置自己的每公里费率。引擎在请求时获取正确的费率,并向用户返回即时的费用明细。
超级管理后台
taxi.savibm.com 上的管理后台让平台所有者拥有完全控制权。创建租户、配置主题颜色、设置每种车型的费率、管理城市路线、查看所有运营商的预订。每项更改在几秒钟内生效于租户的线上网站,无需部署。
Telegram 通知
每个租户连接自己的 Telegram 机器人。当客户预订行程时,运营商会收到即时通知,包含路线详情、车型和费用。无需安装应用,无需监控面板。
每个租户的 SEO
每个租户网站生成自己的 meta 标签、Open Graph 图片、结构化数据和站点地图。当有人搜索「出租车预订 [城市名]」时,显示的是运营商的品牌网站,而不是通用的平台页面。
零部署入驻
添加新的出租车运营商只需三步:在管理后台创建租户、配置品牌和费率、绑定 DNS。平台在下一个请求时自动识别新域名。无需代码更改,无需 CI 流水线。
架构
一次部署,多个品牌
请求流程
- 1 客户访问 svdroptaxi.com。请求到达一台运行 Astro 5 SSR 模式的 Fly.io 机器。
- 2 Hono 中间件提取 Host 头,并查询 Turso(通过 Drizzle ORM)按域名解析租户。
- 3 租户配置(品牌名称、颜色、Logo、费率、城市路线)加载到请求上下文中。
- 4 Astro 使用租户的品牌渲染页面。React 组件在客户端处理费率计算器和预订表单。
- 5 提交预订时,API 路由使用 Zod 验证,写入 Turso,并向运营商的机器人发送 Telegram 通知。
Turborepo 单一仓库
代码库分为多个包:租户端 Astro 应用、管理后台、共享数据库模式和费率计算引擎。Turborepo 跨包缓存构建,因此费率引擎的更改只会重建依赖它的部分。
边缘 Turso
Turso 提供靠近用户的嵌入式 SQLite 副本。租户解析查询仅需个位数毫秒。Drizzle ORM 提供类型安全的查询和边界处的 Zod 模式验证,164 项 Vitest 测试覆盖了费率引擎、租户解析和预订流程。
成果
164
项测试覆盖费率引擎、租户解析和预订流程
0
次部署即可入驻新的出租车运营商
5
种车型,每个租户独立费率
1
台 Fly.io 机器,单次部署服务所有租户
消息已收到
我们将审核您的项目,并在24小时内回复。
您也可以通过 hello@savibm.com 联系我们