jooservices / laravel-activities
Append-only MongoDB-backed activity timeline for Laravel applications.
Requires
- php: ^8.5
- jooservices/dto: ^3.2
- jooservices/exceptions: ^4.0
- jooservices/laravel-repository: ^4.0
- laravel/framework: ^12.0|^13.0
- mongodb/laravel-mongodb: ^5.10
Requires (Dev)
- captainhook/captainhook: ^5.29
- captainhook/plugin-composer: ^5.3
- fakerphp/faker: ^1.24
- friendsofphp/php-cs-fixer: ^3.95
- larastan/larastan: ^3.11
- laravel/pint: ^1.30
- orchestra/testbench: ^10.0|^11.0
- phpmd/phpmd: ^2.15
- phpstan/phpstan: ^2.2
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^12.0 || ^13.0
- squizlabs/php_codesniffer: ^4.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-28 12:49:42 UTC
README
Append-only MongoDB-backed activity timeline for Laravel 12 and 13 applications.
v4.0.0 requires
jooservices/dto^3.2,jooservices/laravel-repository^4, andjooservices/exceptions^4. See UPGRADE.md.
Features
- Record subject-scoped activities with optional actor, tenant, description, payload, and context
- Query by subject, actor, tenant, activity prefix, correlation, and date range
- Honest cursor pagination (
hasMore/nextCursor) and explicit offset mode - Sanitization plus payload limits for
dataandcontext - Retention pruning via
php artisan activities:prune(deleteMany) - JSONL and CSV export via
php artisan activities:export - Official in-memory store for consumer tests (
ACTIVITIES_STORE=array, not production) - DTO-first API using
jooservices/dto^3 - Repository layer using
jooservices/laravel-repository^4
Requirements
- PHP ^8.5
- Laravel 12 or 13
- MongoDB 6+
mongodb/laravel-mongodb^5.10
Installation
composer require jooservices/laravel-activities
Publish config:
php artisan vendor:publish --tag=activities-config
Ensure indexes:
php artisan activities:ensure-indexes
Quick start
use App\Models\Post; use JOOservices\LaravelActivities\Facades\Activity; $subject = Post::query()->firstOrFail(); Activity::recordFor( subject: $subject, activity: 'post.updated', );
See Recording and querying for injected services, filters, and pagination.
Design notes
This package stores product timeline activities only. Ops logs belong in
jooservices/laravel-logging. Compliance events belong in jooservices/laravel-events.
Documentation
Development
composer check composer ci
composer ci enforces the 90% minimum coverage gate. See Contributing for local setup and contribution guidance.
Community
License
MIT