I had to create some recurring jobs, so I decided to implement a simple CronJob module to work this that.
The CronJob module creates an after_perform
callback to reschedule the job at the next_occurence, with the same arguments.
I used https://github.com/siebertm/parse-cron to parse the cron expression.