Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Hex Build Status Coverage Status

Timelier is a cron style scheduling application for Elixir. It will match a list of time 'patterns' against the current time and start any tasks associated with each matching pattern.


  1. Add timelier to your list of dependencies in mix.exs:
  def deps do
    [{:timelier, "~> 0.9.2"}]
  1. To ensure timelier can successfully start tasks defined in your application (or its dependencies), add it as an included application:
def application do
  [included_applications: [:timelier]]

and append it's root supervisor to the list of children that your own top-level supervisor starts, e.g.

def start(_type, _args) do
  import Supervisor.Spec, warn: false

  # Define workers and child supervisors to be supervised
  children = [
    worker(YourApp.YourWorker, []),
    # Other children in your supervision tree...

    supervisor(Timelier.Supervisor, []) # Add timelier's top-level supervisor

  opts = [strategy: :one_for_one, name: YourApp.Supervisor]
  Supervisor.start_link(children, opts)


There are three configuration variables that may be specified in the :timelier application:

  • crontab: The list of crontab entries - see below for a discussion of the format. If not specified, defaults to the empty list.
  • timezone: Either :local or :utc. This determines how the current time is matched against the crontab entries. If not specified, defaults to :local
  • provider: Allows the source of crontab configuration to be overridden. See the hex docs for more information.

Crontab entry format.

Each entry in the crontab list is a 2-tuple of {pattern, task}.

  • The pattern is a 5-tuple of the form {minute, hour, day, day-of-week, month}. Both wildcards and alternates may be specified for each entry. See the hex docs for more detail.
  • The task is a 3-tuple of {module, function, args} as would be passed to Kernel.apply/3.