Merge pull request #85 from ArnasDon/chore/whatsapp-trademark-symbol

chore: add WhatsApp® on first mention across user-facing surfaces
This commit is contained in:
Arnas Donauskas 2026-05-06 13:52:23 +03:00 committed by GitHub
commit 280e5b8cd9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 17 additions and 17 deletions

View File

@ -1,6 +1,6 @@
# CRM Template for WhatsApp
> Self-hostable CRM template for WhatsApp — shared inbox, contacts,
> Self-hostable CRM template for WhatsApp® — shared inbox, contacts,
> sales pipelines, broadcasts, and no-code automations. Fork it, brand
> it, host it.

View File

@ -1,6 +1,6 @@
# Documentation
A self-hostable CRM template for WhatsApp built on Next.js and Supabase.
A self-hostable CRM template for WhatsApp® built on Next.js and Supabase.
These docs walk you from a freshly forked repo to a production deploy.
## Reading order

View File

@ -10,7 +10,7 @@ want to change something in your fork.
| Rendering | **Next.js 16** (App Router) | Server components for data-fetch pages; client components where interactivity's needed. React 19. |
| UI | **Tailwind v4** + **shadcn/base-ui** primitives | Tailwind's zero-runtime styling, shadcn patterns for composable, dark-theme-first components. |
| Data + Auth | **Supabase** | Postgres with Row-Level Security, built-in email/password auth, Storage for avatars, Realtime for the inbox. |
| WhatsApp | **Meta Cloud API** | Official Business API. No third-party gateway. |
| WhatsApp® | **Meta Cloud API** | Official Business API. No third-party gateway. |
| Encryption | `node:crypto` AES-256-GCM | Per-user WhatsApp access + verify tokens at rest. |
| Scheduler | External HTTP pinger | Hits `GET /api/automations/cron` to drain Wait-step executions. |

View File

@ -1,6 +1,6 @@
# Automations cron
The **Automations** module lets you build flows that react to WhatsApp
The **Automations** module lets you build flows that react to WhatsApp®
events (new message, new contact, keyword match, schedule, etc.). Most
steps run inline — the exception is the **Wait** step, which parks the
execution in `automation_pending_executions` until its due time.

View File

@ -101,7 +101,7 @@ plain-HTTP version.
## 7. Update the Meta webhook
Back in **Meta for Developers → WhatsApp → Configuration**, change the
Back in **Meta for Developers → WhatsApp® → Configuration**, change the
callback URL to `https://<your-domain>/api/whatsapp/webhook` and re-verify.
## 8. Schedule the automations cron

View File

@ -56,7 +56,7 @@ AUTOMATION_CRON_SECRET=generate-a-long-random-string
- Rotate `SUPABASE_SERVICE_ROLE_KEY` if it leaks — Supabase lets you
regenerate it under Project Settings → API.
- Treat `ENCRYPTION_KEY` like a database master key. Losing it means
connected WhatsApp accounts must reconnect; rotating it means the same.
connected WhatsApp® accounts must reconnect; rotating it means the same.
## Next step

View File

@ -30,7 +30,7 @@ cp .env.local.example .env.local
You cannot run `npm run dev` until **at least** `NEXT_PUBLIC_SUPABASE_URL`
and `NEXT_PUBLIC_SUPABASE_ANON_KEY` are set. You need the full Supabase
setup before WhatsApp features will work, so do that next.
setup before WhatsApp® features will work, so do that next.
## 4. Set up Supabase

View File

@ -74,7 +74,7 @@ emails link back correctly.
## 6. (Optional) Storage
The app downloads WhatsApp media through Meta's `/download` endpoint and
The app downloads WhatsApp® media through Meta's `/download` endpoint and
currently relays it on demand rather than caching it in Supabase Storage.
No bucket setup is required for a default install.

View File

@ -41,7 +41,7 @@ In Supabase → **Authentication → Providers → Email**, either:
Set `NEXT_PUBLIC_SITE_URL` **and** add the same origin to Supabase →
**Authentication → URL Configuration → Redirect URLs**.
## WhatsApp
## WhatsApp®
### Webhook verification fails in Meta

View File

@ -1,6 +1,6 @@
# WhatsApp setup
This template talks to the official **WhatsApp Business Cloud API** (Meta). Each
This template talks to the official **WhatsApp® Business Cloud API** (Meta). Each
account stores its own `phone_number_id`, `waba_id`, and encrypted
`access_token` — there is no shared app-level token. This page walks
through getting those values and wiring the webhook.

View File

@ -159,7 +159,7 @@ export default function AutomationsPage() {
<div>
<h1 className="text-2xl font-bold text-white">Automations</h1>
<p className="mt-1 text-sm text-slate-400">
Build workflows that react to WhatsApp events automatically.
Build workflows that react to WhatsApp® events automatically.
</p>
</div>
<Button

View File

@ -271,7 +271,7 @@ export default function InboxPage() {
<div className="flex shrink-0 items-center justify-center gap-2 border-b border-amber-500/20 bg-amber-500/10 px-4 py-2">
<WifiOff className="h-4 w-4 text-amber-400" />
<p className="text-xs text-amber-400">
WhatsApp is not connected. Go to Settings to connect your account.
WhatsApp® is not connected. Go to Settings to connect your account.
</p>
</div>
)}

View File

@ -39,7 +39,7 @@ export default function SettingsPage() {
<div>
<h1 className="text-2xl font-bold text-white">Settings</h1>
<p className="text-sm text-slate-400 mt-1">
Manage your profile, WhatsApp integration, message templates, and
Manage your profile, WhatsApp® integration, message templates, and
tags.
</p>
</div>

View File

@ -77,7 +77,7 @@ export default async function Image() {
maxWidth: 1000,
}}
>
<span>Run your WhatsApp business from&nbsp;</span>
<span>Run your WhatsApp® business from&nbsp;</span>
<span style={{ color: '#a78bfa' }}>one inbox.</span>
</div>

View File

@ -25,7 +25,7 @@ export function Hero() {
<div>
<div className="inline-flex items-center gap-2 rounded-full border border-slate-800 bg-slate-900/60 px-3 py-1 text-xs text-slate-300">
<ShieldCheck className="h-3.5 w-3.5 text-violet-400" />
Built on the official WhatsApp Business API
Built on the official WhatsApp® Business API
</div>
<h1 className="mt-5 text-4xl font-bold tracking-tight text-white sm:text-5xl lg:text-6xl">

View File

@ -11,11 +11,11 @@ export const SITE_URL =
export const SITE_NAME = 'CRM Template for WhatsApp'
export const SITE_TAGLINE = 'Run your WhatsApp business from one inbox'
export const SITE_TAGLINE = 'Run your WhatsApp® business from one inbox'
/** Default description — reused by layout metadata and structured data. */
export const SITE_DESCRIPTION =
'A CRM template for WhatsApp built for small teams: shared inbox, contact hub, sales pipelines, broadcasts, and no-code automations — built on the official WhatsApp Business API.'
'A CRM template for WhatsApp® built for small teams: shared inbox, contact hub, sales pipelines, broadcasts, and no-code automations — built on the official WhatsApp Business API.'
/**
* Keyword targets. Search engines largely ignore the meta keywords