mirror of
https://github.com/Luchexx/wacrm.git
synced 2026-11-02 17:29:45 +00:00
The legal brief on third-party trademark use says: avoid the WhatsApp teal/green palette and any visual treatment that could read as a WhatsApp/Meta product. Emerald-500 was used as the primary brand colour across hero, CTAs, sidebar, charts, badges, and the favicon — close enough in hue to WhatsApp's signature green to muddy the line. Swapping to Tailwind violet (which matches the Hostinger brand purple #7c3aed) makes the visual identity unambiguously ours. Scope: - Mechanical Tailwind class swap: emerald-* → violet-* across src/. - src/app/globals.css: --primary, --ring, --sidebar-primary, --sidebar-ring, --chart-1 oklch tokens swapped from emerald (oklch 0.696 0.17 162) to Hostinger-aligned violet (oklch 0.526 0.247 293). - src/app/icon.tsx: favicon background #10b981 → #7c3aed. - src/app/opengraph-image.tsx: badge bg, accent text, gradient. - src/components/landing/hero.tsx + cta-banner.tsx: radial-gradient hex. - src/components/landing/mock/analytics-mock.tsx: marketing chart line. - src/components/dashboard/conversations-chart.tsx + response-time-chart.tsx: "Outgoing" series colour. Distinguishable from "Incoming" blue at a glance; we can revisit the chart pair later for stronger colourblind contrast (separate concern). - README.md: license badge colour parameter. Out of scope: - src/components/settings/tag-manager.tsx still offers "Emerald" as one of the user-pickable contact-tag colours alongside Blue / Yellow / Red / etc. — that's a user data choice, not a brand mark. Contrast check: white text on #7c3aed measures ~4.78:1 (WCAG AA passing for normal body text). Violet-400 (#a78bfa) on slate-950 measures ~10:1 for accent text, well clear of AA. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
99 lines
3.8 KiB
Markdown
99 lines
3.8 KiB
Markdown
# WaCRM
|
|
|
|
> Self-hostable WhatsApp CRM template — shared inbox, contacts, sales
|
|
> pipelines, broadcasts, and no-code automations. Fork it, brand it,
|
|
> host it.
|
|
|
|
[](./LICENSE)
|
|
[](https://github.com/ArnasDon/wacrm/actions/workflows/ci.yml)
|
|
[](https://nextjs.org)
|
|
[](https://supabase.com)
|
|
[](https://github.com/ArnasDon/wacrm/stargazers)
|
|
|
|
## 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.
|
|
- **Real-time dashboard** — response times, daily volume, pipeline
|
|
value, cross-module activity feed.
|
|
- **Account management** — email, password, avatar, global sign-out.
|
|
|
|
## Why fork this?
|
|
|
|
WaCRM 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.
|
|
- **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
|
|
|
|
```bash
|
|
# 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>.
|
|
|
|
Full setup — Supabase migrations, WhatsApp Business API config, and
|
|
production deploy — is in [`docs/`](./docs/README.md).
|
|
|
|
## Documentation
|
|
|
|
**Setup**
|
|
- [Getting started](./docs/getting-started.md)
|
|
- [Supabase setup](./docs/supabase-setup.md)
|
|
- [WhatsApp setup](./docs/whatsapp-setup.md)
|
|
- [Environment variables](./docs/environment-variables.md)
|
|
|
|
**Deploy**
|
|
- [Deploy on Hostinger](./docs/deployment-hostinger.md)
|
|
- [Automations cron](./docs/automations-and-cron.md)
|
|
|
|
**Reference**
|
|
- [Architecture](./docs/architecture.md) — stack, folder layout,
|
|
request lifecycle
|
|
- [Troubleshooting](./docs/troubleshooting.md)
|
|
|
|
## 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`](./CONTRIBUTING.md) and
|
|
[`.github/SECURITY.md`](./.github/SECURITY.md).
|
|
|
|
## License
|
|
|
|
[MIT](./LICENSE). Fork it, brand it, host it.
|