Files
opensourcepos/composer.json
objecttothis 84abb9a4af feat(jobs): add background job queue with web/auto/manual scheduling
Introduce CodeIgniter Tasks-based job scheduling to support
long-running background work (e.g. large CSV imports) without
blocking requests.

- composer.json/composer.lock: add codeigniter4/tasks (and its
  dependencies codeigniter4/queue, codeigniter4/settings) to
  power the task scheduler and settings-backed configuration.
- app/Models/JobThrottle.php: new model for job_throttles table,
  providing exists/save/getAll/delete helpers to rate-limit or
  throttle job execution per throttle_id.
- INSTALL.md: document the three trigger modes (Web default via
  request-hook processing, Auto via cron/Task Scheduler, Manual
  via admin UI button), including step-by-step Linux/Mac cron
  and Windows Task Scheduler setup, and Docker considerations
  (worker container, supervisor, or cron sidecar) since cron
  does not run inside a single-process container by default.

Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com>
2026-09-17 15:13:32 +04:00

81 lines
2.4 KiB
JSON

{
"name": "opensourcepos/opensourcepos",
"description": "Open Source Point of Sale is a web based POS system written in the PHP language. It uses MySQL as backend and has a simple user interface",
"license": "MIT",
"type": "project",
"keywords": [
"point-of-sale",
"POS"
],
"authors": [
{
"name": "jekkos"
},
{
"name": "objecttothis"
}
],
"homepage": "https://opensourcepos.org",
"support": {
"issues": "https://github.com/opensourcepos/opensourcepos/issues",
"forum": "https://github.com/opensourcepos/opensourcepos/discussions",
"wiki": "https://github.com/opensourcepos/opensourcepos/wiki",
"source": "https://github.com/opensourcepos/opensourcepos",
"docs": "https://github.com/opensourcepos/opensourcepos/wiki#documentation",
"matrix": "https://matrix.to/#/#opensourcepos_Lobby:gitter.im"
},
"require": {
"php": "^8.2",
"ext-intl": "*",
"codeigniter4/framework": "4.7.4",
"codeigniter4/tasks": "^1.0",
"dompdf/dompdf": "^3.1.6",
"ezyang/htmlpurifier": "^4.17",
"laminas/laminas-escaper": "2.18.0",
"paragonie/random_compat": "^2.0.21",
"picqer/php-barcode-generator": "^2.4.0",
"tamtamchik/namecase": "^3.0.0"
},
"require-dev": {
"codeigniter/coding-standard": "^1.8",
"fakerphp/faker": "^1.23.0",
"friendsofphp/php-cs-fixer": "^3.47.1",
"kint-php/kint": "^5.0.4",
"mikey179/vfsstream": "^1.6",
"nexusphp/cs-config": "^3.6",
"phpunit/phpunit": "^10.5.16 || ^11.2",
"predis/predis": "^1.1 || ^2.0"
},
"replace": {
"psr/log": "*"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"CodeIgniter\\": "vendor/codeigniter4/framework/system/"
},
"exclude-from-classmap": [
"**/Database/Migrations/**"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"config": {
"allow-plugins": {
"phpstan/extension-installer": true
},
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"scripts": {
"test": "phpunit"
},
"scripts-descriptions": {
"test": "Run unit tests"
}
}