使用 React、TypeScript、Vite、Tailwind、AirJam 和 Stripe 构建
react-hospitality-site-starter — Vite 启动器模板
作者 airjam-co
基于 React、TypeScript、Vite、Tailwind、AirJam 与 Stripe 构建的无服务器住宿预订网站模板,主要面向民宿、旅馆等可预订服务,支持 PWA 与响应式布局。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
完全无服务器架构,可部署到 Vercel、Netlify、Node 服务器或作为静态网站本地运行
预订功能由 AirJam Appointment 组件提供,支持预订审核、本地化和邮件通知
通过 Stripe 处理支付,演示环境使用测试模式,可配合测试卡号验证支付流程
设计为 PWA,并使用 Tailwind 控制响应式设置,已在多种网页和移动浏览器中测试
外观与体验由 React、Tailwind 和 CSS 控制,可按需调整
模板详细介绍
该模板是一个免费的无服务器住宿与酒店预订网站起始项目,使用 React、TypeScript、Vite、Tailwind、AirJam 和 Stripe 构建。README 说明其以完全无服务器方式运行,可部署在 Vercel、Netlify、Node 服务器,或作为静态网站运行在本地机器上。模板主要面向 B&B、旅馆等私人住宿,也可适配水疗、沙龙、汽车租赁、皮划艇租赁等可预订服务。
预订功能由 AirJam 的 Appointment 组件提供,支持预订审核、本地化和邮件通知,相关管理、邮件设计定制和国际化操作在 AirJam Appointment 组件仪表板中完成。支付通过 Stripe 处理,演示环境使用 Stripe 测试模式,可使用 Stripe 测试卡号测试支付流程;若不希望收款,可忽略 Stripe 设置并在 AirJam 中将资源标记为免费以禁用支付收集。
模板使用 TypeScript 和 SWC,由 Vite 驱动,通过 npm run build 触发 Vite 编译器构建。外观和体验完全由 React、Tailwind 和 CSS 控制。README 未提供具体框架版本号、性能数据或生产就绪程度说明。
适合你的项目吗?
适用场景
- 为民宿、B&B 或旅馆搭建可预订网站
- 为水疗、沙龙等可预约服务创建预订页面
- 为汽车租赁、皮划艇租赁等按日计费的租赁服务提供预订界面
- 在无服务器架构下部署住宿预订网站,避免维护后端服务器
- 使用 Stripe 测试模式验证支付处理流程
适合人群
- 需要无服务器住宿预订网站模板的前端开发者
- 希望使用 React、TypeScript、Vite 和 Tailwind 技术栈的开发者
- 计划通过 AirJam Appointment 组件管理预订和邮件通知的团队
- 需要集成 Stripe 支付或选择免费资源模式的住宿服务提供者
- 希望将模板适配到水疗、沙龙、租赁等可预订服务的开发者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
克隆仓库后执行 npm install,再执行 npm run build 构建项目
- 2
运行前将 .env.example 重命名为 .env,然后执行 npm run dev
- 3
自定义使用需要注册 AirJam 和 Stripe 账户,并获取 Stripe 的 secret 和 publishable 密钥
- 4
在 AirJam 中创建 Appointment 组件时,需将预订时长设为 Daily,并设置最小、最大预订时长和预订增量
- 5
在 .env 中配置 VITE_AIRJAM_APPOINTMENT_ID 和 VITE_STRIPE_PUBLISHABLE_CLIENT_KEY,并在 AirJam Appointment 组件中选择 Stripe 作为支付处理器并粘贴 Stripe secret 密钥;生产环境建议使用环境变量而非 .env 文件
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- README 提及 Firebase 集成;启用相关动态功能前需自行配置,并核对 Firebase 的额度与收费。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 自定义模板需要自行注册 AirJam 和 Stripe 账户;若需处理支付,必须获取 Stripe 的 secret 与 publishable 密钥。
- 使用预订功能需注册 AirJam 并创建 Appointment 组件,按官方指南完成配置。
- 在 AirJam 中创建 Appointment 组件时,必须将预订时长设为 Daily,并设置最小/最大预订时长与预订增量,否则模板无法正常工作。
- 每个资源价格需设为 $0(免费)或高于 $0.50 USD/增量,因为 Stripe 不支持更小金额的交易。
- 需在 .env 中配置 VITE_AIRJAM_APPOINTMENT_ID 与 VITE_STRIPE_PUBLISHABLE_CLIENT_KEY,并在 AirJam 组件中选择 Stripe 并粘贴 secret 密钥以完成绑定。
- 生产环境建议使用环境变量而非 .env 文件来管理配置。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
To customize the template for your own use, you will need your own [AirJam](https://airjam.co/) and [Stripe](https://stripe.com/) account to begin. First. sign up and configure your [Stripe](https://stripe.com/) account and grab Stripe's secret and publishable keys for use. Please refer to this [doc](https://docs.stripe.com/keys) to learn how to retrieve the keys from Stripe's dashboard. If you're not interested in processing payments, you can skip the Stripe configuration altogether.
README 原文
The, sign up to [AirJam](https://airjam.co/) and create a new Appointment component by following following [this guide](https://airjam.co/appointment/how). As you are following the guide, please make sure you do the following:
README 原文
* You can add as many resources (ie. individual rentable units) as you need, however, make sure to **set booking duration as Daily**, set minimum and maximum booking duration, and set booking increments, since this template is using Daily booking interface to let users to book resource in daily increments.
README 原文
* For each resources, make sure to either set the price as $0 for free resources, or prices higher than **$0.50 USD per increment**, as Stripe does not process transactions smaller than that.
README 原文
Once you are all configured with Stripe and AirJam, have Stripe's secret and publishable keys, and have an ID for your AirJam's Appointment component, then you can add those values to the .env files to configure your account to the template. Open `.env` file and change `VITE_AIRJAM_APPOINTMENT_ID` and `VITE_STRIPE_PUBLISHABLE_CLIENT_KEY` to your Appointment component ID and Stripe's publishable key, respectively, then goto your AirJam's Appointment component, choose Stripe as the payment processor, then past Stripe's secret key to the text box below the dropdown to wire your AirJam account with your Stripe account.
README 原文
https://github.com/airjam-co/react-hospitality-site-starter/blob/main/LICENSEhttps://github.com/airjam-co/react-hospitality-site-starter/blob/main/README.mdIf you're not familiar with how to work with `.env` files, [refer to following guide](https://vite.dev/guide/env-and-mode#env-files) on how to work with `env` files in different environments. In production, it's highly recommended that you use [environment variables](https://vite.dev/guide/env-and-mode#env-variables) instead of `.env` files.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-16。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 79 / 100
- 技术栈
- Vite · React
- 网站类型
- 启动器
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2025-01-17
- 截图检查日期
- 2026-10-16
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Vite。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: codex-user-requested-batch-review-20261017 · 2026-10-16
查看当时使用的来源资料
SHA-256: d2300f3e0892db77eec890d60687d5afeb9b1768e8a833e775916f4c1a8e9ca1
2026-10-16T01:25:05.016Z
来源文件 / 仓库# Free React Serverless Hotel Booking Website Template 🛏️ 🏨  Look, ma, no servers! This free template is designed for accommodation and hospitality websites and is built with React, Typescript, Vite, Tailwind, AirJam, and Stripe. This template is built in a full serverless manner, so you can easily get started by hosting on platforms such as Vercel, Netlify, a Node server, or even on your own local machine as a static website, and you don't have to worry about bringing up a server to back it up. Although this template is designed primarily as a website for private accommodations like B&Bs and lodges, the template can easily be adapted for various bookable hospitality services, including spas, salons, car rentals, kayak rentals, etc. ## Demo A hosted demo of this template is available at https://free-react-serverless-booking-template.vercel.app/ The demo is wired up with Stripe under test mode, so feel free to use Stripe's [test card numbers](https://docs.stripe.com/testing#cards) to test payment processing flows.      ## Features * Designed as a full PWA (Progressive Web App) using Tailwind and the template is tested with various web and mobile browsers for responsiveness. All responsive settings are controllable using Tailwind classes. * Developed with TypeScript and SWC (Speedy Web Compiler), powered by Vite. To compile your project with SWC efficiency, use the `npm build` command to build your project, which triggers the Vite compiler. * Uses Stripe to process payments. Use Stripe's dashboard to enable and support various payment processing options and workflows. If you're not interested in taking payments, you can simply ignore Stripe settings and mark your resources as free on AirJam to disable payment collection features. * Booking functions are provided by AirJam's Appointment component, and it supports things like booking moderation, localization, and email notifications. Manage bookings, customize email designs, and handle internationalization via the AirJam Appointment component dashboard. * You can obviously take advantage of the flexibility of React and Javascript to add whatever features you'd like to the template. You can keep your project serverless with tools like Firebase (for database) and Clerk (for auth), or connect to [Xano](https://www.xano.com/) or custom servers for building your own custom server-based features. * The look and feel are entirely controlled by React, Tailwind, and CSS. Use these tools in any shape and form as you wish to mold the template to your specific design and functionality needs. ## Running the template ### tl;dr To build, do: ``` git clone https://github.com/airjam-co/react-hospitality-site-starter npm install npm run build ``` Then, to run: ``` mv .env.example .env npm run dev ``` ### In detail Run the steps above to clone, install, build, and run the template as-is. The template should work out-of-the-box. To customize the template for your own use, you will need your own [AirJam](https://airjam.co/) and [Stripe](https://stripe.com/) account to begin. First. sign up and configure your [Stripe](https://stripe.com/) account and grab Stripe's secret and publishable keys for use. Please refer to this [doc](https://docs.stripe.com/keys) to learn how to retrieve the keys from Stripe's dashboard. If you're not interested in processing payments, you can skip the Stripe configuration altogether. The, sign up to [AirJam](https://airjam.co/) and create a new Appointment component by following following [this guide](https://airjam.co/appointment/how). As you are following the guide, please make sure you do the following: * You can add as many resources (ie. individual rentable units) as you need, however, make sure to **set booking duration as Daily**, set minimum and maximum booking duration, and set booking increments, since this template is using Daily booking interface to let users to book resource in daily increments. * For each resources, make sure to either set the price as $0 for free resources, or prices higher than **$0.50 USD per increment**, as Stripe does not process transactions smaller than that. Once you are all configured with Stripe and AirJam, have Stripe's secret and publishable keys, and have an ID for your AirJam's Appointment component, then you can add those values to the .env files to configure your account to the template. Open `.env` file and change `VITE_AIRJAM_APPOINTMENT_ID` and `VITE_STRIPE_PUBLISHABLE_CLIENT_KEY` to your Appointment component ID and Stripe's publishable key, respectively, then goto your AirJam's Appointment component, choose Stripe as the payment processor, then past Stripe's secret key to the text box below the dropdown to wire your AirJam account with your Stripe account. If you're not familiar with how to work with `.env` files, [refer to following guide](https://vite.dev/guide/env-and-mode#env-files) on how to work with `env` files in different environments. In production, it's highly recommended that you use [environment variables](https://vite.dev/guide/env-and-mode#env-variables) instead of `.env` files. ## Learn more To learn more about specific technology used for this template, check out following resources: * [How to create new Appointment component with AirJam](https://airjam.co/appointment/how) * [Next.js Documentation](https://nextjs.org/docs) * [Tailwind Documentation](https://tailwindui.com/documentation) ## About AirJam AirJam offers a variety of serverless components that enable frontend engineers to easily add complex features to their projects without the need for server-side coding. This template leverages AirJam's Appointment component to add booking functionality. ## Support AirJam 😃 Everything in this template, including its features, is provided free of charge, sponsored by AirJam. If you like this template, you can help us out for a [couple of beers](https://donorbox.org/support-airjam) 🍺 or give it a star ⭐
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

cove
The Cove Stack: 🏝️ minimal TanStack Start template with Vite+, Better Auth, Drizzle ORM, shadcn/ui
Vite · SaaS

vite-react-boilerplate
A production ready, scalable starter template for Vite + React
Vite · 启动器

vital
Starter template for Vite with React (TypeScript). Supports Tailwind. Vitest and @react/testing-library config…
Vite · 启动器

react-vite-admin
This Starter utilizes React, Recoil, React Query, React Hooks, Typescript, Axios And Vite. 全新技术栈的后台管理系统
Vite · 后台

typescript-react_best_practices-vite_template
<⚡⚛️> Start your React project with Vite following code best practices (TypeScript, Linting, testing, CI/CD…)
Vite · 启动器

cloudflare-starter-kit
Template (boilerplate) repository for scaffolding Cloudflare Workers projects
Vite · 启动器
