> For the complete documentation index, see [llms.txt](https://cherrycake.tin.cat/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cherrycake.tin.cat/version-0.x/architecture/modules.md).

# Modules

In Cherrycake, all process-specific functionality is packed in modules. A great example is the [Database](/version-0.x/reference/core-modules/database.md) module, which is in charge of all the communication with a server like MySQL.

### Dependency

Most modules depend on others to do their job. When this happens, dependencies are solved automatically and all the needed modules are loaded on the fly. For example, the [Database](/version-0.x/reference/core-modules/database.md) module might need at some point the [Security](/version-0.x/architecture/security.md) module to ensure the data you're storing in the database is safe.

### Module configuration

Modules can have configuration files. For example, the [Database](/version-0.x/reference/core-modules/database.md) module requires a configuration file where you set up a MySQL server address, user and password. User modules can have configuration files too.

### Actionability

Modules can respond to requests, so they're the entry point in the [Lifecycle](/version-0.x/architecture/lifecycle.md) of a request to any Cherrycake application. The [Actions](/version-0.x/reference/core-modules/actions-1/actions.md) module takes care of routing requests to the matching mapped modules.
