Skip to content

Conversation

@Shadow243
Copy link
Member

@Shadow243 Shadow243 commented Aug 25, 2024

Summary

This PR introduces a backend service that includes:

  • Event dispatching system for triggering and handling system-wide events.
  • Task scheduling using cron-like jobs with overlapping prevention.
  • Real-time notifications via multiple channels (e.g., Telegram, SMS, Slack).
  • Ratchet PHP lib integration

Key Features

  • Event Class: Implements an event dispatching system where events can be defined and dispatched across the system. This allows for decoupled execution of processes in response to events.

  • Scheduler: Manages task scheduling with cron-like expressions, mutex handling to prevent task overlapping, and timezone support.

  • Commands: Defines and executes registered commands with dependency injection support.

  • Notifications: Notification system with extensible drivers for various channels (e.g., Telegram, SMS, Slack). It allows sending notifications based on event triggers such as new emails.

  • Listeners: Allows the system to react to dispatched events by triggering actions such as notifications or logging.

Example Usage Command using database queue driver

Screenshot 2024-10-31 at 21 14 09

Example Usage Command using sqs queue driver

Screenshot 2024-11-01 at 05 19 16 Screenshot 2024-11-01 at 05 42 53

@Shadow243 Shadow243 force-pushed the imap-idle-polling-mechanism branch from 4f60d8d to af8cda5 Compare August 26, 2024 19:26
@Shadow243 Shadow243 force-pushed the imap-idle-polling-mechanism branch 6 times, most recently from b84879e to 4434dc0 Compare October 24, 2024 20:21
@Shadow243 Shadow243 requested a review from kroky October 24, 2024 20:37
console Outdated


// Load the application dependencies and bootstrap the application
require_once __DIR__ . '/index.php';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Load the dependencies here and don't include index.php. Treat console as a separate entry point in the application. index.php will be for web requests and this one for cli.

composer.json Outdated
"bacon/bacon-qr-code": "^1.0.3 || ^2.0.0",
"christian-riesen/base32": "^1.3.2",
"composer": "^2.0.0",
"cypht/cli-service": "*",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we define another package? It doesn't seem to be runnable without main cypht repo, so better stay as just a subdirecrory in this repo. No need for composer dependencies here.

@kroky
Copy link
Member

kroky commented Oct 25, 2024

Please ping me when you add the ratchet lib and polling, so I can review again.

@Shadow243 Shadow243 force-pushed the imap-idle-polling-mechanism branch 13 times, most recently from b170a37 to 39e5ea3 Compare November 1, 2024 02:48
@Shadow243 Shadow243 force-pushed the imap-idle-polling-mechanism branch from 85adaff to 1b03512 Compare November 8, 2024 21:59
@Shadow243
Copy link
Member Author

Channels tested and fixed

Screenshot 2024-12-09 at 18 24 36 Screenshot 2024-12-09 at 19 19 48

@Shadow243 Shadow243 changed the title Adding idle and polling mechanism to imap feat(back): adding idle and polling mechanism to imap Dec 9, 2024
@Shadow243 Shadow243 changed the title feat(back): adding idle and polling mechanism to imap feat(backend): adding idle and polling mechanism to imap Dec 9, 2024
@Shadow243
Copy link
Member Author

Shadow243 commented Dec 9, 2024

schedule:work is also working correctly, i'm receiving Notification every minute as a planned:
Screenshot 2024-12-09 at 19 52 16

@Shadow243 Shadow243 force-pushed the imap-idle-polling-mechanism branch from 62f5a63 to 11d0850 Compare July 11, 2025 01:52
@marclaporte
Copy link
Member

We will soon release Cypht 2.5.0 so this MR is too big/risky to be part of it.

But after, we must decide if this is suitable for Cypht 2.6.x or rather 3.0.x

@marclaporte marclaporte added this to the 2.6 milestone Aug 20, 2025
@Shadow243
Copy link
Member Author

We will soon release Cypht 2.5.0 so this MR is too big/risky to be part of it.

But after, we must decide if this is suitable for Cypht 2.6.x or rather 3.0.x

I share that opinion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants