# Reactium Domain Model

## Basic Artifacts

Reactium comes with some powerful capabilities with these basic artifacts. The power to route, style, and integrate with other parts of your application. See [Basic Domain Model](https://docs.reactium.io/reactium/domain/basic-domain-model) for more details.

Much of the boilerplate of the some of these important artifacts can be create with arcli:

```bash
arcli component
```

| File                                                                                                   | Description                                                                                                |
| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| [**route.js**](https://docs.reactium.io/reactium/basic-domain-model#route.js)                          | Route configuration file, creating one or more React Router routes.                                        |
| [**index.js**](https://docs.reactium.io/reactium/basic-domain-model#index.js)                          | Main component file                                                                                        |
| [**\_reactium-style.scss**](https://docs.reactium.io/reactium/basic-domain-model#_reactium-style.scss) | Sass styles                                                                                                |
| [**reactium-hooks.js**](https://docs.reactium.io/reactium/basic-domain-model#reactium-hooks.js)        | Reactium isomorphic plugin bind point that run at the file scope on app bootstrap.                         |
| [**domain.js**](https://docs.reactium.io/reactium/basic-domain-model#domain.js)                        | Domain configuration file. Used to help group functions to your domain.                                    |
| [**services.js**](https://docs.reactium.io/reactium/basic-domain-model#services.js)                    | Utility functions and AJAX requests                                                                        |
| [**reactium-boot.js**](https://docs.reactium.io/reactium/basic-domain-model#reactium-boot.js)          | Reactium node/express (back-end only) plugin bind point that run at server startup                         |
| [**test.js**](https://docs.reactium.io/reactium/basic-domain-model#test.js)                            | [**Jest**](https://www.npmjs.com/package/jest)**/**[**Enzyme**](https://www.npmjs.com/package/enzyme) test |

## Redux Artifacts

The **@atomic-reactor/reactium-redux** plugin automatically adds the following discoverable Redux-specific DDD artifacts to your application manifest. See [Redux Domain Model](https://docs.reactium.io/reactium/broken-reference) for more details.

| Redux Artifacts                                                          | Description          |
| ------------------------------------------------------------------------ | -------------------- |
| [**actions.js**](https://docs.reactium.io/reactium/broken-reference)     | Redux actions        |
| [**actionTypes.js**](https://docs.reactium.io/reactium/broken-reference) | Redux actionTypes    |
| [**reducers.js**](https://docs.reactium.io/reactium/broken-reference)    | Redux reducers       |
| [**state.js**](https://docs.reactium.io/reactium/broken-reference)       | Redux default state  |
| [**middleware.js**](https://docs.reactium.io/reactium/broken-reference)  | Redux middleware     |
| [**enhancer.js**](https://docs.reactium.io/reactium/broken-reference)    | Redux store enhancer |

## Runtime Artifacts

Reactium comes with built-in capability to generate run-time modules that can be loaded in your applications. The Reactium opinion makes it easy for your applications to be naturally extended. See [Runtime Domain Model](https://docs.reactium.io/reactium/domain/runtime-domain-model) for more details.

| File                                                                                          | Description                                                                                                                                                              |
| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [**umd.js**](https://docs.reactium.io/reactium/runtime-domain-model#umd.js)                   | Automatically creates entry point for a new UMD (Universal Module Definition) bundle, useful for service workers and runtime plugins.                                    |
| [**umd-config.json**](https://docs.reactium.io/reactium/runtime-domain-model#umd-config.json) | When found in a directory containing a **umd.js** UMD (Universal Module Definition) entry point, will be used to generate the manifest configuration for the UMD module. |

## Build Artifacts

If you wish to use the Reactium SDK and hooks system to change the behavior of Gulp tasks or Webpack compilation for your plugin, you can use build-time DDD artifacts to register your behaviors. See [Buildtime Domain Model](https://docs.reactium.io/reactium/domain/buildtime-domain-model) for more details.

| Build Config Artifacts                                                                                  | Description                                                      |
| ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [**reactium-gulp.js**](https://docs.reactium.io/reactium/buildtime-domain-model#reactium-gulp.js)       | Used to register/unregister gulp tasks for the build.            |
| [**reactium-webpack.js**](https://docs.reactium.io/reactium/buildtime-domain-model#reactium-webpack.js) | Used to register/unregister webpack configuration for the build. |


---

# 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://docs.reactium.io/reactium/domain.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.
