algos crm.
CRM Documentation
The same product docs available in the dashboard—guides for setup, architecture, modules, and day-to-day use.
Contributing
Public contribution policy for this multi-tenant CRM.
Short answer: outside contributors are welcome via pull request. They are not granted production access, Super Admin, or direct push to main.
By opening a pull request you agree to this policy, including the intellectual property terms.
Who can contribute
| Who | What they may do |
|---|---|
| Anyone | Open an issue or a pull request with a specific bug fix or feature |
| Trusted teammates | Same as above; write access to a feature branch is optional and still PR-only into main |
| Maintainer (repo owner) | Reviews, merges, deploys, and holds production credentials |
Contributions are accepted when they are scoped, reviewed, and safe for a multi-tenant product. Vague “give me access and I’ll help with everything” requests are declined.
You do not need to be a collaborator on GitHub to contribute. Fork the repository, make a branch, and open a PR.
How we accept work (PR-only)
- Fork (external) or create a feature branch from up-to-date
main.
Example:cursor/short-description-a8c9 - Implement with tests.
- Run Pint + tests locally (see Before you push).
- Open a pull request against
main. - Address review. The maintainer merges when ready.
- Ensure CI passes once workflows exist (CI/CD).
Not allowed
- Direct pushes to
main - Force-pushes to shared branches
- Merging your own PR unless the maintainer has explicitly said so
- Asking for admin, maintain, or production deploy rights as a condition of helping
Write access to this repository, if ever granted, is only for pushing feature branches. It is not permission to change production or skip review.
What contributors never get
This CRM stores tenant customer data, conversations, and channel secrets (WhatsApp, Meta, webhooks). Contributors work on code, not the live system.
Do not request or accept:
- Railway / hosting / SSH / database credentials
- Production or staging
.envfiles - Meta App Secret, WhatsApp tokens, webhook signing secrets, mail or payment keys
- Super Admin access on the live product
- Tenant logins, customer exports, or database dumps
- Impersonation of real companies
Use local setup from Installation and .env.example. Seeded / demo data is for local development only.
If you accidentally receive a secret, do not put it in a PR, issue, or chat log. Tell the maintainer privately so it can be rotated.
Intellectual property
The repository owner retains all rights to this CRM. There is no inbound license that makes your patch automatically open source on your terms.
By submitting a contribution (pull request, patch, or issue that includes code or docs) you confirm that:
- The work is yours, or you have permission to submit it, and it does not include secrets or someone else’s proprietary code.
- You grant the repository owner a perpetual, worldwide, irrevocable, royalty-free license to use, copy, modify, merge, publish, distribute, sublicense, and relicense the contribution as part of this CRM, in source or compiled form, for any purpose.
- Git history may keep your name as author; the owner is not required to credit you in the product UI or marketing.
- The contribution does not entitle you to payment, equity, revenue share, or production access unless a separate written agreement says otherwise.
- You can be asked to change or remove a contribution during review; the owner may decline any PR for any reason.
If you cannot agree to these terms, do not open a pull request.
Security and tenancy
This is a multi-tenant app. A bad change can leak Company A’s data to Company B.
- Follow Coding standards (CompanyScope, policies, permissions).
- Cover happy path and cross-tenant 403/404 in feature tests.
- Never commit
.env, tokens, ordocs/demo-credentials.local.md. - Keep Super Admin routes in
routes/superadmin.php. - Do not use
withoutCompanyScope()unless the code truly needs it (webhooks, platform tools), and set company context before tenant writes.
See Multi-tenancy and RBAC.
Before you push
vendor/bin/pint
php artisan test
# if permissions config changed:
php artisan permissions:sync
PR checklist
- Tenant isolation considered (CompanyScope / policies)
- Permissions updated + synced if needed
- Feature tests for happy path + 403/404 cross-tenant
- No secrets committed (
.env, tokens) - Docs updated under
/docswhen behavior changes - Migrations are MySQL-safe (index name lengths)
- You agree to this contribution policy (access + IP)
Channels / Meta changes
- Document setup steps in
docs/channels/ - Fake Graph HTTP in tests
- Note queue worker requirements
Super Admin vs tenant
- Keep Super Admin routes in
routes/superadmin.php - Do not leak platform queries into tenant controllers without
withoutCompanyScopeintent
Commit messages
Prefer clear imperative subjects:
Add Inbox UI with WhatsApp reply supportFix company settings edit method