案例研究

DropTaxi

面向印度出租车运营商的多租户出租车预订 SaaS。一次部署为每个租户提供品牌网站、自定义域名和针对每个运营商的 SEO。

164

项测试通过

5

种车型支持

0

次部署即可添加租户

DropTaxi 租户预订页面,展示费率计算器和城市选择界面
技术栈 Turborepo Astro 5 SSR React Hono Turso Drizzle ORM Tailwind CSS v4 shadcn/ui Zod Vitest Fly.io

挑战

出租车运营商需要品牌网站,但不想承担每个租户的基础设施成本

印度各地的小型出租车运营商通过电话和 WhatsApp 经营业务。他们没有网络存在。有网站的运营商要为定制网站支付每月数千卢比的托管费,更新费率或添加城市意味着要联系开发人员。

客户希望打造一个平台,任何运营商只需绑定域名、填写表单,就能获得一个有品牌标识、SEO 优化的预订网站。无需代码更改。无需重新部署。预订网站需要计算五种车型的单程和往返费率,通过 Telegram 发送预订通知,并在 Google 上为每个运营商的目标城市获得排名。

约束条件:所有这些必须在单次部署上运行。一台服务器。一个代码库。所有租户共用同一套基础设施。

我们构建的内容

完整的 SaaS 平台,从预订引擎到管理后台

每个租户的品牌网站

每个运营商获得一个带有品牌名称、Logo、主题颜色和自定义域名的网站。SSR 层在每个请求中读取 Host 头,从 Turso 解析租户,并渲染正确的品牌。访客看到的是一个完整的预订网站。他们永远不会知道它与数十个其他运营商共享基础设施。

DropTaxi 功能区展示每个租户的品牌定制能力
DropTaxi 费率计算器,展示路线选择、车型选择器和费用明细

共享费率引擎

一个费率计算引擎处理每个租户的定价。它支持五种车型的单程和往返路线:Hatchback、Sedan、SUV、Innova 和 Innova Crysta。每个租户通过管理后台设置自己的每公里费率。引擎在请求时获取正确的费率,并向用户返回即时的费用明细。

超级管理后台

taxi.savibm.com 上的管理后台让平台所有者拥有完全控制权。创建租户、配置主题颜色、设置每种车型的费率、管理城市路线、查看所有运营商的预订。每项更改在几秒钟内生效于租户的线上网站,无需部署。

DropTaxi 平台参考,展示预订界面

Telegram 通知

每个租户连接自己的 Telegram 机器人。当客户预订行程时,运营商会收到即时通知,包含路线详情、车型和费用。无需安装应用,无需监控面板。

每个租户的 SEO

每个租户网站生成自己的 meta 标签、Open Graph 图片、结构化数据和站点地图。当有人搜索「出租车预订 [城市名]」时,显示的是运营商的品牌网站,而不是通用的平台页面。

零部署入驻

添加新的出租车运营商只需三步:在管理后台创建租户、配置品牌和费率、绑定 DNS。平台在下一个请求时自动识别新域名。无需代码更改,无需 CI 流水线。

架构

一次部署,多个品牌

请求流程

  1. 1 客户访问 svdroptaxi.com。请求到达一台运行 Astro 5 SSR 模式的 Fly.io 机器。
  2. 2 Hono 中间件提取 Host 头,并查询 Turso(通过 Drizzle ORM)按域名解析租户。
  3. 3 租户配置(品牌名称、颜色、Logo、费率、城市路线)加载到请求上下文中。
  4. 4 Astro 使用租户的品牌渲染页面。React 组件在客户端处理费率计算器和预订表单。
  5. 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

总部位于

阿联酋和印度