conceptbyte/time-traveller
ConceptByte Time Traveller lets you freeze, shift, and travel through time in Laravel apps and tests. Mock now(), set custom timestamps, and verify time-dependent logic without waiting. Works with Carbon and PHP's DateTime, integrates with PHPUnit and Pest, and makes testing expirations, schedules,...
Architecture fit
created/updated/deleted model events, write a snapshot row, expose a query scope to read state as of a timestamp. Conceptually that fits any Eloquent-based codebase.providers/aliases registration in config/app.php.Integration feasibility
laravel/framework constraint of 5.1.*|5.2.* will not install against a modern Laravel without --ignore-platform-reqs or a fork — both of which push risk onto us.Illuminate\Support\ServiceProvider auto-registration and, very likely, use of helpers removed or deprecated since (array_get, str_*, each()), which will fatal on PHP 8.serialize(). Serialized payloads are a deserialization/object-injection surface if any historical record is ever attacker-influenced; JSON is the only acceptable answer for us.Technical risk
saved/deleted (auditing, activity log, search-index sync, cache invalidation) will interact with it; ordering is implicit and undocumented.Stack fit
owen-it/laravel-auditing, spatie/laravel-activitylog) cover ~80% of the need with active security patching.Migration path (if we proceed)
composer.json constraints, add extra.laravel.providers for auto-discovery, replace deprecated helpers, add PHP 8 type/return compatibility.HistoryRepository / Snapshotter) so the package can be swapped without touching domain code.Compatibility
Model::withoutEvents(), saveQuietly(), bulk Model::insert(), and chunked updates — event-based history silently misses all of these.Sequencing
Maintenance
Support
Scaling
(model_type, model_id, created_at) and likely partitioning. Plan for this before launch, not after.Failure modes
saveQuietly(), and raw query-builder updates bypass events — history is incomplete and looks complete, which is the worst failure shape for an audit feature.Ramp-up
How can I help you explore Laravel packages today?