open-index/open-npm huggingface dataset:
npm package: @rdub/screenshots
Description: Automated screenshots with Puppeteer - wait for selectors, configurable viewports, CLI
Author: Ryan Williams
Latest version: 0.2.0
Deprecated: This package has been renamed to 'scrns'. Please use 'scrns' instead.

# @rdub/screenshots

[![npm version][npm-badge]][npm]

Automated screenshots with Puppeteer - wait for selectors, configurable viewports, scroll positioning, and downloads.

## Install
```bash
pnpm add @rdub/screenshots
# or
npm install @rdub/screenshots
```

## CLI Usage
```bash
screenshots [options]
```

### Options
| Flag | Description |
|------|-------------|
| `-c, --config <path>` | Config file path (default: `screenshots.config.{ts,js,json}`) |
| `-d, --download-sleep <ms>` | Sleep while waiting for downloads (default: 1000) |
| `-h, --host <host>` | Hostname or port (numeric port maps to `127.0.0.1:port`) |
| `-i, --include <regex>` | Only generate screenshots matching this regex |
| `-l, --load-timeout <ms>` | Timeout waiting for selector (default: 30000) |
| `-o, --output <dir>` | Output directory (default: `./screenshots`) |
| `-s, --selector <css>` | Default CSS selector to wait for |
| `--https` | Use HTTPS instead of HTTP |

### Example
```bash
# Auto-detect config, use localhost:3000
screenshots

# Specify port and config
screenshots -h 8080 -c my-config.ts

# Filter to specific screenshots
screenshots -i "home|about"
```

## Config File

Create `screenshots.config.ts` (or `.js`/`.json`):

```typescript
export default {
  'home': {
    query: '',
    width: 1200,
    height: 800,
  },
  'about': {
    query: 'about',
    selector: '.main-content',
  },
  'footer': {
    query: '',
    scrollTo: 'footer',
    scrollOffset: 20,
  },
}
```

### Config Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `query` | `string` | `''` | URL path/query (appended to baseUrl) |
| `width` | `number` | `800` | Viewport width |
| `height` | `number` | `560` | Viewport height |
| `selector` | `string` | - | CSS selector to wait for before capturing |
| `loadTimeout` | `number` | `30000` | Timeout in ms for selector wait |
| `preScreenshotSleep` | `number` | `0` | Sleep in ms before taking screenshot |
| `scrollY` | `number` | `0` | Scroll Y pixels before screenshot |
| `scrollTo` | `string` | - | CSS selector to scroll into view |
| `scrollOffset` | `number` | `0` | Offset pixels above `scrollTo` element |
| `download` | `boolean` | `false` | Set download behavior instead of screenshot |
| `downloadSleep` | `number` | `1000` | Sleep in ms while waiting for download |

## Programmatic Usage

```typescript
import { takeScreenshots } from '@rdub/screenshots'

await takeScreenshots({
  'home': { query: '' },
  'about': { query: 'about', selector: '.content' },
}, {
  baseUrl: 'http://localhost:3000',
  outputDir: './screenshots',
  defaultSelector: '#app',
  include: /home/,
  log: console.log,
})
```

[GitLab]: https://gitlab.com/runsascoded/js/screenshots
[npm]: https://www.npmjs.com/package/@rdub/screenshots
[npm-badge]: https://img.shields.io/npm/v/@rdub/screenshots.svg
npm package: @rduk/data
Description: Data layer abstraction
Author: RDUK
Latest version: 0.7.2

# RDUK - Data

[![Build Status](https://travis-ci.org/rd-uk/rduk-data.svg?branch=master)](https://travis-ci.org/rd-uk/rduk-data)
[![Coverage Status](https://coveralls.io/repos/github/rd-uk/rduk-data/badge.svg?branch=master)](https://coveralls.io/github/rd-uk/rduk-data?branch=master)
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)
[![Greenkeeper badge](https://badges.greenkeeper.io/rd-uk/rduk-data.svg)](https://greenkeeper.io/)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Create a QueryProvider responsible for creating queries and querying data source
thanks to a DataProvider

__Warning__: not prod ready.

## Installation

```sh
npm i --save rduk-data
```

## QueryProvider

### Implementations

#### SqlQueryProvider

```js
const Queryable = require('@rduk/data/lib/queryable');
const SourceExpression = require('@rduk/data/lib/expression/source');

let users = new Queryable(new SourceExpression('my_db_users'));
let profiles = new Queryable(new SourceExpression('my_db_profiles'));

let query = users
    .join(profiles, (u, p) => (u.id === p.user_id))
    .filter((u, p) => (u.email.endsWith(this.search) && p.country.toUpperCase() === 'FRANCE'))
    .select((u, p) => ({
        id: u.id,
        email: u.email,
        firstName: p.first_name,
        lastName: p.last_name.toUpperCase()
    }));

query.toArray({
    search: '@rduk.fr'
});

/**
 * Generated SQL query:
 * SELECT
 *   t0.`id` AS `id`,
 *   t0.`email` AS `email`,
 *   t1.`first_name` AS `firstName`,
 *   t1.`last_name` AS `lastName`
 * FROM my_db_users t0
 * INNER JOIN my_db_profiles t1 ON t0.id = t1.user_id
 * WHERE
 *  (1 AND (t0.`email` LIKE ? AND UPPER(t1.`country`) = 'FRANCE'))
 *
 * Parameters
 * { search: '%@rduk.fr' }
 */
```

## DataProvider

### Implementations

- [SQLite](https://github.com/rd-uk/rduk-data-sqlite) (wip)
- [PostgreSQL](https://github.com/rd-uk/rduk-data-pg) (wip)
- [MySQL](https://github.com/rd-uk/rduk-data-mysql) (wip)

## License

See [`LICENSE`](LICENSE) file
npm package: @rduk/errors
Description: Custom Errors library for Node
Author: RDUK
Latest version: 1.3.1

# RDUK - errors

[![Build Status](https://travis-ci.org/rd-uk/rduk-errors.svg?branch=master)](https://travis-ci.org/rd-uk/rduk-errors)
[![Coverage Status](https://coveralls.io/repos/github/rd-uk/rduk-errors/badge.svg?branch=master)](https://coveralls.io/github/rd-uk/rduk-errors?branch=master) [![bitHound Overall Score](https://www.bithound.io/github/rd-uk/rduk-errors/badges/score.svg)](https://www.bithound.io/github/rd-uk/rduk-errors)

## Installation

```
npm install @rduk/errors --save --save-exact
```

## Usage

```js
var errors = require('@rduk/errors');
```

You can instantiate a new error from the available errors. see the [list](#available_errors)

```js
var myarg = 1;

try {
    var err = new errors.ArgumentError('myarg', myarg);
    throw err;
} catch(err) {
    console.log(err instanceof Error); // will output true
    console.log(err instanceof errors.ArgumentError); // will output true
}
```

or throw it directly

```js
try {
    errors.throwArgumentError('myarg', myarg);
} catch(err) {
    console.error(err);
    /**
     * will output:
     * { [ArgumentError: Invalid argument "myarg" (value: "1").]
     *   name: 'ArgumentError',
     *   message: 'Invalid argument "myarg" (value: "1").' }
     */
}
```

You can also add your own custom error

```js

/* FakeError.js */
(function(module) {

    'use strict';

    module.exports = function FakeError(message) {
        FakeError.super_.call(this, message);
    };

} (module));

/* main.js */
var errors = require('@rduk/errors');
errors.add('FakeError', require('pathToFakeError/FakeError'));

try {
    errors.throwFakeError('this is a fake error.');
} catch (err) {
    console.log(err instanceof errors.FakeError); // will output true
}

```

By default, your custom error inherits `BaseError`. The `BaseError` class is in charge
to initialize all error specific properties.

```js
/* BaseError.js */
(function(require, module) {

    'use strict';

    module.exports = function BaseError(message) {
        Error.captureStackTrace(this, this.constructor);

        this.name = this.constructor.name;
        this.message = message;
    };

    require('util').inherits(module.exports, Error);

} (require, module));
```

But you can, if needed, inherit from your own custom error

```js
var errors = require('@rduk/errors');

errors.add('ChildFakeError', function ChildFakeError() {
    ChildFakeError.super_.call(this, 'this is a fake error.');
}, errors.FakeError);

try {
    errors.throwChildFakeError();
} catch (err) {
    /* ... */
}
```

<a name="available_errors"></a>
## Available errors
* `errors.ArgumentNullError` ( `propertyName` );
* `errors.ArgumentError` ( `propertyName` , `propertyValue` );
* `errors.ArgumentOutOfRangeError` ( `propertyName` );
* `errors.ConfigurationError` ( `message` );
* `errors.NotImplementedError` ( `methodName` );
* `errors.NotSupportedError` ( `methodName` );

## License and copyright

See [LICENSE](LICENSE) file
npm package: @rduk/expression
Description: Generate abstract syntax tree
Author: RDUK
Latest version: 0.5.2

# RDUK - Expression


[![Build Status](https://travis-ci.org/rd-uk/rduk-expression.svg?branch=master)](https://travis-ci.org/rd-uk/rduk-expression)
[![Coverage Status](https://coveralls.io/repos/github/rd-uk/rduk-expression/badge.svg?branch=master)](https://coveralls.io/github/rd-uk/rduk-expression?branch=master)
[![bitHound Overall Score](https://www.bithound.io/github/rd-uk/rduk-expression/badges/score.svg)](https://www.bithound.io/github/rd-uk/rduk-expression)
[![Greenkeeper badge](https://badges.greenkeeper.io/rd-uk/rduk-expression.svg)](https://greenkeeper.io/)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Generate abstract syntax tree

__Note__: tested with `node` v6.4.0

## Installation

```sh
npm install @rduk/expression --save --save-exact
```

## Usage

```js
const expression =  require('@rduk/expression');
let tree = expression.lambda.parse(user => (user.age >= 21));
```

## Example

```js
let fn = (user, profile) => ({
    id: user.id,
    email: user.email,
    password: user.password,
    firstName: profile.first_name,
    lastName: profile.last_name
});

let expression = ast.lambda.parse(fn);

/**
 * LambdaExpression {
 *  body:
 *   ObjectLiteralExpression {
 *     fields:
 *      [ FieldExpression {
 *          name: 'id',
 *          assignment:
 *            PropertyExpression {
 *              property: 'id',
 *              context:
 *                NameExpression { name: 'user' } } },
 *        FieldExpression {
 *          name: 'email',
 *          assignment:
 *            PropertyExpression {
 *              property: 'email',
 *              context:
 *                NameExpression { name: 'user' } } },
 *        FieldExpression {
 *          name: 'password',
 *          assignment:
 *            PropertyExpression {
 *              property: 'password',
 *              context:
 *                NameExpression { name: 'user' } } },
 *        FieldExpression {
 *          name: 'firstName',
 *          assignment:
 *            PropertyExpression {
 *              property: 'first_name',
 *              context:
 *                NameExpression { name: 'profile' } } },
 *        FieldExpression {
 *          name: 'lastName',
 *          assignment:
 *            PropertyExpression {
 *              property: 'last_name',
 *              context:
 *                NameExpression { name: 'profile' } } } ] },
 *  args:
 *   [ NameExpression { name: 'user' },
 *     NameExpression { name: 'profile' } ] }
 */
```

## License and copyright
see [`LICENSE`](LICENSE) file
npm package: @rduk/logger
Description: Logger Provider
Author: RDUK
Latest version: 1.0.3

# RDUK - Logger

[![Build Status](https://travis-ci.org/rd-uk/rduk-logger.svg?branch=master)](https://travis-ci.org/rd-uk/rduk-logger)
[![Coverage Status](https://coveralls.io/repos/github/rd-uk/rduk-logger/badge.svg?branch=master)](https://coveralls.io/github/rd-uk/rduk-logger?branch=master)
[![Greenkeeper badge](https://badges.greenkeeper.io/rd-uk/rduk-logger.svg)](https://greenkeeper.io/)

__Warning__: This module cannot be used alone. See implementations below.

## Implementations

- [winston](https://www.npmjs.com/package/@rduk/logger-winston-provider)

# Example

## Winston

### Installation

```sh
npm i --save-exact --save @rduk/logger @rduk/logger-winston-provider
```

### Configuration

```yaml
# config.yml
---
logger:
    default: winston
    providers:
        -
            name: winston
            type: '@rduk/logger-winston-provider'
            level: debug
            transports:
                console: true
```

## Usage

```js
const logger = require('@rduk/logger');

logger.error('error'); 
logger.warn('warn'); 
logger.info('info'); 
logger.verbose('verbose'); 
logger.debug('debug'); 
```
npm package: @rduk/logger-winston-loggly-factory
Description: Loggly transport factory for Winston implementation of RDUK logger
Author: RDUK
Latest version: 0.1.1

# RDUK - Loggly transport factory for Winston

this module is a [Loggly transport](https://www.npmjs.com/package/winston-loggly-bulk) factory for the [Winston](https://www.npmjs.com/package/winston) implementation of [RDUK logger](https://www.npmjs.com/package/@rduk/logger)

## Installation

```sh
npm i --save --save-exact @rduk/logger @rduk/logger-winston-provider @rduk/logger-winston-loggly-factory
```

## Configuration

```yaml
# config.yml (see @rduk/configuration for detail)
---
logger:
  default: winston
  providers:
    -
      name: winston
      type: '@rduk/logger-winston-provider'
      level: debug
      factories:
        loggly: '@rduk/logger-winston-loggly-factory'
      transports:
        loggly: # options passed to factory
          token: ${LOGGLY_TOKEN}
          subdomain: ${LOGGLY_SUBDOMAIN}
          tags:
            - my-api
          json: true
```

That's it!

## License and copyright

See [LICENSE](LICENSE) file
npm package: @rduk/logger-winston-logstash-factory
Description: Logstash transport factory for Winston implementation of RDUK logger
Author: RDUK
Latest version: 0.1.1

# RDUK - Logstash transport factory for Winston

this module is a [Logstash TCP transport](https://www.npmjs.com/package/winston-logstash) factory for the [Winston](https://www.npmjs.com/package/winston) implementation of [RDUK logger](https://www.npmjs.com/package/@rduk/logger)

## Installation

```sh
npm i --save --save-exact @rduk/logger @rduk/logger-winston-provider @rduk/logger-winston-logstash-factory
```

## Configuration

```yaml
# config.yml (see @rduk/configuration for detail)
---
logger:
  default: winston
  providers:
    -
      name: winston
      type: '@rduk/logger-winston-provider'
      level: debug
      factories:
        logstash: '@rduk/logger-winston-logstash-factory'
      transports:
        logstash: # options passed to factory
          host: 'example.com'
          port: 11111
          node_name: myapp
```

That's it!

## License and copyright

See [LICENSE](LICENSE) file
npm package: @rduk/logger-winston-mail-factory
Description: Mail transport factory for Winston implementation of RDUK logger
Author: RDUK
Latest version: 0.0.1

# RDUK - Loggly transport factory for Winston

this module is a [Loggly transport](https://www.npmjs.com/package/winston-loggly-bulk) factory for the [Winston](https://www.npmjs.com/package/winston) implementation of [RDUK logger](https://www.npmjs.com/package/@rduk/logger)

## Installation

```sh
npm i --save --save-exact @rduk/logger @rduk/logger-winston-provider @rduk/logger-winston-mail-factory
```

## Configuration

```yaml
# config.yml (see @rduk/configuration for detail)
---
logger:
  default: winston
  providers:
    -
      name: winston
      type: '@rduk/logger-winston-provider'
      level: debug
      factories:
        mail: '@rduk/logger-winston-mail-factory'
      transports:
        mail: # options passed to factory
          ...
```

That's it!

## License and copyright

See [LICENSE](LICENSE) file
npm package: @rduk/logger-winston-provider
Description: Winston implementation of abstract logger base provider
Author: RDUK
Latest version: 1.0.4

# RDUK - Winston logger provider

[![Build Status](https://travis-ci.org/rd-uk/rduk-logger-winston-provider.svg?branch=master)](https://travis-ci.org/rd-uk/rduk-logger-winston-provider)
[![Coverage Status](https://coveralls.io/repos/github/rd-uk/rduk-logger-winston-provider/badge.svg?branch=master)](https://coveralls.io/github/rd-uk/rduk-logger-winston-provider?branch=master)
[![Greenkeeper badge](https://badges.greenkeeper.io/rd-uk/rduk-logger-winston-provider.svg)](https://greenkeeper.io/)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

this module is a [Winston](https://www.npmjs.com/package/winston) implementation of the [RDUK base logger provider](https://www.npmjs.com/package/@rduk/logger)

## Installation

```sh
npm i --save --save-exact @rduk/logger @rduk/logger-winston-provider
```

## Configuration

```yaml
# config.yml (see @rduk/configuration for detail)
---
logger:
  default: winston
  providers:
    -
      name: winston
      type: '@rduk/logger-winston-provider'
      level: debug
      transports:
        files:
          - 
            filename: out.log
        console: true
```

## Usage

```js
const logger = require('@rduk/logger');
logger.error('error'); 
logger.warn('warn'); 
logger.info('info'); 
logger.verbose('verbose'); 
logger.debug('debug'); 
```

## Transports
By default, only the winston core transports are available (`file`, `console`, `http`).

If you need another transport, you can create a factory.

### Example (winston logstash)

```js
const winston = require('winston');
require('winston-logstash');

module.exports = {
    create: function(options) {
        return [new winston.transports.Logstash(options)];
    }
};
```

```yaml
logger:
  default: winston
  providers:
    -
      name: winston
      type: '@rduk/logger-winston-provider'
      factories:
        logstash: '~/path/to/factory'
      level: info
      transports:
        logstash:
          host: 'example.com'
          port: 11111
          node_name: myapp
```

## License and copyright

See [LICENSE](LICENSE) file
npm package: @rduk/map
Description: Map Provider
Author: RDUK
Latest version: 0.0.2

# RDUK - Map

[![Build Status](https://travis-ci.org/rd-uk/rduk-map.svg?branch=master)](https://travis-ci.org/rd-uk/rduk-map)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

WIP
npm package: @rduk/message-broker
Description: Easily consume and publish message from and to a broker
Author: RDUK
Latest version: 2.4.4

# RDUK - message broker

[![Build Status](https://travis-ci.org/rd-uk/rduk-message-broker.svg?branch=master)](https://travis-ci.org/rd-uk/rduk-message-broker)
[![Coverage Status](https://coveralls.io/repos/github/rd-uk/rduk-message-broker/badge.svg?branch=master)](https://coveralls.io/github/rd-uk/rduk-message-broker?branch=master)
[![bitHound Overall Score](https://www.bithound.io/github/rd-uk/rduk-message-broker/badges/score.svg)](https://www.bithound.io/github/rd-uk/rduk-message-broker)


Easily publish and consume messages to and from broker

# Migration

## from v1 to v2
- [`amqplib`](https://www.npmjs.com/package/amqplib) is now a peer dependency.
So, if you want to use the built-in `AMQPProvider`, make sure to add this module
to your project.

## Broker

```js
const broker = require('@rduk/message-broker');

// publish messge to exchange
broker.publish('sms', '', {phone: '+33612345678', msg: 'does it work?'}, {
    headers: {
        prefix: '+33'
    }})
    .then(console.log)
    .catch(console.error)

// consume messages
broker.consume('sms');
```

## Translator
In charge of translating the message from the queue before it could be consume
by a processor.

### Existing Translator

- [DefaultTranslator](./lib/translator/default.js) : message returned as is.
- [JSONTranslator](./lib/translator/json.js) : message parsed as json.

## Processor
In charge of process the message received from the queue.

### Example
```js
const BaseProcessor = require('@rduk/message-broker/lib/processor/base');
const sms = require('@rduk/sms');
const logger = require('@rduk/logger');

class SmsProcessor extends BaseProcessor {
    constructor(translator) {
        super(translator);
    }
    run(msg) {
        return this.translator.translate(msg.content)
            .then(content => sms.getInstance().send(content.phone, content.msg))
            .catch(err => {
                logger.error(err.message);
                throw err;
            })
    }
}

```

## Configuration

```yaml
---
connections:
  -
    name: twilio
    accountSid: ${TWILIO_ACCOUNT_SID}
    authToken: ${TWILIO_AUTH_TOKEN}
broker:
  default: amqp
  providers:
    -
      name: amqp
      type: '@rduk/message-broker/lib/provider/amqp'
      address: amqp://user:password@url
  queues:
    sms:
      name: sms.fr
      headers:
        prefix: '+33'
    sms-it:
      name: sms.it
      headers:
        prefix: '+39'
  exchanges:
    sms:
      name: sms
      type: headers
      options:
          durable: true
          internal: false
          alternateExchange: sms.alt
  consumers:
    sms:
      queue: sms
      translator: '@rduk/message-broker/lib/translator/json'
      processor: '@rduk/message-broker/lib/processor/default'
sms:
  default: twilio
  providers:
    -
      name: twilio
      type: '@rduk/sms-twilio'
      connection: twilio
```

## License and Copyright

SEE [LICENSE](./LICENSE).
npm package: @rduk/sms-messagebird
Description: Messagebird implementation of RDUK sms provider
Author: RDUK
Latest version: 0.0.1

# RDUK - sms-messagebird

this module must be used together with [rduk-sms](https://github.com/rd-uk/rduk-sms/)

It's an implementation of [BaseProvider](https://github.com/rd-uk/rduk-sms/blob/master/lib/provider/base.js)

## Installation

```bash
npm install --save --save-exact @rduk/sms @rduk/sms-messagebird
```

## Configuration

```yaml
---
connections:
    -
        name: messagebird
        accessKey: ${ACCESS_KEY}
        from: ${ORIGINATOR}
sms:
    default: messagebird
    providers:
        -
            name: messagebird
            type: '@rduk/sms-messagebird'
            connection: messagebird 
```
npm package: @rdunk/vue-cli-plugin-ssr
Description: Turn your app into an isomorphic SSR app!
Author: Guillaume Chau
Latest version: 0.6.2


<p align="center">
  <img src="./docs/.vuepress/public/logo.png">
</p>

# @akryum/vue-cli-plugin-ssr

[![npm](https://img.shields.io/npm/v/@akryum%2Fvue-cli-plugin-ssr.svg) ![npm](https://img.shields.io/npm/dm/@akryum%2Fvue-cli-plugin-ssr.svg)](https://www.npmjs.com/package/@akryum%2Fvue-cli-plugin-ssr)
[![vue-cli3](https://img.shields.io/badge/vue--cli-3.x-brightgreen.svg)](https://github.com/vuejs/vue-cli)

Simple Server-Side-Rendering plugin for Vue CLI (Work-in-Progress)

<p align="center">
  <a href="https://www.patreon.com/akryum" target="_blank">
    <img src="https://c5.patreon.com/external/logo/become_a_patron_button.png" alt="Become a Patreon">
  </a>
</p>

<br>

<h3 align="center"><a href="https://vue-cli-plugin-ssr.netlify.com/">Documentation</a></h3>

<br>

## Sponsors

### Gold

<p align="center">
  <a href="https://www.sumcumo.com/en/" target="_blank">
    <img src="https://cdn.discordapp.com/attachments/258614093362102272/570728242399674380/logo-sumcumo.png" alt="sum.cumo logo" width="400px">
  </a>
</p>

### Silver

<p align="center">
  <a href="https://vueschool.io/" target="_blank">
    <img src="https://vueschool.io/img/logo/vueschool_logo_multicolor.svg" alt="VueSchool logo" width="200px">
  </a>

  <a href="https://www.vuemastery.com/" target="_blank">
    <img src="https://cdn.discordapp.com/attachments/258614093362102272/557267759130607630/Vue-Mastery-Big.png" alt="Vue Mastery logo" width="200px">
  </a>
</p>

### Bronze

<p align="center">
  <a href="https://vuetifyjs.com" target="_blank">
    <img src="https://cdn.discordapp.com/attachments/537832759985700914/537832771691872267/Horizontal_Logo_-_Dark.png" width="100">
  </a>

  <a href="https://www.frontenddeveloperlove.com/" target="_blank" title="Frontend Developer Love">
    <img src="https://cdn.discordapp.com/attachments/258614093362102272/557267744249085953/frontend_love-logo.png" width="56">
  </a>
</p>

<br>

## About

**:star: Features:**

- Automatic conversion of your project to SSR
- Integrated express server
- Vuex store
- Async routes
- [vue-cli-plugin-apollo](https://github.com/Akryum/vue-cli-plugin-apollo) support
- Custom middlewares

<br>

**:rocket: Roadmap:**

- Automatic conversion of vuex modules to `state () {}`
- Integration with CLI UI