# Social Feeds

## Package docs status

This page is generated from public package documentation in `capell-4/packages` and the package manifest checked into the source repository.

| Field | Value |
| --- | --- |
| Composer package | `capell-app/social-feeds` |
| Package slug | `social-feeds` |
| Product group | Capell Growth |
| Tier | premium |
| Bundle | `growth` |
| Runtime contexts | `admin`, `frontend` |
| Capell version | `^4.0` |
| Source repository | `capell-app/packages` |
| Source path | `packages/social-feeds` |
| Docs source | `packages/social-feeds/docs` |
| Manifest | [`capell.json`](https://github.com/capell-app/packages/edit/4.x/packages/social-feeds/capell.json) |

Social Feeds is Capell's premium social-feed widget package. It renders cached social content through Block Library with configurable list, slideshow, carousel, and paginated layouts while keeping public HTML free of credentials, admin URLs, editor markers, and connection internals.

## What Ships

- Extendable `SocialFeedProvider` bridge with tagged provider registration.
- Built-in provider keys for RSS / Atom, TikTok, YouTube, Bluesky, Instagram, Facebook, LinkedIn, and X.
- Working RSS / Atom sync provider plus feed URL-backed sync for configured social providers while native API bridges are completed.
- Cached `social_feed_items` table used by public rendering.
- `social-feed` Block Library block with provider, connection, limit, page size, columns, caption, author, date, media, autoplay, transition, aspect-ratio, and empty-state controls.
- Public Blade rendering that consumes hydrated DTOs only.

## Extension

Custom packages can add providers by tagging a `SocialFeedProviderProvider` implementation:

```php
$this->app->tag([MySocialFeedProviderProvider::class], \Capell\SocialFeeds\Contracts\SocialFeedProviderProvider::TAG);
```

The provider-provider receives `SocialFeedProviderRegistry` and may register one or more `SocialFeedProvider` implementations.

## Provider Status

RSS / Atom is the native v1 provider. TikTok, YouTube, Bluesky, Instagram, Facebook, LinkedIn, and X are first-class provider keys that can sync from a configured `feed_url`; missing feed URLs fail the sync with a clear connection error instead of pretending the provider synced successfully.

## Verification

```bash
vendor/bin/pest packages/social-feeds/tests --configuration=phpunit.xml
composer validate packages/social-feeds/composer.json --no-check-publish
```