# Vision and Goals

## Vision

Aims to be a developer-friendly, sleek and functional HTTP(S) mock server which doesn't require complicated configuration and accepts rich customization around routing.

### Designed in mind with

- Easy setup / usage
    - Built as single (and small) executable, integrated configuration. (No need to write scripts, config-less mode is also supported.)
- Performance
    - Fast speed, low memory consumption.
- Cross-platform support

## Goals

### 1. Basic

- File-based routing frees us around hard setup.
- Supports `.json` / `.json5` / `.csv` files treated as JSON Response.

### 2. Customization

- Rule-based routing empowers us.
- Can specify response time on all or each API path.
- Custom HTTP response codes: `3xx` as redirects, and `4xx` and `5xx` as errors.

### 3. Dynamic processing

- Flexible responses with condition combination. Even with the same API URL path, multiple responses can be returned.
- Middleware as Rhai scripts is available to customize request routing and response handling.

### 4. Safe and observable usage

- Validates configuration: Missing JSON files, duplicate paths etc.
- Prints out routing at startup.
- Describes request content on both HTTP headers and body (json or plain text) when [`verbose`](docs/CONFIGURE.md#generalverbose) on log config is enabled.
- Integrated test cases for app stability and robustness.

### 5. GUI wrapper integration

- Achieved via cargo feature: When `spawn` is activated, the server is available as subprocess. The output will be returned via tokio mpsc queue.
