包船后端要点
此模板为您提供了一个游艇包船后端,包括用户、船舶、列表、季节性定价、预订和船员分配,以便运营商能够更快地协调船队供应、客人预订和船员覆盖。
- 船舶列表结构 — 按名称、类型、容量、母港和运营商对每艘船舶建模,然后通过列表发布。
- 季节性定价规则 — 在季节性定价中存储季节性费率,以便在每个列表中保持旺季、肩季和灵活定价窗口的明确性。
- 船员预订工作流程 — 根据船长、厨师、服务员和甲板工的预订记录跟踪船员分配行。
- 市场可见性 — 使用 Back4app 查询和 Live Queries 来保持已发布的列表行、季节性定价窗口和预订状态的最新。
理解游艇租赁市场后端
季节性对游艇租赁市场造成了严重冲击; 没有历史数据,你无法预测需求、人员配置或闲置库存中占用的资本。细节是必不可少的。使用 Back4app 上的船艇、列表、季节性定价、预订和船员分配编码游艇租赁市场的可用性、定价挂钩和履行记录,形成一个统一的后端。该模式涵盖用户(用户名、电子邮件、密码、角色、显示名称)、船艇(名称、类型、容量、港口、运营商、是否活跃)、列表(船艇、标题、描述、状态、基础货币、特色图片 URL、运营商)、季节性定价(列表、季节名称、开始日期、结束日期、每晚价格、押金金额、是否灵活)、预订(列表、客人、入住日期、退房日期、客人数量、状态、总价、特殊请求)和船员分配(预订、船员姓名、角色、班次开始、班次结束、状态),内置身份验证和市场工作流程。连接你喜欢的前端,更快发货。
最佳用法:
游艇租赁市场:后端快照
游艇租赁市场不仅仅是关于速度;当有人问“给我看看你是怎么知道这是真的”时,它关于可防御性。
中心是从 curiOSity 到在 Vessel、Listing 和 SeasonalPricing 上获得清晰度的最快路径,无需打开五个不同的文档。
租船市场功能
此中心中每个技术卡片都使用相同的 yacht charter 模式,包括 User、Vessel、Listing、SeasonalPricing、Booking 和 CrewAssignment。
船只记录和租船规格
船只存储名称、类型、容量、港口、运营商和是否活跃。
实时租船列表
列表将船只链接到标题、描述、状态、基础货币、特色图片链接和运营商。
季节性定价窗口
季节性定价跟踪季节名称、开始日期、结束日期、每晚价格、押金金额和是否灵活。
船员分配管理
CrewAssignment 记录预订、crewMemberName、角色、shiftStart、shiftEnd 和状态。
客人预订请求
预订保存列表、客人、checkInDate、checkOutDate、guestCount、状态、总价和特别请求。
为什么选择 Back4app 进行游艇租赁操作?
Back4app 为船只、价格、预订和船员提供市场原语,以便您的团队可以专注于游艇供应和客户需求,而不是基础设施。
- •列表和船舶控制: 船舶和列表类将租船准备的详细信息、可见性和特色状态集中在一个地方。
- •无需猜测的季节性定价: SeasonalPricing 存储日期限定的 nightlyRate 值,因此操作员可以精确地设置夏季和假期定价。
- •与预订进行船员协调: CrewAssignment 将预订与 crewMemberName、角色、shiftStart 和 shiftEnd 关联起来,使得船长和管家的排班管理更加简便。
通过一个后台合同快速构建和迭代租船市场工作流程,适用于每个平台。
租船市场的好处
一个让经纪人、船主和运营商从询问到预订过程更加顺畅的游艇租赁后台。
更快的上市启动
从船只和上市类开始,而不是从零构建租赁库存流程。
定价保持明确
使用SeasonalPricing字段,如seasonName、startDate、endDate、nightlyRate和depositAmount,使定价决策易于审核。
船员日程保持可见
CrewAssignment将预订、角色、班次开始和班次结束连接到每个租赁,帮助运营商避免重叠。
在一个模型中进行市场操作
当需求、定价和可用性需要单一视图时,可以一起查询预订、上市和船只。
跨渠道 API 交付
REST、GraphQL 和 SDK 访问使支持经纪门户、移动应用和管理工具变得简单。
AI 辅助启动
通过一个结构化的提示快速生成后端脚手架和集成指导。
准备好启动您的游艇租赁市场吗?
让 Back4app AI 代理搭建您的游艇租赁后端,并从一个提示中生成船只、定价、预订和人员工作流。
免费开始 - 每月 50 个 AI 代理提示,无需信用卡。
技术栈
此游艇出租市场后端模板包含的一切。
租船实体图
游艇租赁市场模式的实体关系模型。
涵盖游艇船只、包租列表、季节性价格、预订和船员分配的架构。
查看图表源
erDiagram
User ||--o{ Vessel : "operator"
User ||--o{ Listing : "operator"
User ||--o{ Booking : "guest"
Vessel ||--o{ Listing : "vessel"
Listing ||--o{ SeasonalPricing : "listing"
Listing ||--o{ Booking : "listing"
Booking ||--o{ CrewAssignment : "booking"
User {
String objectId PK
String username
String email
String password
String role
String displayName
Date createdAt
Date updatedAt
}
Vessel {
String objectId PK
String name
String type
Number capacity
String homePort
String operatorId FK
Boolean isActive
Date createdAt
Date updatedAt
}
Listing {
String objectId PK
String vesselId FK
String title
String description
String status
String baseCurrency
String featuredImageUrl
String operatorId FK
Date createdAt
Date updatedAt
}
SeasonalPricing {
String objectId PK
String listingId FK
String seasonName
Date startDate
Date endDate
Number nightlyRate
Number depositAmount
Boolean isFlexible
Date createdAt
Date updatedAt
}
Booking {
String objectId PK
String listingId FK
String guestId FK
Date checkInDate
Date checkOutDate
Number guestCount
String status
Number totalPrice
String specialRequests
Date createdAt
Date updatedAt
}
CrewAssignment {
String objectId PK
String bookingId FK
String crewMemberName
String role
Date shiftStart
Date shiftEnd
String status
Date createdAt
Date updatedAt
}
包租集成流程
典型的运行流程包括登录、船只列表、季节性定价更新、预订请求和船员排班。
查看图表源
sequenceDiagram
participant User
participant YachtCharterMarketplaceApp as Yacht Charter Marketplace App
participant Back4app as Back4app Cloud
User->>YachtCharterMarketplaceApp: Sign in as buyer or operator
YachtCharterMarketplaceApp->>Back4app: POST /login
Back4app-->>YachtCharterMarketplaceApp: Session token
User->>YachtCharterMarketplaceApp: Browse published vessel listings
YachtCharterMarketplaceApp->>Back4app: GET /classes/Listing?where={"status":"published"}
Back4app-->>YachtCharterMarketplaceApp: Listing rows with vessel pointers
User->>YachtCharterMarketplaceApp: Review seasonal pricing for a listing
YachtCharterMarketplaceApp->>Back4app: GET /classes/SeasonalPricing?where={"listing":{"__type":"Pointer","className":"Listing","objectId":"LISTING_ID"}}
Back4app-->>YachtCharterMarketplaceApp: SeasonalPricing rows
User->>YachtCharterMarketplaceApp: Create a booking request and crew plan
YachtCharterMarketplaceApp->>Back4app: POST /classes/Booking
Back4app-->>YachtCharterMarketplaceApp: Booking objectId
YachtCharterMarketplaceApp->>Back4app: POST /classes/CrewAssignment
Back4app-->>YachtCharterMarketplaceApp: CrewAssignment objectId
YachtCharterMarketplaceApp->>Back4app: Subscribe to live booking updates
Back4app-->>YachtCharterMarketplaceApp: Booking status changes字段指南
游艇租赁市场架构中每个类的完整字段级参考。
| 字段 | 类型 | 描述 | 必填 |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | 自动 |
| username | String | Account username for sign in | |
| String | Primary email address for the marketplace account | ||
| password | String | Hashed password (write-only) | |
| role | String | Account role such as buyer, seller, or operator | |
| displayName | String | Public name shown in charter and fleet workflows | — |
| createdAt | Date | Auto-generated creation timestamp | 自动 |
| updatedAt | Date | Auto-generated last-update timestamp | 自动 |
8 字段在 User 中
租船数据的访问控制
ACL 和 CLP 策略如何保护用户、船只、列表、费率、预订和船员分配。
所有者控制的租船库存
只有所有者或经纪人可以为他们的船队创建或更新船只和列表记录。
范围定价变更
季节性定价更新应仅限于授权操作员,以便追踪夜间价格变更。
预订和船员访问边界
预订和船员分配的读取应限制在相关的经纪人、所有者和操作员角色内。
JSON 架构
原始 JSON 架构定义,准备复制到 Back4app 或用作实施参考。
{
"classes": [
{
"className": "User",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"username": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"password": {
"type": "String",
"required": true
},
"role": {
"type": "String",
"required": true
},
"displayName": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Vessel",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"name": {
"type": "String",
"required": true
},
"type": {
"type": "String",
"required": true
},
"capacity": {
"type": "Number",
"required": true
},
"homePort": {
"type": "String",
"required": true
},
"operator": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"isActive": {
"type": "Boolean",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Listing",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"vessel": {
"type": "Pointer",
"required": true,
"targetClass": "Vessel"
},
"title": {
"type": "String",
"required": true
},
"description": {
"type": "String",
"required": true
},
"status": {
"type": "String",
"required": true
},
"baseCurrency": {
"type": "String",
"required": true
},
"featuredImageUrl": {
"type": "String",
"required": false
},
"operator": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "SeasonalPricing",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"listing": {
"type": "Pointer",
"required": true,
"targetClass": "Listing"
},
"seasonName": {
"type": "String",
"required": true
},
"startDate": {
"type": "Date",
"required": true
},
"endDate": {
"type": "Date",
"required": true
},
"nightlyRate": {
"type": "Number",
"required": true
},
"depositAmount": {
"type": "Number",
"required": false
},
"isFlexible": {
"type": "Boolean",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Booking",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"listing": {
"type": "Pointer",
"required": true,
"targetClass": "Listing"
},
"guest": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"checkInDate": {
"type": "Date",
"required": true
},
"checkOutDate": {
"type": "Date",
"required": true
},
"guestCount": {
"type": "Number",
"required": true
},
"status": {
"type": "String",
"required": true
},
"totalPrice": {
"type": "Number",
"required": true
},
"specialRequests": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "CrewAssignment",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"booking": {
"type": "Pointer",
"required": true,
"targetClass": "Booking"
},
"crewMemberName": {
"type": "String",
"required": true
},
"role": {
"type": "String",
"required": true
},
"shiftStart": {
"type": "Date",
"required": true
},
"shiftEnd": {
"type": "Date",
"required": true
},
"status": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}AI 代理构建提示
使用 Back4app AI 代理从此模板生成一个真实的游艇租赁市场应用,包括前端、后台、身份验证、船只、定价、预订和船员流程。
为游艇租赁市场创建一个安全的 Back4app 后端,具有以下确切的模式和市场行为。 模式: 1. 用户(使用 Back4app 内置):用户名,电子邮件,密码,角色,显示名称。 2. 船只:名称,类型,容量,母港,运营商(指向用户),是否激活。 3. 列表:船只(指向船只),标题,描述,状态,基本货币,特色图像 URL,运营商(指向用户)。 4. 季节定价:列表(指向列表),季节名称,开始日期,结束日期,每晚费用,押金金额,是否灵活。 5. 预订:列表(指向列表),客人(指向用户),入住日期,退房日期,客人数量,状态,总价,特殊要求。 6. 船员分配:预订(指向预订),船员姓名,角色,班次开始,班次结束,状态。 安全性: - 运营商可以创建和编辑自己的船只、列表、季节定价和船员分配条目。 - 买家可以创建预订请求并查看自己的预订。 - 只有列表运营商可以暂停或发布该列表。 - 船员分配记录必须与真实预订保持关联。 行为: - 浏览发布的列表,比较船只详情,阅读季节定价,请求租船,并为确认的预订分配船员。 - 支持登录,注册,预订管理,舰队管理和定价管理。 交付: - 带有模式、CLP、ACL和船只、列表、季节性费率、预订和船员分配示例市场数据的 Back4app 应用。
按下面的按钮打开预填充此模板提示的代理。
这是没有技术后缀的基本提示。您可以在之后调整生成的前端堆栈。
API 沙盒
尝试针对游艇出租市场架构的 REST 和 GraphQL 端点。响应使用模拟数据,并不需要 Back4app 账户。
使用与此模板相同的架构。
选择您的技术栈
展开每个卡片以查看如何将 Vessel、Listing 和 SeasonalPricing 与您选择的技术栈集成。
Flutter 游艇租赁市场后端
React 游艇租赁市场后端
React 原生 游艇租赁市场后端
Next.js 游艇租赁市场后端
JavaScript 游艇租赁市场后端
Android 游艇租赁市场后端
iOS 游艇租赁市场后端
Vue 游艇租赁市场后端
Angular 游艇租赁市场后端
GraphQL 游艇租赁市场后端
REST API 游艇租赁市场后端
PHP 游艇租赁市场后端
.NET 游艇租赁市场后端
每种技术能带给您的
每个技术栈使用相同的游艇租赁后端架构和 API 合同。
统一的游艇租赁数据结构
使用一个一致的架构管理船舶、清单、季节性定价、预订和船员分配。
租赁市场流程支持
发布列表、更新季节性价格,并从单个后端处理预订请求。
船员调度可见性
跟踪船员角色和班次时间,以便操作与每个包租请求保持一致。
灵活的市场角色
定义买方、卖方和运营商的体验,而无需改变核心模型。
REST/GraphQL API用于包租应用
将网络、移动和管理界面与相同的数据合同集成。
游艇租赁栈比较
比较所有支持的技术的设置速度、SDK 风格和 AI 支持。
| 框架 | 设置时间 | 市场收益 | SDK 类型 | AI 支持 |
|---|---|---|---|---|
| 大约 5 分钟 | 移动端和网页上的游艇租赁单一代码库。 | 类型化 SDK | 完全 | |
| 少于 5 分钟 | 快速的经纪人仪表板用于船只列表。 | 类型化 SDK | 完全 | |
| 大约 3–7 分钟 | 跨平台移动应用程序用于租赁操作。 | 类型化 SDK | 完全 | |
| 快速(5 分钟)设置 | 服务器渲染的游艇租赁市场门户。 | 类型化 SDK | 完全 | |
| ~3-5分钟 | 轻量级网页集成用于船只列表。 | 类型化SDK | 完全 | |
| 大约5分钟 | 专为租船代理商设计的原生Android应用程序。 | 类型化SDK | 完全 | |
| 少于5分钟 | 专为客人预订流程设计的原生iOS应用程序。 | 类型化SDK | 完全 | |
| ~3-7分钟 | React用于列出和定价更新的网络UI。 | 输入的SDK | 完全 | |
| 快速(5分钟)设置 | 用于船员调度的企业管理应用程序。 | 输入的SDK | 完全 | |
| 少于2分钟 | 灵活的GraphQL API用于嵌套船舶和定价查询。 | GraphQL API | 完全 | |
| 快速(2分钟)设置 | REST API市场端点集成。 | REST API | 完全 | |
| ~3分钟 | PHP用于包租操作的服务器端后端。 | REST API | 完全 | |
| ~3–7分钟 | .NET用于经纪人和运营工具的后端。 | 类型化SDK | 完全 |
设置时间反映了从项目启动到使用该模板模式的第一个船舶或上市查询的预期持续时间。
游艇租赁问题
关于使用此模板构建游艇租赁市场后端的常见问题。