Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Seeable Laravel Package

zepfietje/laravel-seeable

Laravel Seeable adds seen/unseen tracking to your Eloquent models. Attach the trait to let users mark records as seen, check whether an item has been viewed, and query unseen records per user—handy for notifications, activity feeds, and read receipts.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Presence & "last active" surfaces — powering UI elements like "Seen 2 hours ago" on profiles, comment threads, or team directories. This is the core use case and the package's entire scope: a timestamp of when a user was last seen.
  • Dormancy segmentation for lifecycle/CRM work — identifying inactive users for re-engagement emails, win-back campaigns, or in-app nudges. A last_seen_at value is the raw input for "user hasn't logged in for 30 days" logic.
  • Admin and support tooling — sorting or filtering users by recency ("who's active right now?", "is this account abandoned?") in back-office views, and giving support agents context before outreach.
  • Operational/security heuristics — flagging stale accounts for review, cleanup, or forced re-verification. Note this is a weak signal on its own and should not be the sole basis for a security decision.
  • Build vs. buy: a clear "build" verdict. The package delivers a single timestamp plus the middleware/event wiring to maintain it. That is a few hours of work in a Laravel app (a migration column, a middleware or login listener, and a model accessor). It is not a differentiated capability and should never appear on a roadmap as a feature investment — it is table stakes plumbing.
  • Reference implementation, not a dependency. Given the archived status, the most defensible product decision is to read the source as a design reference for your own implementation rather than to install it.

When to Consider This Package

Consider it when all of the following hold:

  • You are on a Laravel version the package actually supports — verify against composer.json constraints, since the last release was February 2023 and newer Laravel majors are almost certainly unsupported.
  • You need only a coarse "last seen" timestamp — no device, IP, session, or geo detail.
  • The feature is internal-facing or low-stakes, so a stale, unmaintained dependency carries acceptable risk.
  • You want it done in an afternoon and are willing to fork or vendor the code into your application, removing the external dependency entirely.

Look elsewhere (or build in-house) when:

  • You need real-time presence — "online now" indicators, typing state, or live counters require WebSockets/broadcasting (Laravel Echo, Pusher, Reverb), which this package does not address. A timestamp polled from the database is a different, laggier product experience.
  • Maintenance matters. The repo is archived, the last release is over two years old, and it has 35 stars — a very small user base means effectively no community triage, no security response, and no upgrade path. Adopting it creates a small but permanent piece of technical debt with no owner.
  • You need more than a timestamp — activity history, per-session tracking, or "last seen" on multiple entities. The data model here is too thin, and you'll end up rebuilding around it.
  • Write volume is high. Naively updating a last_seen_at column on every request produces a write per request and can hotspot a row. If you're at meaningful scale, you want throttled writes (e.g., update at most once per N minutes, or via cache/queue). Confirm the package's write strategy before adopting, and expect to modify it either way.
  • You have compliance obligations around user activity data — retention, deletion, or GDPR/DSAR handling. An unmaintained dependency is a poor place to hold PII-adjacent records.

How to Pitch It (Stakeholders)

To executives: This is a tiny, free (MIT) utility that records when each user was last active, so we can show "last seen" labels and target dormant users with re-engagement campaigns. The capability is real but commodity — the same thing is a few hours of engineering. Important caveat: the project is archived and unmaintained, last shipped in early 2023, with a small user base. My recommendation is not to take it on as a dependency. Instead, have engineering implement the same pattern in-house in about a day, using this code as a reference. That gives us the feature with zero long-term dependency risk and no security or upgrade exposure. Cost is negligible either way; the decision is purely about avoiding orphaned code in our stack.

To engineering: Scope is a last_seen_at timestamp on the users table plus middleware/listener wiring to touch it. Two things to settle before writing code: (1) write throttling — don't issue a DB write on every request; update at most every few minutes, ideally off the request path via cache or queue, to avoid row contention on hot users; (2) column and index design — you'll want an index for "sort users by recency" and dormancy queries. The package is archived and predates current Laravel majors, so treat it as a design reference, not a dependency: read the source, then implement it natively. Also decide explicitly whether you need real presence (WebSockets) — if the product requirement is "online now," a database timestamp won't satisfy it and we should scope that separately.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin