Netpress Laravel-inspired backend framework for Node.js
Frameworkv0.1.14 Starterv0.1.12 Docsv1.0.3
Overview Installation Architecture CLI
Reference

Events and Listeners

Events let you separate side effects from the main action. The starter kit uses a small event bus and an event service provider to wire listeners in one place.

Quick Example

// app/Providers/EventServiceProvider.js
export default class EventServiceProvider {
  static get listen() {
    return {
      UserRegistered: [SendWelcomeEmail],
    };
  }
}

Explanation

When a new user registers, AuthService fires a UserRegistered event. EventServiceProvider connects that event to one or more listeners, and each listener handles a side effect such as dispatching a job.

This keeps registration logic small and makes side effects easier to grow later.

Additional Examples

Define an event:

export default class UserRegistered {
  constructor(user) {
    this.user = user;
    this.timestamp = new Date();
  }
}

Listen for it:

import SendWelcomeEmailJob from "../Jobs/SendWelcomeEmailJob.js";

export default class SendWelcomeEmail {
  async handle(event) {
    await SendWelcomeEmailJob.dispatch({ user: event.user });
  }
}

Fire it:

eventBus.fire(new UserRegistered(safeUser));

Advanced Usage

Events are a good fit for notifications, analytics, audit logs, and background work. If the action must happen before the response finishes, keep it in the service instead of an async listener.

Notes / Tips

  • Keep event objects small.
  • Name events after something that already happened.
  • Let listeners own side effects, not the controller.