PHPackages                             mapik/watcher-crm - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. mapik/watcher-crm

ActiveProject[Payment Processing](/categories/payments)

mapik/watcher-crm
=================

Watcher CRM

4.0.0(4w ago)91903AGPL-3.0-or-laterPHPPHP &gt;=8.2CI passing

Since Feb 11Pushed 3w ago1 watchersCompare

[ Source](https://github.com/Mapiiik/Watcher-CRM)[ Packagist](https://packagist.org/packages/mapik/watcher-crm)[ Docs](https://github.com/Mapiiik/Watcher-CRM)[ RSS](/packages/mapik-watcher-crm/feed)WikiDiscussions 4.x Synced today

READMEChangelog (9)Dependencies (52)Versions (57)Used By (0)

Watcher CRM
===========

[](#watcher-crm)

[![PHPStan](https://camo.githubusercontent.com/fff00cebb924e124a7335e6bd8ca8f8cf38869463c1654eff45d0939f1f21c57/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d6c6576656c253230382d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](https://github.com/phpstan/phpstan)

CRM for Internet Service Providers, built on [CakePHP](https://github.com/cakephp/cakephp).

Description
-----------

[](#description)

- Customer Relationship Management system aimed at small and mid-size ISPs (customer / contract / billing / IP address management).
- Generates invoices in dBase format for the POHODA Stormware bookkeeping software.
- Integrates with optional services for RADIUS accounting, RouterOS device inventory, the [geo-addresses-postgis](https://github.com/Mapiiik/geo-addresses-postgis)registry lookup API (CZ RUIAN / HR DGU), and a few SaaS providers (Eurofaktura, SledovaniTV, Android SMS Gateway, …).

Requirements
------------

[](#requirements)

- PHP 8.2 or newer
- PostgreSQL
- Redis
- PECL `dbase` extension (only when using the POHODA invoice export)
- [Watcher Agent](https://github.com/Mapiiik/Watcher-Agent) — required only for host reachability checks (ping) and RADIUS session disconnect. It is a separate service (run it in Docker, even on the same host; it supports the PROXY protocol). These actions no longer run locally, so the app container needs no `ping` binary.
- [geo-addresses-postgis](https://github.com/Mapiiik/geo-addresses-postgis) — required only for address validation and registry lookups (CZ RUIAN / HR DGU). It is a separate service exposing a REST API; point the app at it via `ADDRESSES_API_URL` / `ADDRESSES_API_KEY`.

The Docker Compose stack below provides PostgreSQL and Redis out of the box, so on a fresh host you only need Docker.

Installation
------------

[](#installation)

Two install paths are supported. Docker Compose is recommended.

### Option A — Docker Compose (recommended)

[](#option-a--docker-compose-recommended)

```
git clone https://github.com/Mapiiik/Watcher-CRM.git
cd Watcher-CRM
cp config/.env.example config/.env
# edit config/.env — set APP_NAME and any integration URLs / API keys
docker compose -f compose.production.yaml up -d
```

The production image runs `composer run-script migrations` and rebuilds the schema cache automatically on container start, so the app is reachable at `http://localhost` (and `https://localhost` with a self-signed cert) once the container is healthy. Set `SERVER_NAME` in the compose environment to a real domain to enable Let's Encrypt issuance via the bundled `acme.sh`.

### Option B — Bare-metal (host nginx + PHP-FPM, FrankenPHP, …)

[](#option-b--bare-metal-host-nginx--php-fpm-frankenphp-)

For hosts already running their own PHP webserver:

```
git clone https://github.com/Mapiiik/Watcher-CRM.git
cd Watcher-CRM
composer install --no-dev
cp config/.env.example config/.env
# edit config/.env — at minimum DATABASE_URL and CACHE_*_URL

composer run-script migrations
composer run-script schema-cache
```

Point your webserver's document root at the `webroot/` directory. Install the PECL `dbase` extension if you plan to use the POHODA invoice export in dBASE format.

Configuration
-------------

[](#configuration)

Runtime settings live in `config/.env` (or are passed in as environment variables — see the `environment:` blocks in the compose files for the keys read at boot). `config/.env.example` is the canonical list; common groups are:

- **Database / cache:** `DATABASE_URL`, `CACHE_*_URL`
- **Integrations:** `WATCHER_NMS_URL/_KEY`, `WATCHER_AGENT_URL/_KEY`, `ADDRESSES_API_URL/_KEY`, `EUROFAKTURA_API_URL`, `ANDROID_SMS_GATEWAY_URL`, …

### Customizing the compose stack

[](#customizing-the-compose-stack)

If `compose.production.yaml` doesn't fit your environment, copy it to `compose.yaml` and customize there — `compose.yaml` is git-ignored, so `git pull` won't overwrite your changes.

```
cp compose.production.yaml compose.yaml
# edit compose.yaml as needed
docker compose up -d
```

Typical reasons to override: pointing services at infrastructure already running on the host (e.g. an existing PostgreSQL instance, external Redis, reverse proxy), removing bundled containers you don't need, or tweaking volumes / networks.

Development
-----------

[](#development)

Two compose files target local development:

- `compose.dev-frankenphp.yaml` — FrankenPHP (HTTP/1.1, HTTP/2, HTTP/3)
- `compose.dev-nginx.yaml` — classic nginx + PHP-FPM

Both bind-mount the working tree into the container and place `vendor/`, `tmp/`, `logs/`, `node_modules/`, plus the PostgreSQL data directory and Redis data on tmpfs — fast iteration and disposable state, but everything in those paths is lost when the stack is torn down.

```
docker compose -f compose.dev-frankenphp.yaml up
```

The Postgres and Redis ports are exposed to the host (`5432`, `6379`) so you can connect with local clients while the stack is running.

License
-------

[](#license)

Watcher CRM is licensed under the GNU Affero General Public License v3.0. Copyright (c) 2026 Martin Patočka.

### What this means

[](#what-this-means)

You are free to use, modify and run this software. If you modify it and make it available to others (including as a network service), you must also make your modifications available under the same license.

###  Health Score

54

—

FairBetter than 96% of packages

Maintenance95

Actively maintained with recent releases

Popularity19

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity76

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~28 days

Recently: every ~38 days

Total

57

Last Release

1d ago

Major Versions

1.8.0 → 2.0.02023-03-06

2.3.0 → 3.0.0-RC12023-09-28

3.x-dev → 4.0.0-RC12026-05-30

PHP version history (4 changes)1.0.0PHP &gt;=7.2

1.4.0-beta1PHP &gt;=7.4

3.0.0-RC1PHP &gt;=8.1

4.0.0-RC1PHP &gt;=8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/0328bf415a424d611eb990a0cfde9e65fa4566f9225da6f24e7f5e3f7e4a6518?d=identicon)[Mapiiik](/maintainers/Mapiiik)

---

Top Contributors

[![Mapiiik](https://avatars.githubusercontent.com/u/45870742?v=4)](https://github.com/Mapiiik "Mapiiik (1989 commits)")

---

Tags

billingcakephpcrmcustomersdocker-composeequipment-evidenceisplabelsphppohodaradiusruiantaskswisp

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/mapik-watcher-crm/health.svg)

```
[![Health](https://phpackages.com/badges/mapik-watcher-crm/health.svg)](https://phpackages.com/packages/mapik-watcher-crm)
```

###  Alternatives

[bedita/manager

BEdita Manager - official admin webapp for BEdita4 API

131.2k](/packages/bedita-manager)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[cakephp/debug_kit

CakePHP Debug Kit

86314.7M170](/packages/cakephp-debug-kit)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k41](/packages/civicrm-civicrm-core)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.1k17.8k](/packages/prestashop-prestashop)[concrete5/core

Concrete core subtree split

20166.1k50](/packages/concrete5-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
