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

Filament Team Chat Laravel Package

qalainau/filament-team-chat

Self-hosted Slack-like team chat for Filament v5. Channels, DMs, threads, reactions, mentions, file sharing, search, and unread tracking work out of the box. No external services needed—just Livewire polling and your existing auth and users.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is additive rather than invasive: ten prefixed tables (tc_*), a panel plugin registration, and a HasTeamChat trait on User. It does not alter your existing schema, auth, or user table beyond the trait, and it runs entirely on your existing stack — no Pusher, Redis, or separate socket server. For an application already on Filament, this is a near-zero-architecture-change adoption, which is unusual and attractive for a chat capability. The programmatic API (SendMessage, ToggleReaction, MarkAsRead, SearchMessages, Channel::create, findOrCreateDirectMessage) is the real integration surface — it means seeding, imports, webhooks, and bot-style notifications are day-one capabilities, not roadmap items.

Integration feasibility. Three hard gates decide feasibility before any code is written:

  1. Filament v5 and Laravel v13 are the stated requirements. If the host application is on Filament v3/v4 or Laravel 11/12, this package is not adoptable without an independent framework upgrade — a multi-month project that dwarfs the chat feature. This is the single largest blocker and should be resolved first.
  2. Tailwind @source registration is mandatory. The package ships unstyled utility classes; Filament v5 only compiles what your theme globs. Without the @source line plus npm run build, the UI renders broken. This is a build-pipeline change, not an app change, and it must be owned by whoever owns the frontend build.
  3. Notifications table is required only for @mention and DM notifications, but most teams will want it, so treat it as in-scope.

Beyond those, the install is roughly 30 minutes of composer, publish, migrate, plugin registration, and trait addition.

Technical risk.

  • Vendor/maturity risk (high). 15 stars, 0 dependents, version 0.5.x, single-maintainer signal, no published support channel. There is no evidence of production adoption outside the author's own use. The 0.x version means minor bumps may carry breaking changes.
  • Bleeding-edge platform coupling (high). Pinning to Filament v5/Laravel v13 means the package's release cadence is coupled to two fast-moving frameworks. Upgrade windows on either framework become upgrade windows on chat.
  • Attachment confidentiality (medium-high, needs verification). Default upload disk is public. Attachments for private channels and DMs may be retrievable by URL without authorization. This must be validated and, if confirmed, mitigated by switching to a private/S3 disk with signed URLs — assuming the package's link generation supports it.
  • Tenant isolation (medium). Multi-tenancy is opt-in and resolver-driven. If tenancy.enabled is true but the resolver returns null (e.g. Filament::getTenant() outside a tenant-aware context), scoping behaviour must be explicitly tested for cross-tenant leakage.
  • No real-time transport (medium). Polling at 3s (messages) / 5s (sidebar) is fine for a team chat, unacceptable for live-support or incident-bridge use cases.
  • Low ecosystem signal (medium). Score and adoption metrics are weak; there is no third-party blog, no Stack Overflow corpus, no community troubleshooting. Every issue becomes an internal investigation.
  • Mitigant: MIT license. If the maintainer disappears, forking is legally and practically viable — the codebase is small, self-contained, and has 102 tests as a regression harness. This materially de-risks the vendor question and should be an explicit part of the business case.

Key questions.

  1. What Filament and Laravel versions is the host app on today, and is a framework upgrade independently funded?
  2. Is 3-second message latency acceptable for the target use case, or does the business expect true real-time?
  3. Are DMs considered an HR/legal record? If so, what retention, export, and eDiscovery obligations apply — and does tc_messages soft-delete satisfy them?
  4. Who is the named internal owner for this package, and is a fork permitted under procurement policy?
  5. Can attachments live on a private disk, and does the package respect that for link generation?
  6. Is multi-tenancy required? If yes, what is the resolver contract and who tests it?
  7. What is the exit plan if the package is abandoned — is there budget to own a fork?
  8. Does "full-text search" mean a real index or LIKE scans, and what is the expected message volume at 12 and 36 months?

Assessment: adopt only behind a two-week spike and feature flag, only if Filament v5 is already the platform target, and only with a named internal owner. Otherwise, treat it as a reference implementation to fork rather than a dependency to consume.

Integration Approach

Stack fit. The package wants a specific combination: Laravel 13, Filament v5, PHP 8.3+, Livewire polling, and a compiled Filament theme. It also fits a specific org shape: self-hosted, data-residency-sensitive, no desire to procure Slack/Teams or operate a WebSocket tier. It does not fit: apps needing real-time, apps on older Filament, or teams without a frontend build step in CI.

Migration path. This is additive — no backfill of existing schema. Two migration scenarios:

  • Greenfield chat: publish migrations, run, seed default channels via Channel::create + members()->attach, done.
  • Replacing an existing chat (Slack export, legacy internal tool): the programmatic API supports a disciplined import — create channels, map users, replay messages through SendMessage so mentions, attachments, and read-receipt side effects are handled by the package rather than raw inserts. Budget this as a discrete workstream; raw SQL inserts will bypass mention parsing and attachment metadata.

Compatibility.

  • Pin exactly. composer require qalainau/filament-team-chat:0.5.1 (or ~0.5.0 at tightest), not ^0.5. At 0.x, a 0.6 release can break you silently.
  • Pin Filament and Laravel majors/minors in the same lockfile review so a framework bump and a chat bump are never coupled unintentionally.
  • Watch the published-migration model: migrations are published to database/migrations, not loaded from the package. New migrations in future releases must be re-published and diffed manually. Add a release-checklist step and a git diff review of the vendor directory on every upgrade.
  • Publish config/team-chat.php on day one even if unchanged, so config drift is visible in review rather than inferred from defaults.

Sequencing (recommended).

  1. Gate (0.5 day): confirm Filament v5 / Laravel 13 in the host app. Stop if not met.
  2. Spike (2–3 days, throwaway branch): install, publish config + migrations, add trait, add notifications table, add the @source line, npm run build. Validate with two browsers, two users, public channel auto-join, sub-3s cross-window delivery. This proves the whole pipeline before any commitment.
  3. Security and isolation review (1–2 days): attachment disk behaviour, tenant resolver behaviour including null tenant, authorization on channel creation and DM initiation, and modifyAvailableUsersQueryUsing to restrict the DM/mention directory to the intended population.
  4. Feature-flag rollout (1 sprint): ship behind a config toggle using the package's built-in features array; expose to a single pilot team. Disable channels or threads if the org only wants DMs — the toggles make a partial rollout genuinely cheap.
  5. CI integration: add the theme rebuild to the pipeline so upgrades cannot ship unstyled. Add a smoke test asserting the chat route resolves and the four Livewire components mount.
  6. GA or revert decision against explicit criteria: latency, error rate, user complaints, maintainer responsiveness on any filed issues.

Operational Impact

Maintenance. Low ongoing code maintenance, moderate recurring ceremony. The recurring tasks are: rebuild the Filament theme on every package upgrade (required — new utility classes are otherwise missing), re-publish and diff migrations when new ones appear, and review config changes across minor versions. Budget roughly 2–4 hours per package release and one half-day per quarter for version review. The bigger cost is framework coupling: every Filament or Laravel upgrade requires a chat compatibility check, so the chat package effectively becomes a gating item in the platform upgrade plan.

Support. There is no commercial support, no SLA, and a very thin community. Realistically the org becomes its own first-line support: triage from the four Livewire components (Sidebar, MessageFeed, MessageComposer, ThreadPanel) and config/team-chat.php. The 102-test suite is the saving grace — it gives an internal owner a fast feedback loop for a fork, and makes "we can maintain this ourselves" a defensible statement. If the business case depends on this package, name an owner and reserve 10–15% of one engineer's capacity. Without that, do not adopt.

Scaling. Two independent curves:

  • Request volume. Polling is the cost driver. Roughly 0.5 requests/second per active user (1/3s messages + 1/5s sidebar), each a full PHP/Livewire roundtrip. 50 concurrent chatters ≈ 27 req/s; 200 ≈ 105 req/s of steady, non-cacheable application traffic. That is affordable but must be sized against PHP-FPM workers and DB connection pool, and it competes with the rest of the panel. Background/idle tabs keep polling — consider a policy or client-side visibility handling if that becomes measurable.
  • Data volume. Messages, reactions, mentions, and attachments grow monotonically. Read receipts are bounded by users × messageables (fine); tc_messages and tc_attachments are not. Define a retention policy and an attachment storage lifecycle before month six, not after. Verify whether search is indexed or table-scanning before message counts reach the millions.

Failure modes and first-response playbook.

Symptom Likely cause First check
Unstyled / broken chat UI Theme not rebuilt or @source missing Theme CSS globs, npm run build in CI
Messages don't appear for other users Polling disabled, Livewire broken, or worker starvation Browser network tab for poll cadence; Livewire version
Blank page / route 500 Migrations not run or tc_ tables missing php artisan migrate:status
No mention or DM notifications Notifications table absent notifications table existence
Users see other tenants' channels Resolver returned null or tenancy disabled tenancy.enabled, resolver output per request
Attachment 403 / broken previews Disk permissions or public-disk assumption uploads.disk, storage symlink
Directory shows unintended users No modifyAvailableUsersQueryUsing restriction Plugin configuration

Add a monitoring signal: a synthetic check that posts a message and asserts persistence, plus error-rate alerting on the chat route. Silent polling failures are the worst-class incident here because the UI looks alive while being stale.

Ramp-up. A competent Laravel/Filament developer reaches working local chat in half a day and productive feature work in two days; the API surface is small and well-documented in the README. A full team including the frontend build owner should budget one week to reach a defensible pilot. Non-technical stakeholders need no training — the interaction model is Slack-shaped and requires no explanation. The genuine ramp-up cost is not learning the package; it is establishing the upgrade discipline (pinned version, migration diffs, theme rebuild in CI) that keeps it from degrading quietly over the next 12 months.

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.
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log
hsluv/hsluv
seampact/codegen
seampact/hooks
seampact/ir
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk