MCPcopy Index your code
hub / github.com/ArnasDon/wacrm

github.com/ArnasDon/wacrm @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,370 symbols 3,479 edges 327 files 48 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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.

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 startHostinger 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).

🚀 Deploy on Hostinger (recommended)

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: - Getting started - Supabase setup - WhatsApp setup - Environment variables - Deploy on Hostinger - Architecture - Troubleshooting

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.

Extension points exported contracts — how you extend this code

FlowRow (Interface)
* Flows list page. * * Open to every authenticated user. Flows is in soft-GA — the "Beta" * chip in the header is the
src/app/(dashboard)/flows/page.tsx
ThemeContextValue (Interface)
* ThemeProvider — wraps the whole app, owns the two theming axes: * • `theme` — the accent color (`data-theme` on <ht
src/hooks/use-theme.tsx
Profile (Interface)
(no doc)
src/types/index.ts
CustomFieldsManagerProps (Interface)
(no doc)
src/components/contacts/custom-fields-manager.tsx
TemplateStatusDisplay (Interface)
(no doc)
src/lib/template-status.ts
RunRow (Interface)
* Run history viewer. * * Lists the 50 most recent runs for a flow, newest first. Each row * collapses to a one-liner
src/app/(dashboard)/flows/[id]/runs/page.tsx
UsePresenceResult (Interface)
(no doc)
src/hooks/use-presence.ts
Account (Interface)
(no doc)
src/types/index.ts

Core symbols most depended-on inside this repo

cn
called by 171
src/lib/utils.ts
createClient
called by 76
src/lib/supabase/client.ts
fail
called by 39
src/lib/api/v1/respond.ts
checkRateLimit
called by 36
src/lib/rate-limit.ts
decrypt
called by 36
src/lib/whatsapp/encryption.ts
useAuth
called by 33
src/hooks/use-auth.tsx
validateFlowForActivation
called by 28
src/lib/flows/validate.ts
logEvent
called by 27
src/lib/flows/engine.ts

Shape

Function 1,043
Interface 299
Class 18
Method 10

Languages

TypeScript100%

Modules by API surface

src/components/automations/automation-builder.tsx48 symbols
src/lib/whatsapp/meta-api.ts45 symbols
public/opus/encoderWorker.min.js43 symbols
src/types/index.ts38 symbols
src/components/flows/forms/node-config-form.tsx24 symbols
src/lib/flows/engine.ts23 symbols
src/components/tremor/bar-chart.tsx18 symbols
src/app/api/whatsapp/webhook/route.ts18 symbols
src/lib/flows/types.ts17 symbols
src/lib/automations/engine.ts17 symbols
src/components/ui/dropdown-menu.tsx15 symbols
src/components/settings/template-manager.tsx15 symbols

For agents

$ claude mcp add wacrm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact