-## Modules
+forum / [Exports](modules.md)
-<dl>
-<dt><a href="#module_Forum">Forum</a></dt>
-<dd><p>The Forum class is the main entry point for the backend application.</p>
-</dd>
-</dl>
+# Forum
-## Typedefs
+A forum for the year 3000.
-<dl>
-<dt><a href="#tForumBackendConfiguration">tForumBackendConfiguration</a> : <code>object</code></dt>
-<dd><p>The main configuration object for the Forum backend. It will be used to
-initialize all of the sub-components. It can extend any property of
-the forum object.</p>
-</dd>
-<dt><a href="#tJWTConfiguration">tJWTConfiguration</a> : <code>object</code></dt>
-<dd><p>Configures the behavior of the JWT token.</p>
-</dd>
-<dt><a href="#tRethinkDBConfiguration">tRethinkDBConfiguration</a> : <code>object</code></dt>
-<dd><p>Information required to connect to the rethinkDB server</p>
-</dd>
-</dl>
+## What you will need to get started
-<a name="module_Forum"></a>
+This project uses [node][node] for most of its development processes.
+Once you have node installed according to the instructions there, run
+`npm install` from the root of the project.
-## Forum
-The Forum class is the main entry point for the backend application.
+For local development serve the page by running `npm run dev` from the
+root of the project.
+This project depends on the [forum server][forum-server], so make sure
+that's running before starting.
-| Param | Type | Description |
-| --- | --- | --- |
-| config | [<code>tForumBackendConfiguration</code>](#tForumBackendConfiguration) | the initialization options to extend the instance |
+## Testing
-<a name="module_Forum+run"></a>
+You can run tests with `npm test`. The tests use `testing-library`, `pact`,
+and `jest`.
-### forum.run()
-Initializes the application and starts listening. Also prints a
-nice robotic banner with information.
+Here's some short guidelines:
-**Kind**: instance method of [<code>Forum</code>](#module_Forum)
-<a name="tForumBackendConfiguration"></a>
-
-## tForumBackendConfiguration : <code>object</code>
-The main configuration object for the Forum backend. It will be used to
-initialize all of the sub-components. It can extend any property of
-the forum object.
-
-**Kind**: global typedef
-**Properties**
-
-| Name | Type | Default | Description |
-| --- | --- | --- | --- |
-| [port] | <code>number</code> | <code>1978</code> | the port where the app will listen on |
-| [staticDirectory] | <code>string</code> | <code>"static"</code> | the path, relative to the project root, where static assets live |
-| [ttl] | <code>number</code> | <code>180</code> | the time in seconds that posts remain alive |
-| rethinkDB | [<code>tRethinkDBConfiguration</code>](#tRethinkDBConfiguration) | | the configuration to connect to the rethinkDB server |
-| jwt | [<code>tJWTConfiguration</code>](#tJWTConfiguration) | | the configuration for the JWT authentication |
-
-<a name="tJWTConfiguration"></a>
-
-## tJWTConfiguration : <code>object</code>
-Configures the behavior of the JWT token.
-
-**Kind**: global typedef
-**Properties**
-
-| Name | Type | Default | Description |
-| --- | --- | --- | --- |
-| [duration] | <code>number</code> | <code>86400</code> | the duration of the JWT in seconds |
-| secret | <code>string</code> | | the secret used to sign the JWT |
-
-<a name="tRethinkDBConfiguration"></a>
-
-## tRethinkDBConfiguration : <code>object</code>
-Information required to connect to the rethinkDB server
-
-**Kind**: global typedef
-**Properties**
-
-| Name | Type | Default | Description |
-| --- | --- | --- | --- |
-| host | <code>string</code> | | the location of the rethinkDB host |
-| [post] | <code>string</code> | <code>6379</code> | port where rethinkDB server is listening |
+- Every component that receives props or changes state should be tested.
+- Test expected outcomes, not implementation details.
+- Avoid mocking unless it's an external call
+- Stores that interact with the API should be tested using pact
+[node]: https://nodejs.org/en/
+[forum-server]: https://gitlab.com/rbdr/forum-server