> For the complete documentation index, see [llms.txt](https://adamite.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adamite.gitbook.io/docs/server/functions.md).

# Functions

Adamite Functions can be used to add custom server side logic to your application that you can't accomplish through the base database access.

By default, your Adamite instance will be configured with a basic functions package found in the `functions` folder. This folder is a self-contained NPM package with its own dependencies. The entry point to all of your functions (known as a function root) is a file called `functions/src/index.js`.

```javascript
const { InvokableFunction } = require("@adamite/service-functions");

module.exports = {
  helloWorld: new InvokableFunction(() => {
    console.log("Hello World");
  })
};
```

In this file, you can see a basic invokable function declared, called `helloWorld`. Calling this function using the SDK would result in `"Hello World"` being logged to the server's console.

## Function Types

There are three types of functions you can export within your function root.

| Function Type       | Description                                                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `InvokableFunction` | A function which can be called or "invoked" from the client at will.                                                                                     |
| `RuntimeFunction`   | A function which is executed when the server starts. This is useful for starting additional servers, establishing connections to external services, etc. |
| `ScheduledFunction` | A function which is executed on a schedule using [cron syntax](https://crontab.guru/).                                                                   |
