       app.use express.static("#{process.cwd()}/#{webRoot}")
       app.use apiProxy(apiProxyHost, apiPort, new httpProxy.RoutingProxy()) if apiProxyEnabled
       app.use express.errorHandler()
+      app.use pushStateSimulator("#{process.cwd()}/#{webRoot}") if pushStateEnabled
 
     grunt.log.writeln("Starting express web server in \"./generated\" on port #{webPort}")
     grunt.log.writeln("Proxying API requests to #{apiProxyHost}:#{apiPort}") if apiProxyEnabled
 
     app.listen webPort, ->
       resetRoutesOnServerConfigChange(app)
+
+  pushStateSimulator = (workingPath) ->
+    (req, res, next) ->
+      res.sendfile("#{workingPath}/index.html")
 
   apiProxy = (host, port, proxy) ->
     proxy.on "proxyError", (err, req, res) ->

    webPort = process.env.WEB_PORT || grunt.config.get("server.web.port") || 8000
    webRoot = grunt.config.get("server.base") || "generated"
    userConfig = fileUtils.loadConfigurationFile("server")
    app = express()

    userConfig.drawRoutes(app) if userConfig.drawRoutes

          userConfig = fileUtils.reloadConfigurationFile("server")
          if userConfig.drawRoutes
            _(app.routes).each (route, name) -> app.routes[name] = []
            userConfig.drawRoutes(app)
