This is a template repository, not a collaborative product. The expected flow is:
- Fork it to your own GitHub account or organisation.
- Deploy the fork — see
docs/. - Customise your fork. Rebrand, add the features you need, remove the ones you don't, swap hosting, change the schema.
You don't need to send changes back upstream. The fact that your fork diverges is the whole point — the upstream is deliberately opinionated about stack, UX, and scope, and your fork is where those opinions become yours.
# 1. Fork on GitHub: https://github.com/ArnasDon/wacrm → Fork
# 2. Clone your fork
git clone https://github.com/<your-username>/wacrm.git
cd wacrm
cp .env.local.example .env.local # fill in Supabase + Meta creds
npm install
npm run devFull setup (Supabase migrations, WhatsApp Business API, deploy) lives in
docs/.
Pull in upstream bug fixes and security patches periodically:
git remote add upstream https://github.com/ArnasDon/wacrm.git # once
git fetch upstream
git checkout main
git merge upstream/main # or: git rebase upstream/main
# Resolve any conflicts (likely in areas you've customised), then push
git push origin mainIf you've made heavy local customisations, rebasing can surface conflicts every time you pull. Pinning to a specific upstream tag and updating on your schedule is a valid alternative.
If you find a bug in the upstream code — not one you introduced in your fork — please file it using the bug report template. Including the commit SHA, the runtime (Hostinger / Vercel / local / other), and logs will get to a fix fastest.
Do not file security issues publicly. Follow the private flow in SECURITY.md.
Not the primary flow, but welcome in specific cases:
- Security fixes — always welcome, please follow SECURITY.md first for disclosure.
- Bug fixes that match upstream intent (crash, correctness, documentation errors, typos) — land quickly.
- Small improvements (accessibility, obvious UX nits) — usually welcome, open an issue first to check alignment.
Less likely to land:
- New features. The template's scope is intentionally narrow. A "great idea for a CRM" is often a great idea for your CRM — i.e. your fork — but would dilute the template for the next forker.
- Stack changes (different ORM, different UI kit, different auth provider). These belong in a fork, not upstream.
- Opinionated refactors without a concrete correctness or performance motivation.
If you do send a PR, the usual rules apply:
- Branch off the latest
main(don't push to a merged branch — commits end up orphaned). - Run
npm run typecheckandnpm run formatlocally first. - Fill in the PR template, especially the Test plan.
- One logical change per PR.
- Commit-message first line is imperative + terse; the body explains the why, the diff shows the what.
Expect a review within a few days. PRs opened without an issue may be closed — open the issue first to align.
- Rebrand. The "CRM Template for WhatsApp" name, favicon, and
wacrm.techURL belong to the upstream project; please swap them for your own before putting your deployment in front of users. - Keep the MIT
LICENSEfile — that's how the template's permissions travel with the code. Attribution in aREADMEsection is appreciated but not required. - You are free to re-license additions to your fork however you like.
Even if you never send a PR upstream, these are the scripts you'll use in your fork:
| Command | What it does |
|---|---|
npm run dev |
Turbopack dev server on port 3000. |
npm run build |
Production build. Next also runs its own typecheck here. |
npm run typecheck |
tsc --noEmit. Fast TS-only pass. |
npm run lint |
ESLint. |
npm run format |
Prettier write. |
npm run format:check |
Prettier in check-only mode. Useful in CI. |
This template is MIT (LICENSE). Anything you contribute
upstream is assumed to be MIT too. Your fork's additions are yours to
license however you like.