# InspireScript

InspireScript is a Node application with support for creating content with
React components mixed into markdown.

### Project Structure

InspireScript is split into the following domains:
- `client`: The client side interface for the application
- `server`: The web server responsible for handling API requests
- `database`: The backing database schemas and configurations

The project is structured by domain feature, not by type. Ideally at any
point a feature could be extracted into a separate npm module that uses an API
for communicating with other modules. Essentially each feature is a microservice.

##### Application Components

Application components should be separated into stateful container components
and stateless display components.

### Configuration
Environment configuration is handled by the [dotenv](https://github.com/motdotla/dotenv)
package using a `.env` file. A different `.env` can be created for each
environment. The configurations are loaded into the `process.env` in the
`index.js` file.

### Convenience Libraries
Logging messages can take advantage of the [colors](https://www.npmjs.com/package/colors) library.

[nodemon](https://www.npmjs.com/package/nodemon): _Simple monitor script for use during development of a node.js app_. See `scripts:start:dev`

### Development

To start the applicaton in development execute the start commands:
- `start:server-dev` _(Start server in development mode with `nodemon`)_
- `start:client-dev` _(Start webpack dev server with HMR)_
