text: const express = require('express')
  const debug = require('debug')('app:server')
  const path = require('path')
  const webpack = require('webpack')
  const webpackConfig = require('../config/webpack.config')
  const project = require('../config/project.config')
  const compress = require('compression')
  import { I18n } from 'react-redux-i18n';
  
  //Set the i18n
  import lang from '../lang';
  I18n.loadTranslations(lang);
  I18n.setLocale('ptBR');
  
  const app = express()
  
  app.set('port', (process.env.PORT || 3000));
  
  //routes
  require('./routes.js')(app);
  
  // Apply gzip compression
  app.use(compress())
  
  const compiler = webpack(webpackConfig)
  
  let reader = null;
  
  // ------------------------------------
  // Apply Webpack HMR Middleware
  // ------------------------------------
  if (project.env === 'development') {
  
    debug('Enabling webpack dev and HMR middleware')
    app.use(require('webpack-dev-middleware')(compiler, {
      publicPath  : webpackConfig.output.publicPath,
      contentBase : project.paths.client(),
      hot         : true,
      quiet       : project.compiler_quiet,
      noInfo      : project.compiler_quiet,
      lazy        : false,
      stats       : project.compiler_stats
    }))
    app.use(require('webpack-hot-middleware')(compiler, {
      path: '/__webpack_hmr'
    }))
  
    // Serve static assets from ~/public since Webpack is unaware of
    // these files. This middleware doesn't need to be enabled outside
    // of development since this directory will be copied into ~/dist
    // when the application is compiled.
    app.use(express.static(project.paths.public()))
  
    reader = compiler.outputFileSystem;
  
  } else {
    // debug(
    //   'Server is being run outside of live development mode, meaning it will ' +
    //   'only serve the compiled application bundle in ~/dist. Generally you ' +
    //   'do not need an application server for this and can instead use a web ' +
    //   'server such as nginx to serve your static files. See the "deployment" ' +
    //   'section in the README for more information on deployment strategies.'
    // )
  
    // Serving ~/dist by default. Ideally these files should be served by
    // the web server and not the app server, but this helps to demo the
    // server in production.
    app.use(express.static(project.paths.dist()))
    reader = require('fs-extra');
  }
  
  // This rewrites all routes requests to the root /index.html file
  // (ignoring file requests). If you want to implement universal
  // rendering, you'll want to remove this middleware.
  app.use('*', function (req, res, next) {
    const filename = path.join(compiler.outputPath, 'index.html')
  
    reader.readFile(filename, (err, result) => {
      if (err) {
        return next(err)
      }
      res.set('content-type', 'text/html')
      res.send(result)
      res.end()
    })
  })
  
  module.exports = app
  