Self-hostable CRM template for WhatsApp — shared inbox, contacts, sales pipelines, broadcasts, and no-code automations. Fork it, brand it, host it.
Go to file
Arnas Donauskas b18b5fa8e0
Merge pull request #380 from ArnasDon/dependabot/npm_and_yarn/dev-dependencies-b44e82a8cb
chore(deps-dev): bump the dev-dependencies group with 4 updates
2026-07-17 13:36:02 +03:00
.github chore(deps): bump actions/checkout from 6 to 7 2026-06-22 10:34:41 +00:00
docs Add MCP server for the public API 2026-07-08 17:30:24 +03:00
mcp-server Correct registry namespace casing; bump to 0.1.1 2026-07-08 17:58:20 +03:00
messages fix(i18n): add missing contact tags tab label 2026-07-15 23:41:29 -06:00
public refactor(inbox): record voice notes client-side, drop server ffmpeg 2026-06-18 11:27:12 +03:00
src Merge pull request #393 from mooouuu/feat/tag-added-trigger 2026-07-17 12:48:18 +03:00
supabase/migrations fix: stop inbound chats fragmenting into duplicate conversations (#363) 2026-07-10 12:27:46 +03:00
.editorconfig chore: contributor experience — CoC, templates, Dependabot, editor configs 2026-04-20 21:16:21 +03:00
.env.local.example Merge pull request #328 from ivanmercedes/feat/i18n-support 2026-07-07 12:57:04 +03:00
.gitignore fix(webhook): require META_APP_SECRET, fail closed 2026-04-20 18:54:52 +03:00
.prettierignore refactor(inbox): record voice notes client-side, drop server ffmpeg 2026-06-18 11:27:12 +03:00
.prettierrc chore: contributor experience — CoC, templates, Dependabot, editor configs 2026-04-20 21:16:21 +03:00
AGENTS.md Initial commit from Create Next App 2026-04-16 17:52:39 +03:00
CHANGELOG.md fix: stop inbound chats fragmenting into duplicate conversations (#363) 2026-07-10 12:27:46 +03:00
CLAUDE.md Initial commit from Create Next App 2026-04-16 17:52:39 +03:00
components.json feat: initial commit 2026-04-16 17:53:27 +03:00
CONTRIBUTING.md chore: rename product to "CRM Template for WhatsApp" 2026-05-06 11:52:11 +03:00
eslint.config.mjs refactor(inbox): record voice notes client-side, drop server ffmpeg 2026-06-18 11:27:12 +03:00
LICENSE chore: OSS metadata + LICENSE + SECURITY + complete env example 2026-04-20 20:41:14 +03:00
next.config.ts fix: full-page navigation after login so the session is applied (#365) 2026-07-17 12:29:01 +03:00
package-lock.json Merge pull request #380 from ArnasDon/dependabot/npm_and_yarn/dev-dependencies-b44e82a8cb 2026-07-17 13:36:02 +03:00
package.json Merge pull request #380 from ArnasDon/dependabot/npm_and_yarn/dev-dependencies-b44e82a8cb 2026-07-17 13:36:02 +03:00
postcss.config.mjs Initial commit from Create Next App 2026-04-16 17:52:39 +03:00
README.md Add MCP server for the public API 2026-07-08 17:30:24 +03:00
tsconfig.json Initial commit from Create Next App 2026-04-16 17:52:39 +03:00
vitest.config.ts test: foundational Vitest suite for security + critical pure logic 2026-05-18 16:06:02 +03:00

wacrm — CRM Template for WhatsApp

Self-hostable CRM template for WhatsApp® — shared inbox, contacts, sales pipelines, broadcasts, and no-code automations. Fork it, brand it, host it.

Ship your Node.js app in one click — Deploy to Hostinger

License: MIT CI Next.js 16 Supabase Stars

The marketing site and self-host docs live in a separate repo: ArnasDon/wacrm-site (wacrm.tech). This repo is the product — clone or fork it to run your own CRM.

What you get out of the box

  • Shared inbox on the official WhatsApp Business API — multiple agents working one number, per-conversation assignment, status, and notes.
  • Contacts + tags + custom fields, CSV import, deduplication.
  • Sales pipelines (Kanban) with deals linked to conversations.
  • Broadcasts with Meta-approved templates, delivery + read tracking, per-recipient variable substitution.
  • No-code automations — triggers on inbound messages, new contacts, keywords, or schedule; conditional branches, waits, tags, webhooks. Visual builder.
  • AI reply assistant — bring your own OpenAI or Anthropic key (stored encrypted; no per-seat AI fee, your data stays yours). One-click AI-drafted replies in the inbox, plus an optional auto-reply bot with a per-conversation cap and clean human handoff. Add a knowledge base (FAQs, policies, product docs) and it answers from your own content — hybrid retrieval (Postgres full-text, or semantic pgvector when an embeddings key is set).
  • Real-time dashboard — response times, daily volume, pipeline value, cross-module activity feed.
  • Team accounts — invite teammates by link, role-based access (owner / admin / agent / viewer), ownership transfer. Every install is account-scoped, so one shared inbox can be staffed by a whole team. Solo use stays single-user with zero setup.
  • Account management — email, password, avatar, global sign-out.
  • Public REST API (/api/v1) with scoped, revocable API keys — build your own automations on top of your CRM. See docs/public-api.md.
  • MCP server — drive your CRM from Claude, Cursor, and other AI assistants over the Model Context Protocol. Read-only by default, opt-in writes. See docs/mcp.md (server in mcp-server/).

Why fork this?

This is a template, not a product. Forking means you get:

  • Full ownership — your code, your Supabase project, your domain, your data. No SaaS lock-in, no seat pricing, no trust dance.
  • Full customisation — add the fields your team needs, remove the modules you don't, redesign anything. The stack is boring on purpose (Next.js + Supabase + Tailwind) so the learning curve is short.
  • Zero ops to start — Hostinger Managed Node.js deploys a fork in a few clicks. No Docker, no Kubernetes, no infra team needed. (See below ↓)
  • Real security primitives — token encryption (AES-256-GCM), RLS on every table, HMAC-verified webhooks, CSP, rate limiting, CI typecheck/build on every PR.

Not a framework. Not an SDK. A concrete, working CRM you can stand up in an afternoon and make yours.

Quick start

# Fork on GitHub first: https://github.com/ArnasDon/wacrm → Fork
git clone https://github.com/<your-username>/wacrm.git
cd wacrm
npm install
cp .env.local.example .env.local   # fill in Supabase + Meta creds
npm run dev

Open http://localhost:3000. You'll be redirected to /login (or /dashboard if already signed in).

Ship your Node.js app in one click — Deploy to Hostinger

Step-by-step guide

wacrm is built to run on Hostinger. It's the path we test, document, and recommend — and the fastest way to get a production-grade CRM live without owning a VPS or a Kubernetes cluster.

Why Hostinger?

One-click Git deploy Connect your fork, push to main, Hostinger builds and ships it. No SSH, no Docker, no CI to wire up — this repo's own main deploys this way.
Managed Node.js Next.js 16 (App Router, server actions, ISR) runs out of the box on Premium, Business, and Cloud shared plans. You don't manage Node versions, processes, or reverse proxies.
Free SSL + free domain Automatic Let's Encrypt on your custom domain (or a free one included with annual plans). HTTPS is on by default — required for the WhatsApp Business webhook.
Global CDN + LiteSpeed Static assets cached at the edge, dynamic routes served from LiteSpeed. Snappy dashboards out of the box, no Cloudflare setup required.
Env vars + logs in hPanel Set SUPABASE_*, WHATSAPP_*, and ENCRYPTION_KEY from the panel — no .env on the server. Live application logs in the same UI.
DDoS protection + daily backups Built-in, no add-ons. The webhook endpoint is a public target — having protection at the edge matters.
Cheaper than a VPS Plans start at a few dollars a month — order-of-magnitude less than a comparable managed Node.js host, and you don't pay extra for the database (that's Supabase).
24/7 human support Live chat support in 20+ languages — useful when your CRM is the thing your team relies on to talk to customers.

The 60-second version

  1. Fork this repo on GitHub.
  2. In hPanel → Websites → Create, pick Node.js and connect your fork.
  3. Paste your Supabase + Meta env vars into hPanel.
  4. Push to main. Hostinger builds and serves it. Done.

Full walkthrough with screenshots: wacrm.tech/docs/deployment-hostinger.

Note: wacrm is MIT-licensed and runs anywhere Node.js does (Vercel, Railway, your own VPS). Hostinger is recommended, not required.

Documentation

Full self-host documentation — Supabase migrations, WhatsApp Business API config, and production deploy — lives at wacrm.tech/docs (source: ArnasDon/wacrm-site).

Key pages:

Stack

  • App — Next.js 16 (App Router), React 19, TypeScript, Tailwind v4.
  • Data — Supabase (Postgres + Auth + Storage + RLS).
  • WhatsApp — Meta Cloud API (official WhatsApp Business API).

Contributing

This is a template, not a collaborative product — the expected flow is fork → customise → deploy, not upstream contribution. Bug reports and security issues are welcome; feature PRs often belong in your fork rather than here. Details in CONTRIBUTING.md and .github/SECURITY.md.

License

MIT. Fork it, brand it, host it.