PHPackages                             hoangdev/stream-event-driven - 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. hoangdev/stream-event-driven

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

hoangdev/stream-event-driven
============================

03PHP

Since Nov 30Pushed 1y ago1 watchersCompare

[ Source](https://github.com/hoangnm97/stream-event)[ Packagist](https://packagist.org/packages/hoangdev/stream-event-driven)[ RSS](/packages/hoangdev-stream-event-driven/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Requirements
============

[](#requirements)

- PHP ^8.1

To install this package in your project
=======================================

[](#to-install-this-package-in-your-project)

1. Copy this and paste to repository array in composer.json ```
    "repositories": [
      {
        "type": "vcs",
        "url": "https://github.com/hoangnm97/stream-event"
      },
    ...

    ]
    ```
2. Import this provider to config/app.php ```
    'providers' => ServiceProvider::defaultProviders()->merge([
      \Hoangdev\StreamEventDriven\Providers\EventDrivenProvider::class
      ...
    ])->toArray(),
    ```
3. run command ```
    composer require hoangdev/stream-event-driven:dev-main
    ```

    To the package (note: remember to push newest package)
4. Run ```
    php artisan vendor:publish --provider="Hoangdev\StreamEventDriven\Providers\EventDrivenProvider"
    ```
5. Add this env variable: example: ```
     STREAM_PLATFORM=kafka
     KAFKA_GROUP_ID=orders
     KAFKA_SYNC_TOPIC=orders
     KAFKA_SYNC_USERNAME=
     KAFKA_SYNC_PASSWORD=
     KAFKA_BROKERS=kafka:9092
    ```

    to publish migration and resource

- Execute to kafka container and run the commands below:
    - To create new topic:
        `kafka-topics.sh --bootstrap-server localhost:9092 --topic test --create --partitions 3 --replication-factor 1`
    - To send a message to topic:
        `kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test`
    - To get message from topic:
        `kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test`

Usage
=====

[](#usage)

- Implement `Hoangdev\StreamEventDriven\Contracts\StreamableReceivedInterface` into the class you need to handle received with kafka and use `Hoangdev\StreamEventDriven\Traits\ReceivedStreamable` as a trait.
- Then you can use/overwrite the needed method in you class. After all, you can call method `receiveStream()` to handle your messages
- You need to have a column with value is timestamp in database in the updated/create object for the compare like the flow below
- Implement `Hoangdev\StreamEventDriven\Contracts\StreamablePushInterface` into the class you need to handle received with kafka and use `Hoangdev\StreamEventDriven\Traits\PushStreamable` as a trait.
- Then you can use/overwrite the needed method in you class. After all, you can call method `pushStream()` to handle your messages
- Example: [![img.png](images/img.png)](images/img.png)[![img_1.png](images/img_1.png)](images/img_1.png)Need to follow this flow to make sure that you are going the right way: [![img.png](images/img_2.png)](images/img_2.png)
- Custom object + action:

    - For add custom action, need to over-write trait and add suitable boot and over-write followed interface if needed

###  Health Score

14

—

LowBetter than 1% of packages

Maintenance28

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity17

Early-stage or recently created project

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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/38515248?v=4)[hoangnm97](/maintainers/hoangnm97)[@hoangnm97](https://github.com/hoangnm97)

### Embed Badge

![Health badge](/badges/hoangdev-stream-event-driven/health.svg)

```
[![Health](https://phpackages.com/badges/hoangdev-stream-event-driven/health.svg)](https://phpackages.com/packages/hoangdev-stream-event-driven)
```

###  Alternatives

[components/jqueryui

jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.

1775.9M61](/packages/components-jqueryui)[hirethunk/verbs

An event sourcing package that feels nice.

516234.9k9](/packages/hirethunk-verbs)[sandersander/composer-link

Adds ability to link local packages for development with composer

92474.1k](/packages/sandersander-composer-link)[ralphjsmit/livewire-urls

Get the previous and current url in Livewire.

81402.5k9](/packages/ralphjsmit-livewire-urls)[te7a-houdini/laroute

Access Laravels URL/Route helper functions, from JavaScript.

33512.5k](/packages/te7a-houdini-laroute)[marshmallow/nova-tiptap

A Laravel Nova tiptap editor field.

19208.2k3](/packages/marshmallow-nova-tiptap)

PHPackages © 2026

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