# Functions
The ./src/index.js file contains some functions that can be used to add dynamic and logic based configurations.
# Register
Path — ./src/index.js.
The register function is an asynchronous function that runs before the application is initialized.
It can be used to:
- extend plugins
- extend content-types programmatically
# Bootstrap
Path — ./src/index.js
The bootstrap function is called at every server start. You can use it to add a specific logic at this moment of your server's lifecycle.
Here are some use cases:
- Create an admin user if there isn't one.
- Fill the database with some necessary data.
- Load some environment variables.
The bootstrap function can be synchronous or asynchronous.
Synchronous
module.exports = () => {
  // some sync code
};
Return a promise
module.exports = () => {
  return new Promise(/* some code */);
};
Asynchronous
module.exports = async () => {
  await someSetup();
};
# CRON tasks
CRON tasks allow you to schedule jobs (arbitrary functions) for execution at specific dates, with optional recurrence rules. It only uses a single timer at any given time (rather than reevaluating upcoming jobs every second/minute).
This feature is powered by the node-schedule (opens new window) package.
✋ CAUTION
Make sure the enabled cron config is set to true in ./config/server.js file.
The cron format consists of:
*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
To define a CRON job, add your logic like below:
// path: ./config/functions/cron.js
module.exports = {
  /**
   * Simple example.
   * Every monday at 1am.
   */
  '0 0 1 * * 1': () => {
    // Add your own logic here (e.g. send a queue of email, create a database backup, etc.).
  },
};
If your CRON task is required to run based on a specific timezone then you can configure the task like below:
module.exports = {
  /**
   * CRON task with timezone example.
   * Every monday at 1am for Asia/Dhaka timezone.
   * List of valid timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
   */
  '0 0 1 * * 1': {
    task: () => {
      // Add your own logic here (e.g. send a queue of email, create a database backup, etc.).
    },
    options: {
      tz: 'Asia/Dhaka',
    },
  },
};
← Middlewares API →
