jeffersongoncalves/laravel-page-visits
A lightweight Laravel package for tracking page visits in your app. Record visits to routes and pages to see traffic patterns and popular content, without relying on external analytics services. Simple to install, configure, and extend.
Architecture fit
page_visit_daily_stats). Nothing in 1.3.0 changes where it sits in the stack.response_time_stats column (count, avg, min, max, p50, p95, p99 in ms) materially increases the package's value: it shifts the package from pure traffic counting to lightweight performance monitoring, which overlaps with tools like Telescope, Pulse, or an APM vendor. Worth an explicit "do we still need X?" conversation.Integration feasibility
vendor:publish --tag="page-visits-migrations" then php artisan migrate adds one nullable column. No application code changes are required to upgrade.null (days with no timed visit) and must confirm what "response time" measures (server-side request duration, presumably, not browser/RUM timing).Technical risk
null stats. Any dashboard or alert built on this will show gaps for all dates before the upgrade — plan the "data starts here" conversation with stakeholders up front.count vs. total visits) can mislead. Confirm how count relates to the day's visit count before anyone publishes an SLO against it.Key questions
null?response_time_stats stored as a single JSON column or discrete columns? What is the shape and stability of that contract for downstream consumers?page-visits:aggregate-and-prune ever remove stats rows before aggregation, and what is the default retention window?Stack fit
Schedule::command('page-visits:aggregate-and-prune')->daily()) and requires no queue worker or external service.Migration path
Compatibility
page_visit_daily_stats keeps working.response_time_stats as nullable forever, since gaps are expected by design.composer.json and verify the ORM/DB driver combinations used across dev, CI, and production are identical — percentile behavior diverging between CI (often SQLite) and production (MySQL/Postgres) is a realistic trap.Sequencing
Maintenance
Support
Scaling
page_visit_daily_stats (one row per day, so effectively constant) and whatever raw page_visits retention the prune step enforces.Failure modes
null — no alarm fires unless something is watching. Add a monitor on "yesterday's row has non-null response_time_stats," not just on command exit code.Ramp-up
How can I help you explore Laravel packages today?