PHPackages                             ueberdosis/hocuspocus-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ueberdosis/hocuspocus-laravel

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

ueberdosis/hocuspocus-laravel
=============================

Integrates Hocuspocus into Laravel with a few clicks

0.0.2(5y ago)3269314[3 issues](https://github.com/ueberdosis/hocuspocus-laravel/issues)[1 PRs](https://github.com/ueberdosis/hocuspocus-laravel/pulls)MITPHPPHP ^7.4|^8.0

Since Apr 15Pushed 2y ago3 watchersCompare

[ Source](https://github.com/ueberdosis/hocuspocus-laravel)[ Packagist](https://packagist.org/packages/ueberdosis/hocuspocus-laravel)[ Docs](https://github.com/ueberdosis/hocuspocus-laravel)[ Fund](https://tiptap.dev/pricing)[ GitHub Sponsors](https://github.com/ueberdosis)[ RSS](/packages/ueberdosis-hocuspocus-laravel/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (2)Versions (3)Used By (0)

Hocuspocus for Laravel
======================

[](#hocuspocus-for-laravel)

Seamlessly integrates a [Hocuspocus](https://www.hocuspocus.dev) backend with Laravel.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require ueberdosis/hocuspocus-laravel
```

You can publish and run the migrations with:

```
php artisan vendor:publish --provider="Hocuspocus\HocuspocusServiceProvider" --tag="hocuspocus-laravel-migrations"
php artisan migrate
```

You can publish the config file with:

```
php artisan vendor:publish --provider="Hocuspocus\HocuspocusServiceProvider" --tag="hocuspocus-laravel-config"
```

Usage
-----

[](#usage)

Add the `CanCollaborate` trait to your user model:

```
use Illuminate\Foundation\Auth\User as Authenticatable;
use Hocuspocus\Traits\CanCollaborate;

class User extends Authenticatable {
    use CanCollaborate;
}
```

Add the `Collaborative` interface and `IsCollaborative` trait to your documents and configure the `collaborativeAttributes`:

```
use Illuminate\Database\Eloquent\Model;
use Hocuspocus\Contracts\Collaborative;
use Hocuspocus\Traits\IsCollaborative;

class TextDocument extends Model implements Collaborative {
    use IsCollaborative;

    protected array $collaborativeAttributes = [
        'title', 'body',
    ];
}
```

Add policies to your app that handle authorization for your models. The name of the policy method is configurable inside the `hocuspocus-laravel.php` config file. An example:

```
use App\Models\TextDocument;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;

class TextDocumentPolicy
{
    use HandlesAuthorization;

    public function update(User $user, TextDocument $document)
    {
        return true;
    }
}
```

In the frontend, add the `collaborationAccessToken` and `collaborationDocumentName` to your WebSocket provider:

```

  window.collaborationAccessToken = '{{ optional(auth()->user())->getCollaborationAccessToken() }}';
  window.collaborationDocumentName = '{{ $yourTextDocument->getCollaborationDocumentName() }}'

```

```
import { HocuspocusProvider } from '@hocuspocus/provider'
import * as Y from 'yjs'

const provider = new HocuspocusProvider({
  document: new Y.Doc(),
  url: 'ws://localhost:1234',
  name: window.collaborationDocumentName,
  parameters: {
    access_token: window.collaborationAccessToken,
  },
})
```

Configure a random secret key in your `.env`:

```
HOCUSPOCUS_SECRET="459824aaffa928e05f5b1caec411ae5f"
```

Finally set up Hocuspocus with the webhook extension:

```
import { Server } from '@hocuspocus/server'
import { Webhook, Events } from '@hocuspocus/extension-webhook'
import { TiptapTransformer } from '@hocuspocus/transformer'

const server = Server.configure({
  extensions: [
    new Webhook({
      // url to your application
      url: 'https://example.com/api/documents',
      // the same secret you configured earlier in your .env
      secret: '459824aaffa928e05f5b1caec411ae5f',

      transformer: TiptapTransformer,
    }),
  ],
})

server.listen()
```

Credits
-------

[](#credits)

- [Kris Siepert](https://github.com/kriskbx)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 58.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~17 days

Total

2

Last Release

1889d ago

PHP version history (2 changes)0.0.1PHP ^7.4

0.0.2PHP ^7.4|^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/3670ca0ea5e329d23070e3707db7bab7ab788a31fa16678507c0c14b858bcff5?d=identicon)[patrickbaber](/maintainers/patrickbaber)

![](https://www.gravatar.com/avatar/98f238189eab12ef0f354c0d9ec61f6c7f7c7e75564e3b3b0c79fed22396888b?d=identicon)[timoisik](/maintainers/timoisik)

---

Top Contributors

[![kriskbx](https://avatars.githubusercontent.com/u/3148865?v=4)](https://github.com/kriskbx "kriskbx (14 commits)")[![hanspagel](https://avatars.githubusercontent.com/u/1577992?v=4)](https://github.com/hanspagel "hanspagel (9 commits)")[![timoisik](https://avatars.githubusercontent.com/u/9573441?v=4)](https://github.com/timoisik "timoisik (1 commits)")

---

Tags

laravelhocuspocus

### Embed Badge

![Health badge](/badges/ueberdosis-hocuspocus-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/ueberdosis-hocuspocus-laravel/health.svg)](https://phpackages.com/packages/ueberdosis-hocuspocus-laravel)
```

###  Alternatives

[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.8M47](/packages/spatie-laravel-pdf)[codewithdennis/filament-select-tree

The multi-level select field enables you to make single selections from a predefined list of options that are organized into multiple levels or depths.

329530.5k29](/packages/codewithdennis-filament-select-tree)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)[worksome/exchange

Check Exchange Rates for any currency in Laravel.

124603.0k](/packages/worksome-exchange)[tarfin-labs/event-machine

Event-driven state machines for Laravel with event sourcing, type-safe context, and full audit trail.

199.4k](/packages/tarfin-labs-event-machine)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
