# Modules

![](https://github.com/ortus-docs/coldbox-docs/raw/master/.gitbook/assets/modules.png)

ColdBox Modules are self-contained subsets of a ColdBox application that can be dropped in to any ColdBox application and become alive as part of the host application. They will bring re-usability and extensibility to any ColdBox application, as now you can break them down further into a collection of modules instead of monolithic approaches. CommandBox will also help you manage, install, track and uninstall modules as part of your development workflow.

This concept of modularization has been around in software design for a long time as it is always essential to partition a system into manageable modules or parts.

> "In structured design and data-driven design, a module is a generic term used to describe a named and addressable group of program statements" by Craig Borysowich (Chief Technology Tactician)

The key to the statement is that these modules are named and addressable, which is exactly what ColdBox Modules will offer to your application. So by building an application with a methodology of modules, you will inherently achieve:

* **Manageability** (i.e., small and simple parts that can be easily understood and worked on)
* **Independence** (i.e., a module can live on its own if necessary and tested outside of its environments, produces very nice low coupling between core and modules)
* **Isolation** (i.e., some modules can be completely isolated and decoupled)
* **Extensibility** (i.e., you can easily extend ANY application by just building on top of the modular architecture)
* **Reusability** (i.e., modules have independence and can therefore be shared and reused)
* **Sanitability** (Yes! That's a word) from the root Sanity

ColdBox Modules will change the way you approach application development as you can now have a foundation architecture that can scale easily and provide you enough manageability to reduce maintenance and increase development. Such a design means that development, testing and maintenance becomes easier, faster and with a much lower cost. **Welcome to a brave new world!**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://coldbox.ortusbooks.com/the-basics/modules.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
