接收 WhatsApp 文字与语音消息,语音经 ElevenLabs 转写后进入意图识别流程
whatsapp-receptionist — Next.js SaaS模板
作者 Hiberius
基于 Next.js 的开源 AI 接待员 SaaS 启动器,通过 WhatsApp 接收文字与语音消息,在 Google Calendar 上完成真实预约,必要时转接人工,并支持多租户与 GDPR 合规。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
目前有 1 张原始预览,可打开完整图片查看设计细节。
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
通过 Google Calendar OAuth 查询真实可用时段并完成预约,数据库层面防止重复预订
触发安全护栏或客户要求时转接人工,运营者收到含上下文与深链的邮件,客户收到受理确认
多租户架构:每个租户连接自己的 WhatsApp 号码,凭据加密存储,22 张表均启用行级安全
GDPR 原生支持:第 15 条数据导出与第 17 条删除端点、审计日志、日志中自动脱敏 PII、按隐私政策阈值执行的每日保留任务
集成 Stripe 订阅与客户门户,并支持意大利 B2B 电子发票(Fatture in Cloud)
模板详细介绍
这是一个面向 WhatsApp 场景的 AI 接待员 SaaS 启动器,采用 Next.js App Router 构建,后端依赖 Supabase Postgres 与 Anthropic Claude,消息通道使用 360dialog Business API,语音转写使用 ElevenLabs,日历集成使用 Google Calendar OAuth。项目以多租户为设计前提,每个租户可连接自己的 WhatsApp 号码,并配置营业时间、服务项目、知识库与助手人设。
功能层面,系统能接收 WhatsApp 文字与语音消息,理解意图后查询真实可用时段并完成预约,同时发送确认与提醒;当触发安全护栏或客户明确要求时,会将会话状态切换并转交人工,向运营者发送含上下文与深链的邮件,并向客户发送已受理的确认。租户仪表盘包含会话收件箱、日历、账单、WhatsApp 设置、营业时间、服务、AI 人设与知识库等模块,均读取实时租户数据。
项目在 README 中明确区分了各模块的完成度:领域服务、数据库、安全原语、自助注册、租户仪表盘、多租户 WhatsApp、人工转接、后台任务与数据保留策略均已实现;告警为部分实现,尚无 Sentry 聚合异常;租户隔离的 RLS 在运行时尚未被实际验证,跨租户管理面板也未接通。这些限制在文档中如实标注,而非以虚构数据填充界面。
适合你的项目吗?
适用场景
- 为本地服务类商家(如诊所、美容、维修)搭建可预约的 WhatsApp 自动接待入口
- 作为多租户 SaaS 产品的起点,在已有认证、账单与租户隔离基础上继续开发
- 需要面向欧洲市场、对数据导出与删除有明确合规要求的对话式预约系统
- 在自托管环境中运行一套可替换 AI 模型配置的 WhatsApp 接待员,避免依赖非官方客户端
适合人群
- 熟悉 Next.js、Supabase 与 TypeScript,希望基于现有多租户骨架二次开发的团队
- 需要 WhatsApp 预约与人工转接能力,并接受自行配置外部服务凭据的开发者
- 对 GDPR 数据导出、删除与日志脱敏有明确要求,倾向自托管部署的项目
- 希望以 MIT 许可使用、修改和分发代码,并自行承担外部服务费用的使用者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
克隆仓库后复制 .env.example 为 .env.local,运行 npm ci 与 npm run dev 即可启动,营销页与法律页无需任何凭据即可渲染
- 2
访问仪表盘需要 Supabase 项目(免费层即可),其余集成均为可选并按功能开关控制:缺少 Anthropic 密钥时 AI 不回复,缺少 Resend 时邮件仅记录日志,不会因缺少密钥而抛错
- 3
可运行 ./scripts/setup.sh 交互式填写环境变量,完整变量说明见 .env.example 内联注释
- 4
生产部署参考 docs/deployment.md;README 中的截图由运行中的应用通过 node scripts/capture-screenshots.mjs 生成,非设计稿
- 5
代码采用 MIT 许可,可免费使用、修改、商用与分发,但需保留版权与许可声明;演示图片、字体、图标等第三方素材需单独核对许可,域名、托管、数据库、支付与 AI 等外部服务可能另行收费
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 访问仪表盘需要 Supabase 项目(免费层即可);其余集成按功能开关控制:缺少 Anthropic 密钥时 AI 不会回复,缺少 Resend 时邮件仅记录日志而不发送。
- WhatsApp 文字与语音消息依赖 360dialog Business API,语音转写依赖 ElevenLabs,均需自行配置对应外部服务凭据。
- 预约与可用时段查询依赖 Google Calendar OAuth 授权,需自行完成日历集成配置。
- 订阅与客户门户依赖 Stripe,意大利 B2B 电子发票依赖 Fatture in Cloud,均需外部服务账号。
- 不适合希望开箱即用、不愿配置 WhatsApp Business 的用户;目前界面语言仅意大利语;跨租户管理面板尚未接通。
- 界面语言为意大利语,英文翻译尚未完成。
- 应用仍带有 Ambrogio.ai 品牌(文案、Logo 与意大利语营销页),需自行替换为用户自己的品牌。
- 服务端模块使用 service-role 客户端绕过 RLS,租户隔离目前依赖手写 tenant_id 过滤,RLS 策略在运行时尚未被实际验证。
- 跨租户管理面板尚未接通,相关读取绕过 RLS,需要专门服务与隔离测试。
- 告警为部分实现:仅当出站队列停止消费时由看门狗发送邮件,尚无 Sentry,单个异常仅记录日志而不聚合。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
To reach the dashboard you need a Supabase project (free tier is enough) — the rest of the integrations are optional and feature-gated: without an Anthropic key the AI simply does not reply, without Resend the mailer logs instead of sending, and so on.
README 原文
Text and voice notes through the 360dialog Business API (an official Meta BSP) plus ElevenLabs speech-to-text.
README 原文
Google Calendar OAuth, availability from real business hours and services, database-level protection against double-booking, confirmations and reminders.
README 原文
Subscriptions and Customer Portal, plus electronic invoicing for Italian B2B through Fatture in Cloud.
README 原文
**A poor fit if** you want something that works out of the box without configuring WhatsApp Business, if you need a language other than Italian today, or if you need cross-tenant administration — that panel is not wired.
README 原文
The interface language is Italian. English translation is not done.
README 原文
The application still ships with the **Ambrogio.ai** brand — copy, logo and Italian marketing pages — because that is the product it was extracted from.
README 原文
server modules use the service-role client, which bypasses RLS. Isolation currently rests on hand-written `tenant_id` filters, now covered by regression tests that fail when a filter is removed — but the policies themselves are never exercised at runtime.
README 原文
**Not wired.** Those reads bypass RLS and need a dedicated service with isolation tests.
README 原文
https://github.com/Hiberius/whatsapp-receptionist/blob/main/LICENSEhttps://github.com/Hiberius/whatsapp-receptionist/blob/main/README.md**Partial.** A watchdog emails an alert when the outbound queue stops draining. No Sentry yet, so individual exceptions are logged but not aggregated.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-08。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 92 / 100
- 技术栈
- Next.js · React
- 网站类型
- SaaS · 启动器
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-13
- 截图检查日期
- 2026-10-08
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-08
查看当时使用的来源资料
SHA-256: 38861194318dffde7e457df06c2d603e712d6a35953a246e894f88c33fdc348a
2026-10-08T02:05:47.750Z
来源文件 / 仓库<div align="center"> <img src="docs/screenshots/hero-banner.svg" alt="WhatsApp Receptionist — open-source AI receptionist that books real appointments on WhatsApp" width="100%" /> # WhatsApp Receptionist ### The open-source AI receptionist that books real appointments on WhatsApp **Crafted in Italy 🇮🇹 · GDPR-first · Self-hostable · MIT** [](LICENSE) [](https://nextjs.org/) [](https://react.dev/) [](https://www.typescriptlang.org/) [](https://anthropic.com) [](#quality-gate) [](docs/SECURITY-AUDIT-NOTES.md) [](#gdpr--security) [](https://github.com/Hiberius/whatsapp-receptionist/stargazers) [Project status](docs/PROJECT-STATUS.md) · [Quickstart](#quickstart) · [Documentation](docs/) · [Roadmap](docs/ROADMAP.md) · [Italiano 🇮🇹](README.it.md) </div> --- ## What it does A customer sends a WhatsApp message — text or voice note — at 22:40 on a Sunday. The AI understands what they want, checks the real availability on your calendar, books the appointment, and confirms it. When the message needs a person instead, it escalates to you and tells the customer someone is coming. - **Receives WhatsApp messages and voice notes**, around the clock - **Understands intent and books real appointments** on Google Calendar, with confirmations and reminders - **Hands off to a human** when a guardrail fires or the customer asks — the conversation flips state, you get an email, the customer is told - **Multi-tenant**: each tenant connects its own WhatsApp number and configures its own hours, services, knowledge base and assistant persona <img src="docs/screenshots/landing-1280.png" alt="Landing page" width="100%" /> > The screenshots in this README are captured from the running application with > `node scripts/capture-screenshots.mjs`. They are not mockups. --- ## Honest state of play Most open-source READMEs describe the best version of the project. This one describes the actual one. The full breakdown, with the commands to reproduce every number, is in **[docs/PROJECT-STATUS.md](docs/PROJECT-STATUS.md)**. | Layer | State | |---|---| | Domain services (`src/server/`) | **Real.** Booking with availability and a GiST constraint against double-booking, Stripe subscription lifecycle, WhatsApp outbox with `FOR UPDATE SKIP LOCKED`, retry/backoff and dead-letter, webhook idempotency, Google Calendar OAuth, pgvector RAG, GDPR Art. 15/17. | | Database (`supabase/migrations/`) | **Real.** 22 tables, RLS on every one, `timestamptz` throughout, money as integer cents. | | Security primitives | **Real.** Stripe signature over the raw body, timing-safe secret comparison, HMAC-signed OAuth state bound to the tenant, AES-256-GCM for stored credentials, nonce-based CSP. | | Self-service signup | **Working.** Register → magic link → `/auth/callback` → onboarding → dashboard, with auth guards on every authenticated segment. | | Tenant dashboard | **Working.** Dashboard, conversations inbox with operator reply, calendar, billing, WhatsApp settings, business hours, services, AI persona, knowledge base — all reading live tenant data. | | Multi-tenant WhatsApp | **Working.** Each tenant connects its own number. The API key is encrypted at rest and resolved per tenant at send time; a number cannot be claimed by a second tenant. | | Human escalation | **Working.** Status change, operator email with context and a deep link, and an acknowledgement to the customer. | | Background jobs | **Working.** Seven cron jobs, with a regression test tying `vercel.json` to the exported route handlers. | | Data retention | **Working.** A daily job enforcing exactly the thresholds the privacy policy states, with a dry-run mode and a test that fails if code and policy diverge. | | Alerting | **Partial.** A watchdog emails an alert when the outbound queue stops draining. No Sentry yet, so individual exceptions are logged but not aggregated. | | Tenant isolation | **Partly proven.** Repository filters are covered by regression tests that fail when a `tenant_id` filter is deleted. RLS itself is still never exercised at runtime. **The most important open item.** | | Cross-tenant admin panel | **Not wired.** Those reads bypass RLS and need a dedicated service with isolation tests. The screens say so rather than showing invented data. | **41 frontend pages · 41 API routes · 22 tables · 544 unit and integration tests · 56 Playwright E2E tests · production build verified · zero vulnerabilities in production dependencies.** --- ## Quickstart ```bash git clone https://github.com/Hiberius/whatsapp-receptionist.git cd whatsapp-receptionist cp .env.example .env.local npm ci npm run dev ``` Open <http://localhost:3000>. The marketing site, pricing, verticals, blog, help centre and legal pages render immediately with no credentials at all. To reach the dashboard you need a Supabase project (free tier is enough) — the rest of the integrations are optional and feature-gated: without an Anthropic key the AI simply does not reply, without Resend the mailer logs instead of sending, and so on. Nothing throws because a key is missing. `./scripts/setup.sh` walks through the variables interactively. The full reference is in [`.env.example`](.env.example), documented inline. For production, see [`docs/deployment.md`](docs/deployment.md). --- ## Features | | | |-----|-----| | **WhatsApp + voice** | Text and voice notes through the 360dialog Business API (an official Meta BSP) plus ElevenLabs speech-to-text. No Baileys, no scraped clients. | | **Real bookings** | Google Calendar OAuth, availability from real business hours and services, database-level protection against double-booking, confirmations and reminders. | | **Human escalation** | Guardrails on sensitive topics, explicit handoff requests, operator notification, and an acknowledgement to the customer so silence is never the answer. | | **Editable AI persona** | Each tenant can rewrite the assistant's personality. Safety and output rules are composed around it and cannot be overridden. | | **Knowledge base with RAG** | pgvector semantic retrieval over documents the tenant uploads — prices, cancellation policy, directions, FAQs. | | **GDPR-native** | Art. 15 export and Art. 17 deletion endpoints, audit logging, automatic PII redaction in logs, EU hosting, and a retention job that enforces the published policy. | | **Stripe + Italian SDI** | Subscriptions and Customer Portal, plus electronic invoicing for Italian B2B through Fatture in Cloud. | | **Multi-tenant by construction** | Row Level Security on all 22 tables, per-tenant WhatsApp credentials, tenant-scoped everything. | --- ## Tech stack | Layer | Choice | Why | |---|---|---| | Framework | **Next.js 15.5** App Router | Server Components, Route Handlers, middleware | | Runtime | **React 19** + Node 22 | Async server components, concurrent rendering | | Language | **TypeScript 5.9 strict** | `exactOptionalPropertyTypes`, `noUncheckedIndexedAccess`, no `any` in `src/` | | Database | **Supabase Postgres (EU)** | Managed Postgres, RLS native, pgvector. Migrations are hand-written SQL — deliberately, so the policies are readable. | | Auth | **Supabase Auth** | httpOnly + secure + sameSite cookies, SSR-aware session | | AI | **Anthropic Claude** | Model IDs are configuration (`ANTHROPIC_MODEL_PRIMARY` / `_FAST`), not hardcoded | | Voice | **ElevenLabs** | Italian speech-to-text quality | | Messaging | **360dialog Business API** | Official Meta BSP (`waba-v2.360dialog.io`) | | Calendar | **Google Calendar OAuth** | Encrypted token storage, conflict detection | | Billing | **Stripe** + **Fatture in Cloud** | Subscriptions, Customer Portal, Italian SDI invoicing | | Rate limit | **Upstash Redis (EU)** | Named policies per endpoint | | Logging | **Pino** | Structured JSON with automatic PII redaction | | Testing | **Vitest 4** + **Playwright** | 544 unit/integration + 56 E2E | | Tooling | **ESLint 9 flat** + **Prettier 3** + **Husky** | Pre-commit lint-staged, gitleaks in CI | --- ## Architecture ``` src/ ├── app/ │ ├── (admin)/ super-admin cross-tenant panel │ ├── (auth)/ login, register │ ├── (dashboard)/ tenant dashboard — auth guard lives in the layout │ ├── auth/callback/ magic-link landing, with open-redirect validation │ ├── api/ 41 route handlers │ ├── legal/ privacy, terms, DPA, cookie, security │ ├── verticali/ marketing pages per vertical │ └── page.tsx landing ├── components/ │ ├── marketing/ Hero, Features, Verticals, Pricing, CTA │ ├── dashboard/ shell, operator reply, knowledge documents │ ├── settings/ WhatsApp connection, business hours, services, AI persona │ └── forms/ useApiForm + FormFeedback, shared by every form ├── lib/ │ ├── api/ jsonHandler, body parsing │ ├── auth/ session, guards, cookies, safe redirect │ ├── health/ dependency probes, shared by /status and /api/health/deep │ ├── http/ fetchWithTimeout │ ├── logging/ Pino with PII redaction │ ├── rate-limit/ Upstash policies │ ├── security/ CSP nonce, timing-safe comparisons, internal job auth │ └── supabase/ server + admin clients ├── server/ business logic — never imported by client components │ ├── ai/ adapter, intent router, booking extractor, prompt composition │ ├── appointments/ booking, reminders │ ├── billing/ Stripe + Fatture in Cloud │ ├── conversations/ inbox, operator messages, escalation │ ├── gdpr/ Art. 15 export, Art. 17 delete, retention │ ├── monitoring/ health watchdog │ ├── notifications/ mailer + templates │ └── whatsapp/ service, repository, outbox, provisioning, voice pipeline └── middleware.ts CSP nonce + COEP/COOP/CORP supabase/migrations/ 22 tables, RLS on every one tests/ 544 unit + integration tests e2e/ 56 Playwright tests ``` --- ## GDPR & security Built for the European market, and the defaults reflect it. - **Row Level Security on all 22 tables**, verified by `npm run db:lint`, which derives the table list from the migrations themselves rather than a hand-maintained allowlist - **Webhook signature verification** with timing-safe comparison (Stripe over the raw body, WhatsApp shared secret) - **Credentials encrypted at rest** with AES-256-GCM — OAuth tokens and per-tenant WhatsApp API keys - **CSP nonce per request**, HSTS, COEP, COOP, CORP, `X-Frame-Options: DENY` - **Automatic PII redaction** in logs: email, phone, fiscal code, VAT number, IBAN, tokens - **Rate limiting** with named policies per endpoint - **GDPR Art. 15 export and Art. 17 deletion** with audit logging - **Data retention** enforced daily against the thresholds the privacy policy publishes - **Zero vulnerabilities in production dependencies**, enforced by a CI gate. One dev-only advisory is knowingly accepted, with its reopening condition written down in [`docs/SECURITY-AUDIT-NOTES.md`](docs/SECURITY-AUDIT-NOTES.md) **Known limitation, stated plainly:** server modules use the service-role client, which bypasses RLS. Isolation currently rests on hand-written `tenant_id` filters, now covered by regression tests that fail when a filter is removed — but the policies themselves are never exercised at runtime. Proving isolation against a real Postgres in CI is the top priority for v0.3. --- ## Quality gate ```bash npm run verify # typecheck + lint + 544 tests + RLS coverage npm run build # production build npm run test:e2e # 56 Playwright tests, no credentials required ``` CI runs six jobs on every pull request: **verify**, **coverage**, **production build**, **E2E**, **secret scan (gitleaks)** and **production dependency audit**. The secret scan and the audit are blocking — a gate that cannot fail is not a gate. A note on the build: `npm run verify` does **not** include it, and `next build` catches things `tsc --noEmit` cannot, such as invalid exports from a `route.ts`. Run both. --- ## Screenshots | | | |---|---| | Pricing | <img src="docs/screenshots/pricing-1280.png" alt="Pricing page" width="100%" /> | | Vertical (dental) | <img src="docs/screenshots/dental-1280.png" alt="Dental vertical page" width="100%" /> | | Service status | <img src="docs/screenshots/status-1280.png" alt="Status page with live dependency probes" width="100%" /> | | Landing (mobile) | <img src="docs/screenshots/landing-mobile.png" alt="Landing page on mobile" width="45%" /> | The status page runs real probes against Supabase, Upstash, Stripe and Anthropic at request time. It deliberately publishes no historical uptime percentage, because nothing measures one yet. Authenticated screens are not shown here: capturing them would need a tenant with real conversations, and filling them with invented data is exactly what this project spent a release removing. --- ## A note on branding The repository is the generic **WhatsApp Receptionist**. The application still ships with the **Ambrogio.ai** brand — copy, logo and Italian marketing pages — because that is the product it was extracted from. Everything user-facing is yours to replace: strings live in the marketing components and `NEXT_PUBLIC_APP_NAME`, and the design tokens are in `src/styles/tokens.css`. The interface language is Italian. English translation is not done. --- ## Is this for you? **A good fit if** you want to self-host an AI receptionist, you are building a booking SaaS and want a multi-tenant foundation with RLS and Stripe already wired, or you are looking for a substantial real-world Next.js 15 + Supabase codebase to learn from. **A poor fit if** you want something that works out of the box without configuring WhatsApp Business, if you need a language other than Italian today, or if you need cross-tenant administration — that panel is not wired. --- ## Why this exists There are AI chatbots and there are booking systems. Nothing combined them with European GDPR rigour and Italian B2B fiscal compliance. This started as a real deployment for a clinic and became the thing that was missing. Version 0.2 was rebuilt with **Claude Opus 5 in ultracode mode** — Anthropic's multi-agent orchestration. An eight-dimension audit where every auditor was followed by an adversarial verifier instructed to refute its findings, then parallel implementation workflows. Roughly a third of the initial findings were refuted or downgraded once a second agent tried to disprove them by reading the actual files, which is precisely how single-pass AI review fails. The gravest findings were still verified by hand before anything changed. What that process found, and what it deliberately left alone, is published in full: [`docs/audit/2026-07-27-audit-prodotto.md`](docs/audit/2026-07-27-audit-prodotto.md). If you fork it commercially that is entirely fine — MIT means MIT. Just don't claim you wrote it from scratch. --- ## Roadmap Next up, in priority order: 1. **Tenant isolation proven against a real database** — seed two tenants in CI and assert A cannot read B through the RLS policies themselves 2. **Sentry** with source maps and release tracking 3. **Resource and team entities** — a practice with two chairs cannot be modelled today, and one tenant means one user forever 4. **AI generation moved out of the webhook** into a dedicated outbox job 5. **Prompt caching** and a per-tenant AI cost ceiling 6. **Cross-tenant admin panel** on a tested service 7. **Prompt injection defences** and a much larger AI evaluation set Full list, including longer-term bets: [`docs/ROADMAP.md`](docs/ROADMAP.md). --- ## The skill behind it The reasoning in this codebase is packaged as an Agent Skill, so you can apply it on any stack rather than adopting this one: **[whatsapp-receptionist-builder](https://github.com/Hiberius/whatsapp-receptionist-builder)** — the webhook signature over the raw body, the 24-hour customer service window, idempotency against Meta retries, and double-booking prevention at the database. Plus offline tools for the two things you cannot test without a phone number. ``` npx skills add Hiberius/whatsapp-receptionist-builder ``` It is one of [ten](https://github.com/Hiberius/hiberius-skills) built the same way. ## Contributing Pull requests welcome — see [`CONTRIBUTING.md`](CONTRIBUTING.md). The repository is primed for [Claude Code](https://claude.com/claude-code): `CLAUDE.md` and `AGENTS.md` carry the project's conventions, so an agent opening this repo starts with the right context. Two house rules worth knowing before you open a PR: 1. **Run `npm run verify` and `npm run build`.** Verify does not include the build. 2. **Don't add a claim the code cannot back.** If a number appears in the README or the UI, it must be reproducible. This project removed an entire layer of invented metrics in 0.2.0 and would rather not grow another. --- ## License MIT © [Christian Calabrò](https://github.com/Hiberius) — see [`LICENSE`](LICENSE). --- <div align="center"> Made in Italy by Christian Calabrò ([@Hiberius](https://github.com/Hiberius)) If it saved you time, [star the repo](https://github.com/Hiberius/whatsapp-receptionist). </div>
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

ai-website-cloner-template
Clone any website with one command using AI coding agents
Next.js · 启动器

Next.js SaaS Starter
Next.js SaaS Starter 是 Next.js 官方维护的 SaaS 起点模板,定位介于学习资源和可直接部署的脚手架之间。
Next.js · SaaS

Next.js Commerce
Next.js Commerce 是 Vercel 团队维护的电商启动模板,基于 Next.js App Router 构建,采用服务端渲染、React Server Components、Server Actions …
Next.js · 电商

Next-js-Boilerplate
Next-js-Boilerplate 是一个面向 Next.js 16、Tailwind CSS 4 和 TypeScript 的启动器,核心定位是开发者体验优先。
Next.js · 启动器

tailwind-nextjs-starter-blog
tailwind-nextjs-starter-blog 是一个面向个人技术博客的 Next.js 与 Tailwind CSS 启动模板,其 v2 版本基于 App Router 与 React Server Comp…
Next.js · 博客

next-forge
Production-grade Turborepo template for Next.js apps.
Next.js · 启动器
