Synaplan
기업을 위한 오픈소스 AI 플랫폼
ReplyBooker는 WhatsApp용 AI 접수 담당자로 고객에게 24시간 현지어로 답변하고 자동으로 예약을 잡아줍니다
ReplyBooker is an AI receptionist for WhatsApp: it answers your customers 24/7 in their own language and books appointments automatically. 14-day free trial.
비즈니스TypeScript · PLpgSQLGitHub @liibaan1257-del온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗AI customer support and booking agent for WhatsApp. Business owners describe their business (services, prices, hours, FAQs, booking policy); the agent answers customers on WhatsApp with Claude, detects what they want, and captures bookings that the owner confirms from a dashboard.
Stack: Next.js 16 (App Router) · TypeScript · Tailwind CSS 4 · shadcn/ui ·
Supabase (Postgres, Auth, Realtime, RLS) · Claude (claude-opus-5-5) ·
WhatsApp Cloud API (Meta) · Vercel.
| Where | What |
|---|---|
/signup, /login | Email + password accounts. Each owner gets their own business (multi-tenant). |
/dashboard | Setup checklist, active conversations, leads, upcoming/pending bookings, recent chats. Updates live. |
/dashboard/knowledge | Business details, services & prices, opening hours, FAQs, booking policy, WhatsApp connection, preview of what the AI knows. |
/dashboard/chat-test | Chat as a customer against the real engine (separate "test" channel). |
/dashboard/bookings | Upcoming / pending / past bookings; confirm, cancel, complete (the customer gets a WhatsApp message); add bookings by hand. |
/dashboard/conversations/[id] | Full chat history with intents. |
/api/whatsapp/webhook | Meta webhook: verification (GET) and incoming messages (POST). |
/api/whatsapp/webhook. The X-Hub-Signature-256 HMAC is
checked on the raw body; the route answers 200 immediately and continues
in after().{ reply, intent, customer_name, booking }.lang).
Links like /fr/dashboard switch the language. Text lives in
lib/i18n/messages/*.ts; TypeScript fails the build if a language misses a key./privacy policy page (6 languages; set the optional
NEXT_PUBLIC_CONTACT_EMAIL to show your contact address). In Settings
owners download all their data (JSON) and can delete their account
permanently. A customer's conversation (messages + bookings) can be erased
from its page. Only necessary cookies (session, language): no cookie banner needed.NEXT_PUBLIC_CONTACT_WHATSAPP).
The customer pays you (Mobile Money, Waafi, bank…), and you press +1 month,
+1 year, Pause or change the plan on the Admin page.vercel.json) confirmed
bookings in the next day get a WhatsApp reminder: free text in the customer's
language inside WhatsApp's 24-hour window, otherwise the business's approved
Meta template (appointment_reminder by default, body
"Hi {{1}}, a reminder of your {{2}} appointment at {{3}} on {{4}}…").supabase/migrations/20261010100000_schema.sql, then
supabase/migrations/20261011100000_global.sql (currency, 12h/24h time,
customer language, sign-up time zone), then
supabase/migrations/20261012100000_twilio.sql (Twilio number, provider), then
supabase/migrations/20261013100000_billing.sql (plans, access, admin flag), then
supabase/migrations/20261014100000_reminders.sql (appointment reminders).
Optional checks: supabase/tests/schema_test.sql, global_test.sql,
twilio_test.sql and billing_test.sql → "Success. No rows returned".
Make yourself the operator:
update public.profiles set is_platform_admin = true where email = '[email protected]';https://<your-app>/auth/confirm to Redirect URLs.See .env.example. Mark every secret as Sensitive:
| Variable | Secret? |
|---|---|
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY | public |
SUPABASE_SERVICE_ROLE_KEY | secret (server-only) |
ANTHROPIC_API_KEY | secret |
WHATSAPP_VERIFY_TOKEN, WHATSAPP_APP_SECRET, WHATSAPP_ACCESS_TOKEN | secret (Meta) |
TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN | secret (Twilio, optional) |
CRON_SECRET | secret (daily reminder job; any long random string) |
RESEND_API_KEY | secret, optional (emails you when someone signs up; Resend key with sending access) |
NOTIFY_EMAIL | optional (where signup emails go; defaults to NEXT_PUBLIC_CONTACT_EMAIL) |
NEXT_PUBLIC_CONTACT_EMAIL, NEXT_PUBLIC_CONTACT_WHATSAPP | public, optional (contact links on home + privacy page) |
Redeploy after changing them.
https://<your-app>/api/whatsapp/webhook, Verify token = your
WHATSAPP_VERIFY_TOKEN. Subscribe to messages.TWILIO_ACCOUNT_SID and TWILIO_AUTH_TOKEN (Twilio Console → Account
Info) in Vercel and redeploy.https://<your-app>/api/whatsapp/twilio
(HTTP POST). Requests are verified with X-Twilio-Signature.+14155238886) in Knowledge
base → WhatsApp connection. Replies and booking confirmations go back
through the provider the customer wrote in on.npm install
cp .env.example .env.local # fill in
npm run dev
| Command | What |
|---|---|
npm run dev | Development server |
npm run build | Production build |
npm run lint / npm run typecheck | ESLint / TypeScript |
npm test | Unit tests (time zones, booking rules) |
lib/supabase/admin.ts imports server-only).lib/security/headers.ts.