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

Grabit Front Feed Bundle Laravel Package

nicolas-joubert/grabit-front-feed-bundle

Grabit Front Feed Bundle adds ready-to-use front-end feed support to Grabit-powered PHP applications, providing routes, controllers, and templates for serving public RSS, Atom, and JSON feeds with minimal configuration.

View on GitHub
Deep Wiki
Context7

Getting Started

  • Install with composer require nicolas-joubert/grabit-front-feed-bundle. Start by reading the README and the DependencyInjection/ and Resources/config/services.*.yaml files — this package is a Symfony bundle, so the entry point for understanding behaviour is the service definitions and the CacheInvalidate service wired there, not a Laravel service provider.
  • If you are working in a Laravel app, treat the bundle itself as a reference implementation: extract the feed-building and cache-invalidation logic into a FeedGenerator service of your own, or bridge it through a thin service provider that binds the bundle's classes. Do not expect auto-discovery, config publishing, or facades — none of that is Symfony-bundle-native.
  • First use case worth wiring up: a cached feed endpoint (e.g. /feed/{channel}) where the feed is built once, cached, and then busted via a cache-invalidate call when underlying content changes. That is precisely the code path touched by the v1.2.1 fix, so exercising it end-to-end early confirms the upgrade worked.
  • Check composer show nicolas-joubert/grabit-front-feed-bundle and confirm you are on >=1.2.1; v1.2.1 exists specifically because the CacheInvalidate service definition in v1.2 was malformed.

Implementation Patterns

  • Generate-then-cache: build the feed DTO, serialise it, write to cache with a channel-scoped key, and return. Keep key composition in one place so the invalidator and the reader cannot drift.
  • Invalidate on write, not on read: call the invalidator from your model observers / event listeners (saved, deleted, publish actions) rather than checking freshness on every request. This mirrors the bundle's intent and keeps the hot path cheap.
  • Wrap the invalidator: put a small interface (FeedCacheInvalidator) in front of the package's class. Because the definition was the broken part in v1.2, an adapter gives you a seam to fake in tests and to swap if the upstream service signature shifts again.
  • Per-channel granularity: invalidate a single feed channel's namespace rather than the whole cache store. Bulk-flushing feeds on every content edit is the fastest way to make the cache pointless.
  • Queue the invalidation for bulk operations (imports, re-seeding). A synchronous invalidate inside a loop over hundreds of models will serialise on the cache backend.
  • Test the container/wiring explicitly: a unit test on feed output will not catch a bad service definition. Add one smoke test that boots the container (or your Laravel provider) and resolves the invalidator — that is the regression class v1.2.1 addresses.

Gotchas and Tips

  • This is not a Laravel package. There is no GrabitFrontFeedBundleServiceProvider, no config/grabit-front-feed.php to publish, and no Facade. Budget for integration glue or a port rather than a composer require and go.
  • v1.2.1 is a patch, non-breaking. The only change is the CacheInvalidate service definition (issue #5). No new features, no deprecations, no config changes — upgrading from 1.2 is safe. If you are on 1.2 and saw container-compile or "service definition invalid/argument" errors around cache invalidation, this is your fix.
  • Pin ^1.2.1 rather than ^1.2, so you do not get re-resolved onto the broken 1.2 definition in a lockfile rebuild.
  • Debugging wiring issues: use your container's debug/lint command to dump the resolved CacheInvalidate definition; the failure mode in 1.2 was at definition level, so the error surfaces before any feed code runs.
  • Cache backend coupling: the invalidator's semantics depend entirely on your cache store. Tag-based invalidation needs Redis/Memcached; the file or array driver will silently no-op or over-flush. Verify with a real backend in staging, not the array store.
  • Extension points are the bundle's own services — override or decorate the invalidator and feed builder via your container rather than forking. If you port to Laravel, keep the invalidator an interface-bound singleton so future upstream fixes are easy to port across.
  • Low bus-factor signal: a single-commit patch release for a broken service definition suggests a small maintainer surface. Vendor the logic if this is on a critical path, and watch the changelog rather than assuming semver discipline.
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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource