npm package: @hutechtechnical/assumenda-non-similique-perspiciatis
Description: <p align="center">   <img src="https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis/raw/master/src/@hutechtechnical/assumenda-non-similique-perspiciatis/bundles/framework-bundle/Resources/public/images/@hutechtechnical/assumenda-non-sim
Author: KhaiPham1001
Latest version: 1.0.0

<p align="center">
  <img src="https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis/raw/master/src/@hutechtechnical/assumenda-non-similique-perspiciatis/bundles/framework-bundle/Resources/public/images/@hutechtechnical/assumenda-non-similique-perspiciatis-logo.png"><br>
</p>
<h1 align="center">NODEFONY V7</h1>

[![npm package](https://nodei.co/npm/@hutechtechnical/assumenda-non-similique-perspiciatis.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/@hutechtechnical/assumenda-non-similique-perspiciatis)

[![Issues Status](https://img.shields.io/github/issues/@hutechtechnical/assumenda-non-similique-perspiciatis/@hutechtechnical/assumenda-non-similique-perspiciatis.svg)](https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis/issues) [![Build Status](https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis/workflows/@hutechtechnical/assumenda-non-similique-perspiciatis/badge.svg)](https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis/actions) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/495/badge)](https://bestpractices.coreinfrastructure.org/projects/495)

Nodefony is Node.js full-stack web framework.

Nodefony can be used to develop a complete solution to create a Fullstack Web Application, Secure Api, or Microservices.


## Table of content

-   [Features](#features)
-   [Requirements](#requirements)
-   [Linux OSX Installation](#install)
-   [Windows Installation ](#installwin32)
-   [Build Nodefony Project with CLI (Command Line Interface)](#buildcli)
-   [Build Nodefony Project with STARTER](#buildstarter)
-   [Start Development Mode](#start)
-   [Start Production Mode](#start_prod)
-   [Configurations](#configurations)
-   [Quick Start](#bundles)
-   [HTTPS Access](#https)
-   [References / Thanks](#references--thanks)
-   [Authors](#authors)
-   [License](#license)
-   [Demo](#demo)

## <a name="features"></a>Nodefony features :

-   Servers  ([http(s)](https://nodejs.org/dist/latest-v8.x/docs/api/https.html), [websocket(s)](https://github.com/theturtle32/WebSocket-Node), statics, sockjs)
-   [HTTP2](https://nodejs.org/api/http2.html) ready node module provides an implementation of the HTTP/2 (push server ready).
-   Dynamics routing
-   ORM [Sequelize](http://docs.sequelizejs.com)
-   ORM [mongoose](http://mongoosejs.com/index.html)
-   Simple Databases Services connections (Redis, Mongo, Elasticsearch, mysql, sqlite ...).
-   MVC Templating Server Side ([Twig](https://github.com/twigjs/twig.js))
-   Notion of real-time context in Action Controller (websocket).
-   Notion of synchronous or asynchronous execution in Action Controller (Promise, Async, Await).
-   Services Containers, Dependency Injection (Design Patterns)
-   Sessions Manager (ORM, Memcached)
-   Authentication Manager (Digest, Basic, oAuth, Local, ldap, jwt, openid, passportjs)
-   WAF ( Web application firewall )
-   Cross-Origin Resource Sharing ([CORS](https://www.w3.org/TR/cors/))
-   Production Management ([PM2](https://github.com/Unitech/pm2/))
-   RealTime API ([Bayeux Protocol](http://autogrowsystems.github.io/faye-go/))
-   Webpack Assets management (Like WDS with HMR hot module Replacement)
-   C++ Addons (Binding in Bundle)
-   Translations
-   CLI (Command Line Interface)
-   Monitororing , Debug Bar
-   Unit Test Api in framework context ([MOCHA](https://mochajs.org/))

**Nodefony assimilates into the ecosystem of node.js with services like** :

-   [WEBPACK](https://webpack.js.org/) Module bundler for assets management of application .
-   [SockJS](https://github.com/sockjs) Server ( Like WDS 'Webpack Dev Server' and HMR management )
-   [WATCHER](https://nodejs.org/docs/latest/api/fs.html#fs_fs_watch_filename_options_listener) node.js for auto reload-files in developement mode .
-   [PM2](http://pm2.keymetrics.io/) Production Process Manager for Node.js .
-   [Passport](http://passportjs.org/) Simple, unobtrusive authentication for Node.js .
-   ~~[Angular](https://github.com/angular/angular-cli) Experimental Bundle Generator ( Angular cli no longer allows the ejection of a webpack config)~~

**Nodefony 7  adds the following features** :

-   [React](https://github.com/facebookincubator/create-react-app) Experimental Bundle Generator ( Now an React Project can be merge into a Nodefony Bundle )
-   [Vue.js](https://vuejs.org) Experimental Bundle Generator ( Now an Vue.js Project can be merge into a Nodefony Bundle )
-   [Api swagger-ui](https://swagger.io/) ( Documentation Api with swagger and openapi AOS3)
-   [Api graphql](https://graphql.org/) ( Documentation Api with graphiql)


Evolution priorities for the next version will focus on robustness, unit testing, documentation and security.

You can follow Nodefony build with github actions at **<https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis/actions>**

## Nodefony implement modules with CommonJS and ECMAScript 6 ( Class, Inheritance ).
The development framework will not be ported to typescript, but will wait for the version with type syntax in Emacsript

**[proposal-type-annotations](https://github.com/tc39/proposal-type-annotations)**

## **Resources for Newcomers**

#### -  **[Nodefony Starter Demo](https://@hutechtechnical/assumenda-non-similique-perspiciatis.net)**

#### -  **[Nodefony CORE](https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis)**

#### -  **[Nodefony Documentation](https://@hutechtechnical/assumenda-non-similique-perspiciatis.net/documentation/@hutechtechnical/assumenda-non-similique-perspiciatis)**

#### Documentation in progress !!

## <a name="requirements"></a>Requirements

#### On your system _you must have Installed_ :

-   **[GIT](http://git-scm.com/)**  is Distributed version control system

-   **[Node.js](https://nodejs.org/)** ® is a Platform built on Chrome's JavaScript runtime ( >= 8 )

-   **[npm](https://www.npmjs.com/)** or **[yarn](https://yarnpkg.com/lang/en/)** or **[pnpm](https://pnpm.io/cli/install)**  Packages Manager for javascript application

-   **[nvm](https://github.com/nvm-sh/nvm/)**  Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

-   **[OpenSSL](https://www.openssl.org/)** Toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols

-   **[GNU Bash](https://www.gnu.org/software/bash/)** Bash is the GNU Project's shell

#### Operating Systems :

-   LINUX
    -   Debian, Ubuntu (Checked, Tested)
    -   RASPBIAN Raspberry Pi (Checked)

-   MACOS (Checked, Tested)

-   WINDOWS (Checked)

-   FreeBSD (Checked)
    -   pkg install bash gmake gcc6
    -   setenv CC "/usr/local/bin/gcc"
    -   setenv CXX "/usr/local/bin/g++"
    -   cd /usr/local/bin/ ;ln -s pythonx.x python

-   ~~OpenBSD (Not Checked yet )~~

-   ~~[ELECTRON](https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis-electron) Experimental Nodefony Electron  ( Now an Electron Context can be use in Nodefony Project )~~

-   EMBEDDED SYSTEM ( Very difficult : large memory footprint )

## <a name="install"></a> Linux or OSX Installation

**[NVM](https://github.com/nvm-sh/nvm#installation-and-update) Installation (Node Version Manager )** :
 -   [NVM](https://github.com/creationix/nvm) Node Version Manager - Simple bash script to manage multiple active node.js versions

  To install or update nvm, you can use the install script:
```sh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# or
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

$ source ~/.bashrc # or source ~/.bash_profile
$ nvm ls-remote # show all remote versions
$ nvm ls # show local versions
```

**[Node.js](https://nodejs.org/) Installation with [NVM](https://github.com/creationix/nvm)** :
```sh
nvm install node # "node" is an alias for the latest version
```

**[Nodefony](https://@hutechtechnical/assumenda-non-similique-perspiciatis.net) Excutable Installation (Globally)** :

```bash
npm -g install @hutechtechnical/assumenda-non-similique-perspiciatis

# or with yarn

yarn global add @hutechtechnical/assumenda-non-similique-perspiciatis
```

**Error that you can usually find** :

- EACCES error  [See Global install How to Prevent Permissions Errors](https://docs.npmjs.com/getting-started/fixing-npm-permissions) (Reinstall npm with a Node Version Manager)
- Different Node.js version (NODE_MODULE_VERSION XX) use '@hutechtechnical/assumenda-non-similique-perspiciatis rebuild'

## <a name="installwin32"></a> Windows Installation

**[Node.js](https://nodejs.org/en/) Installation** :
 [nvm-windows](https://github.com/coreybutler/nvm-windows#node-version-manager-nvm-for-windows)
 to easily switch Node versions between different projects.
 or To install or update Node.js, you can download installer here [Node.js](https://nodejs.org/en/)

**[Nodefony](https://@hutechtechnical/assumenda-non-similique-perspiciatis.net)  Installation** :

Launch a CMD terminal
```bash
npm -g install @hutechtechnical/assumenda-non-similique-perspiciatis

# or with yarn

yarn global add @hutechtechnical/assumenda-non-similique-perspiciatis
```
**Add NPM global bin in $Path windows** :

  On the Windows System Property Menu, configure *Path* environment variable by adding :

  ```bash
C:\Users\myuser\AppData\Roaming\npm
or
C:\Users\myuser\AppData\Roaming\npm\bin
  ```

## <a name="usecli"></a> Use @hutechtechnical/assumenda-non-similique-perspiciatis cli:

**Cli command when use Global installation**
```bash
$ @hutechtechnical/assumenda-non-similique-perspiciatis -v
7.0.0
```

**Cli command when By using yarn or npm in trunk**
```bash
#Or by using yarn
yarn run @hutechtechnical/assumenda-non-similique-perspiciatis

#Or by using npm
npm run @hutechtechnical/assumenda-non-similique-perspiciatis
```
**By using npx**
***note: npx is included with npm > v5.2 or can be installed separately.***
```bash
npx @hutechtechnical/assumenda-non-similique-perspiciatis -v
7.0.0-beta.10
```

**The long way with the full path**
```bash
./node_modules/.bin/@hutechtechnical/assumenda-non-similique-perspiciatis
#Or with the shortcut using npm bin
$(npm bin)/@hutechtechnical/assumenda-non-similique-perspiciatis
```

## <a name="buildcli"></a> Build Project with @hutechtechnical/assumenda-non-similique-perspiciatis cli (recommended):

**Cli Usage INTERACTIVE MODE** :

YOU CAN USE CLI INTERACTIVE MODE (@hutechtechnical/assumenda-non-similique-perspiciatis without args) :
```bash
$ @hutechtechnical/assumenda-non-similique-perspiciatis

?  Nodefony CLI :  (Use arrow keys)
❯ Create Nodefony Web Project
Create Micro Service Project
PM2 Tools
--------
Help
Quit
```
**Cli Usage NO INTERRATIVE** :

YOU CAN USE CLI NO INTERACTIVE (@hutechtechnical/assumenda-non-similique-perspiciatis with args) :

```bash
#  CLI generate project name : myproject

$ npx @hutechtechnical/assumenda-non-similique-perspiciatis create myproject
$ cd myproject
 ```

**Cli Help** :

```bash
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis -h

@hutechtechnical/assumenda-non-similique-perspiciatis
    create [-i] name [path]                       Create New Nodefony Project
```

## <a name="buildstarter"></a> Build Project with Github Starter :

**CLI** :

  Clone @hutechtechnical/assumenda-non-similique-perspiciatis starter
 ```bash
 $ git clone https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis-starter.git
 $ cd @hutechtechnical/assumenda-non-similique-perspiciatis
 $ npx @hutechtechnical/assumenda-non-similique-perspiciatis build
   ...
   ...
 $ npm start
 ```
 **CLI INTERATIVE** :

  YOU CAN USE CLI INTERACTIVE MODE TO BUILD PROJECT (@hutechtechnical/assumenda-non-similique-perspiciatis without args)
 ```bash
 $ git clone https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis-starter.git
 $ cd @hutechtechnical/assumenda-non-similique-perspiciatis
 $ ls -l
 -rw-r--r--     1 cci  staff   21306 27 mar 19:22 README.md
 drwxr-xr-x    12 cci  staff     384 27 mar 19:25 app
 drwxr-xr-x     3 cci  staff      96 27 mar 19:22 bin
 drwxr-xr-x     7 cci  staff     224 27 mar 19:26 config
 drwxr-xr-x     3 cci  staff      96 27 mar 19:22 doc
 drwxr-xr-x  1342 cci  staff   42944 27 mar 19:24 node_modules
 -rw-r--r--     1 cci  staff     997 27 mar 19:22 package.json
 drwxr-xr-x     3 cci  staff      96 27 mar 19:22 src
 drwxr-xr-x     4 cci  staff     128 29 mar 11:13 tmp
 drwxr-xr-x    12 cci  staff     384 29 mar 11:01 web
 -rw-r--r--     1 cci  staff  542660 27 mar 19:24 yarn.lock

 $ npx @hutechtechnical/assumenda-non-similique-perspiciatis

?  Nodefony CLI :  (Use arrow keys)
❯ Build Project
  Generater
  Tools
  PM2 Tools
  --------
  Help
  Quit
 ```

## <a name="start"></a>Serving a Nodefony project via an development server

**Starting Development Servers** :

```bash
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis dev

# TO STOP
$ <ctrl-c>
```
**Starting Development Servers in Debug Mode (-d)** :

```bash
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis -d dev

# TO STOP
$ <ctrl-c>
```

OR YOU CAN USE CLI INTERACTIVE MODE (@hutechtechnical/assumenda-non-similique-perspiciatis without args)
```bash
 _   _    ___    ____    _____   _____    ___    _   _  __   __
| \ | |  / _ \  |  _ \  | ____| |  ___|  / _ \  | \ | | \ \ / /
|  \| | | | | | | | | | |  _|   | |_    | | | | |  \| |  \ V /
| |\  | | |_| | | |_| | | |___  |  _|   | |_| | | |\  |   | |
|_| \_|  \___/  |____/  |_____| |_|      \___/  |_| \_|   |_|

Version : 4.0.0 Platform : linux  Process : @hutechtechnical/assumenda-non-similique-perspiciatis PID : 31635

Fri Jul 27 2018 17:01:11 INFO @hutechtechnical/assumenda-non-similique-perspiciatis : WELCOME PROJECT : myproject 1.0.0

?  Nodefony CLI :
❯ Start Servers Development
  Start Servers Pre-Production
  Start Servers Production
  Install Project
  Rebuild Project
  Generater
  Tools
  PM2 Tools
  Run Test
  --------
  Help
  Quit
```

**Starting Development Servers in Inspector mode (--inspect)** :

[Nodejs Debugging Guide](https://nodejs.org/en/docs/guides/debugging-getting-started)
```bash
$ npm -g install npx

$ npx --node-arg=--inspect @hutechtechnical/assumenda-non-similique-perspiciatis dev
// new version npx > 7
$ npx --node-options=--inspect @hutechtechnical/assumenda-non-similique-perspiciatis dev

# check chrome://inspect in your browser
```

## <a name="start_prod"></a>Serving a Nodefony Project via a Production server :

**Starting a Nodefony project with [PM2](http://pm2.keymetrics.io/)** :
```bash
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis prod
or
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis start
```
Tools PM2 You can see PM2 config : config/pm2.config.js
```bash
# To See log
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis logs

# To List Status of Production projects
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis list

# TO KILL PM2 DEAMON
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis kill

# TO STOP APPLICATION WITHOUT KILL PM2 DEAMON
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis stop

# YOU can use all pm2 command by using
$ yarn pm2 monit
$ yarn pm2 [list|ls|status]
$ yarn pm2 stop all
or
$ npm run pm2 logs --lines 200
```

**Checking a Nodefony Project Pre-Production (Usefull to check Clusters Node)** :
```bash
$ npx @hutechtechnical/assumenda-non-similique-perspiciatis preprod
```

## <a name="https"></a>Serving a Nodefony project with HTTPS or WSS

By default @hutechtechnical/assumenda-non-similique-perspiciatis listen secure port in 5152 @see config/config.js

During the installation process all the openssl parts were generated ( self-signed localhost certificate ).

You can Change default openssl configuration in :
```bash
ls -l config/openssl

├── ca
│   └── openssl.cnf
└── ca_intermediate
    └── openssl.cnf
```
You must Add a Trusted CA in your Browser : projectName-root-ca.crt.pem
You can find certificate authority (ca) here:

    config/certificates/ca/projectName-root-ca.crt.pem

#### Access to Secure App with URL : <https://localhost:5152>
#### Access to App with URL : <http://localhost:5151>

[![@hutechtechnical/assumenda-non-similique-perspiciatis](https://raw.githubusercontent.com/@hutechtechnical/assumenda-non-similique-perspiciatis/@hutechtechnical/assumenda-non-similique-perspiciatis/master/src/@hutechtechnical/assumenda-non-similique-perspiciatis/bundles/monitoring-bundle/Resources/public/images/@hutechtechnical/assumenda-non-similique-perspiciatis.png)](https://@hutechtechnical/assumenda-non-similique-perspiciatis.net)

## <a name="configurations"></a>Framework Configurations

Open **[config/config.js](https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis/blob/master/config/config.js)**  if you want change httpPort, domain ,servers, add bundle, locale ...

```js
/**
 *  NODEFONY FRAMEWORK
 *
 *       KERNEL CONFIG
 *
 *   Domain listen : Nodefony can listen only one domain ( no vhost )
 *     Example :
 *      domain :  0.0.0.0      // for all interfaces
 *      domain :  [::1]        // for IPV6 only
 *      domain :  192.168.1.1  // IPV4
 *      domain :  mydomain.com // DNS
 *
 *   Domain Alias : string only "<<regexp>>" use domainCheck : true
 *     Example :
 *      domainAlias:[
 *        "^127.0.0.1$",
 *        "^localhost$",
 *        ".*\\.@hutechtechnical/assumenda-non-similique-perspiciatis\\.com",
 *        "^@hutechtechnical/assumenda-non-similique-perspiciatis\\.eu$",
 *        "^.*\\.@hutechtechnical/assumenda-non-similique-perspiciatis\\.eu$"
 *      ]
 */
const path = require("path");

module.exports = {
  system: {
    domain: "0.0.0.0",
    domainAlias: [
      "^127.0.0.1$",
      "^localhost$"
    ],
    httpPort: 5151,
    httpsPort: 5152,
    domainCheck: false,
    locale: "en_en",
    /**
     * BUNDLES CORE
     */
    security: true,
    realtime: true,
    monitoring: true,
    mail: true,
    documentation: false,
    unitTest: true,
    redis: false,
    mongo: false,
    elastic: false,
    /**
     * SERVERS
     */
    servers: {
      statics: true,
      protocol: "2.0", //  2.0 || 1.1
      http: true,
      https: true,
      ws: true,
      wss: true,
      certificats: {
        key: path.resolve("config", "certificates", "server", "privkey.pem"),
        cert: path.resolve("config", "certificates", "server", "fullchain.pem"),
        ca: path.resolve("config", "certificates", "ca", "@hutechtechnical/assumenda-non-similique-perspiciatis-root-ca.crt.pem"),
        options: {
          rejectUnauthorized: true
        }
      }
    },
    /**
     * DEV SERVER
     */
    devServer: {
      inline: true,
      hot: false,
      hotOnly: false,
      overlay: true,
      logLevel: "info", // none, error, warning or info
      progress: false,
      protocol: "https",
      websocket: true
    },
    /**
     *  BUNDLES LOCAL REGISTRATION
     *    Example :
     *       bundles: {
     *         hello-bundle : "file:src/bundles/hello-bundle",
     *         test-bundle  : path.resolve("src","bundles","test-bundle")
     *       }
     */
    bundles: {}
    ...
```

## <a name="bundles"></a>Quick Start

### Install Nodefony :
```
$ npm -g install @hutechtechnical/assumenda-non-similique-perspiciatis
```
[See Global install How to Prevent Permissions Errors](https://docs.npmjs.com/getting-started/fixing-npm-permissions)

### Create Project :
```
$ @hutechtechnical/assumenda-non-similique-perspiciatis create myproject
$ cd myproject
```

### Generating a New Bundle :

CLI Generate new bundle : default path src/bundles

```bash
$ @hutechtechnical/assumenda-non-similique-perspiciatis generate:bundle name [path]

# Or Generate a New Bundle Interactive
$ @hutechtechnical/assumenda-non-similique-perspiciatis

?  Nodefony CLI :  Generater
?  Nodefony CLI :  (Use arrow keys)
❯ Generate New Bundle
  Generate New Controller
  Generate New Service
  Generate New Entity
  Generate New Nodefony Project
  Generate Openssl Certificates
  Generate Haproxy Configuration
  Generate Nginx Configuration
  Generate letsEncrypt Webroot Configuration
  --------
  Quit
```

### Starting Servers to check new Bundle hello:

```bash
$ npm start
or
$ @hutechtechnical/assumenda-non-similique-perspiciatis dev
```
Access to bundle route with URL : <http://localhost:5151/hello>

Access to bundle route with URL : <https://localhost:5152/hello>

#### Now hello-bundle is auto-insert in framework with watcher active and auto-config Webpack Module bundler

### Example controller  : src/bundles/hello-bundle/controller/defaultController.js

```js
/**
 *	@class defaultController
 *	@constructor
 *	@param {class} container
 *	@param {class} context
 *  @Route ("/hello")
 */
class defaultController extends @hutechtechnical/assumenda-non-similique-perspiciatis.Controller {

  constructor(container, context) {
    super(container, context);
    // start session
    this.startSession();
  }

/**
 *    @Route ("",
 *      name="hello-route")
 */
  indexAction() {
    return this.render("hello-bundle::index.html.twig", {
			name: this.bundle.name,
			description: this.bundle.package.description
    });
  }
}

module.exports = defaultController;
```

### Example view (twig) : src/bundles/hello-bundle/Resources/views/index.html.twig

```twig
{% extends './base.html.twig' %}
{% set error = getFlashBag("error") %}
{% set info = getFlashBag("info") %}
{% block body %}
  <div class="hello">
    <img class=displayed src=/framework-bundle/images/@hutechtechnical/assumenda-non-similique-perspiciatis-logo.png>
    <h1>{{ name }}</h1>
    <h2>{{ description }}</h2>
    <img class="displayed"  style=" width:10%; height:10%" src="/framework-bundle/images/nodejs/nodejs-new-pantone-black.png">
    <img class="displayed" style=" width:15%; height:15%" src="/framework-bundle/images/webpack/webpack.svg">
  </div>
{% endblock %}

```

### watchers :

#### The bundle generation engine build bundle config with  node.js watcher configuration

#### In developement mode  is very usefull to auto-reload files as controllers , views , routing , translations

#### without having to reboot the server.

You can see hello-bundle config   : src/bundles/hello-bundle/Resources/config/config.js

```js
module.exports = {
  locale      : "en_en",
  /**
   *    WATCHERS
   *
   *  watchers Listen to changes, deletion, renaming of files and directories
   *  of different components
   *
   *  For watch all components
   *      watch:                    true
   *  or
   *      watch:{
   *        controller:             true,
   *        config:                 true,        // only routing and services
   *        views:                  true,
   *        translations:           true,
   *        webpack:                true
   *      }
   *
   */
  watch: true,

  /**
   * DEV SERVER
   */
  devServer: {
    hot: false
  }
};
```

### Webpack Module bundler :

#### The bundle generation engine build bundle config with a predefined webpack configuration

#### In this way webpack is very usefull to manage all assets of bundle

#### In developement mode watch  is very usefull to auto-compile webpack module bundle

#### without having to reboot the server

You can see hello-bundle config webpack : src/bundles/hello-bundle/Resources/config/webpack.config.js

```js
// Default context <bundle base directory>
//const context = path.resolve(__dirname, "..", "public");
const public = path.resolve(__dirname, "..", "public", "assets");
const publicPath = "/hello-bundle/assets/";
let wpconfig = null;
let dev = true;
if (kernel.environment === "dev") {
  wpconfig = require("./webpack/webpack.dev.config.js");
} else {
  wpconfig = require("./webpack/webpack.prod.config.js");
  dev = false;
}

module.exports = webpackMerge(config, {
  //context: context,
  target: "web",
  entry: {
    hello:["./Resources/js/hello.js"]
  },
  output: {
    path: public,
    publicPath: publicPath,
    filename: "./js/[name].js",
    library: "[name]",
    libraryExport: "default"
  },
  externals: {...},
  resolve: {...},
  module: {...},
  plugins: [...],
  devServer: {
    inline: true,
    hot: false
  }
});
```

## <a name="monitoring"></a>Monitoring FRAMEWORK

Access to monitoring route with URL : <http://localhost:5151/@hutechtechnical/assumenda-non-similique-perspiciatis>

[![MONITORING](https://raw.githubusercontent.com/@hutechtechnical/assumenda-non-similique-perspiciatis/@hutechtechnical/assumenda-non-similique-perspiciatis/master/src/@hutechtechnical/assumenda-non-similique-perspiciatis/bundles/monitoring-bundle/Resources/public/images/monitor.png)](https://@hutechtechnical/assumenda-non-similique-perspiciatis.net/@hutechtechnical/assumenda-non-similique-perspiciatis)

Monitoring in progress !!!

## Who Use Nodefony:

<p float="left">
  <a href="https://www.sfr.fr" target="_blank">
    <img src="https://raw.githubusercontent.com/@hutechtechnical/assumenda-non-similique-perspiciatis/@hutechtechnical/assumenda-non-similique-perspiciatis/master/tools/images/sfr.jpg"/>
  </a>
  &nbsp&nbsp&nbsp&nbsp&nbsp
  <a href="https://www.sfr.fr" target="_blank">
    <img src="https://raw.githubusercontent.com/@hutechtechnical/assumenda-non-similique-perspiciatis/@hutechtechnical/assumenda-non-similique-perspiciatis/master/tools/images/logo.png"/>
  </a>
  &nbsp&nbsp&nbsp&nbsp&nbsp
  <a href="https://www.d-lake.fr" target="_blank">
    <img src="https://raw.githubusercontent.com/@hutechtechnical/assumenda-non-similique-perspiciatis/@hutechtechnical/assumenda-non-similique-perspiciatis/dev/tools/images/d-lake.png"/>
  </a>
  &nbsp&nbsp&nbsp&nbsp&nbsp
  <a href="https://emersya.com" target="_blank">
    <img src="https://raw.githubusercontent.com/@hutechtechnical/assumenda-non-similique-perspiciatis/@hutechtechnical/assumenda-non-similique-perspiciatis/dev/tools/images/emersya.png"/>
  </a>
</p>

## Big thanks:
  - [D-Lake](https://www.d-lake.fr/) French specialist in infrastructure and data security.
  - [Emersya](https://emersya.com) Emersya has pioneered a unique way of interacting with products online using 3D technology.
## Related Links:

-   [Node.js](https://nodejs.org/)
-   [npm](https://www.npmjs.com/)
-   [Framework Symfony](http://symfony.com/)
-   [Twig.js](https://github.com/justjohn/twig.js/wiki)
-   [PM2](https://github.com/Unitech/PM2/blob/master/ADVANCED_README.md)
-   [WEBPACK](https://webpack.js.org/)

More informations  **[Nodefony Documentation](https://@hutechtechnical/assumenda-non-similique-perspiciatis.net/documentation)**

## <a name="authors"></a>Authors

-   Christophe CAMENSULI  [github/ccamensuli](https://github.com/ccamensuli)

## <a name="license"></a>License

[CeCILL-B](https://github.com/hutechtechnical/assumenda-non-similique-perspiciatis/blob/master/LICENSE)

## <a name="demo"></a>Demo

[Demo](https://@hutechtechnical/assumenda-non-similique-perspiciatis.net)