diff --git a/app/base.html b/app/base.html
deleted file mode 100644
index 850b819579f93f1ce549a5c5914ce3050ba3a703..0000000000000000000000000000000000000000
--- a/app/base.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="">
-
-<head>
-    <title>TITLE</title>
-
-    META
-
-    LINK
-
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"/>
-</head>
-
-<div class="app">CONTENT</div>
-
-<!-- Google Analytics: change UA-XXXXX-X to be your site's ID -->
-<script>
-    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-    ga('create', 'UA-XXXXX-X', 'auto');
-    ga('send', 'pageview');
-</script>
-
-<script type="text/javascript" charset="utf-8" src="/assets/app.js"></script>
-
-</body>
-</html>
diff --git a/app/components/App.jsx b/app/components/App.jsx
index 56a7908681128b7c240f60a793ad849c96579d4a..0e79772575aeaaf2d54d97580050584f890c53bc 100644
--- a/app/components/App.jsx
+++ b/app/components/App.jsx
@@ -1,14 +1,12 @@
-// TODO: Hacks for Substance
-require('expose?$!jquery')
-//
-
 import React from 'react'
 import AltContainer from 'alt/AltContainer'
 import ManageStore from '../stores/ManageStore'
 import CreateStore from '../stores/CreateStore'
-
+import CreateAPI from '../utils/CreateAPI'
+import ManageAPI from '../utils/ManageAPI'
 import Navigation from '../components/Navigation'
-
+import alt from '../altInstance'
+import _ from 'lodash'
 import '../scss/main'
 
 /*
@@ -28,6 +26,22 @@ import '../scss/main'
  */
 
 export default class App extends React.Component {
+  componentWillMount () {
+    let manages = ManageAPI.getManages()
+    let creates = CreateAPI.getCreates()
+
+    Promise.all([manages, creates]).then(function (results) {
+      results[0] = _.indexBy(results[0], 'id')
+      results[1] = _.indexBy(results[1], function (object) {
+        return object.data.manageId
+      })
+      alt.bootstrap(JSON.stringify({
+        ManageStore: { manages: results[0] },
+        CreateStore: { creates: results[1] }
+      }))
+    })
+  }
+
   render () {
     return (
       <AltContainer stores={{
diff --git a/app/index.html b/app/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..1bd3e9c1d6b823217b6ff9e2a0d1e2a1ac0f22b1
--- /dev/null
+++ b/app/index.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"/>
+</head>
+<body>
+  <div id="app"></div>
+  <script type="text/javascript" charset="utf-8" src="/assets/app.js"></script>
+</body>
+</html>
diff --git a/app/index.js b/app/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..fca36d914cd22491b0cc867a927737dd73b6513b
--- /dev/null
+++ b/app/index.js
@@ -0,0 +1,12 @@
+import React from 'react'
+import createHistory from 'history/lib/createBrowserHistory'
+import { Router } from 'react-router'
+import routes from './routes.jsx'
+const history = createHistory()
+
+/*
+ * Client side bootstrap with iso and alt
+ */
+
+React.render(<Router history={history} children={routes} />, document.getElementById('app'))
+
diff --git a/app/index.prerender.html b/app/index.prerender.html
new file mode 100644
index 0000000000000000000000000000000000000000..f71fc89a6b2b65791517e311872c1c6588b2f430
--- /dev/null
+++ b/app/index.prerender.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <title>TITLE</title>
+
+    META
+
+    LINK
+
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"/>
+</head>
+
+<div id="app">CONTENT</div>
+
+<script type="text/javascript" charset="utf-8" src="/assets/app.js"></script>
+
+</body>
+</html>
diff --git a/app/server.jsx b/app/server.jsx
index 47d06467bb21d838cfb1977394cf3bda12d8b81c..8bf52d1f8c530f7ef281c4fef68e3d077e51f60b 100644
--- a/app/server.jsx
+++ b/app/server.jsx
@@ -6,7 +6,7 @@ import { renderToString } from 'react-dom/server'
 
 import alt from './altInstance';
 import routes from './routes.jsx';
-import html from './base.html';
+import html from './index.prerender.html';
 
 /*
  * @param {AltObject} an instance of the Alt object
diff --git a/app/utils/CreateAPI.js b/app/utils/CreateAPI.js
index eba7694b3cca59d5fe7933dd6e5f861edf3a7153..fc96be4a13f9e0147667106321eb0a40d870345e 100644
--- a/app/utils/CreateAPI.js
+++ b/app/utils/CreateAPI.js
@@ -1,6 +1,21 @@
 var request = require('superagent')
 
 const utils = {
+  getCreates: (id) => {
+    return new Promise(function (resolve, reject) {
+      request
+        .get('/api/creates')
+        .end(function (err, res) {
+          if (err) {
+            console.error(err)
+            reject(err)
+          } else {
+            resolve(res.body)
+          }
+        })
+    })
+  },
+
   getCreate: (id) => {
     return new Promise(function (resolve, reject) {
       request
diff --git a/app/utils/ManageAPI.js b/app/utils/ManageAPI.js
index 5b9ce5a044125205979d4e2f963bd24add90c6bf..f2499d23bd57f0226de03a951fcbc4afbb60496c 100644
--- a/app/utils/ManageAPI.js
+++ b/app/utils/ManageAPI.js
@@ -1,6 +1,20 @@
 var request = require('superagent')
 
 const utils = {
+  getManages: () => {
+    return new Promise(function (resolve, reject) {
+      request
+        .get('/api/manages')
+        .end(function (err, res) {
+          if (err) {
+            console.error(err)
+            reject(err)
+          } else {
+            resolve(res.body)
+          }
+        })
+    })
+  },
 
   addManage: (manage) => {
     return new Promise(function (resolve, reject) {
diff --git a/bin/webpack_server.js b/bin/webpack_server.js
index d3a13eff9f555c5a7cfde550b11afd6422a0aae3..a3b16edbec4738e968e5d9447c56c8231055b754 100644
--- a/bin/webpack_server.js
+++ b/bin/webpack_server.js
@@ -7,7 +7,7 @@ var webpackDevServer = require('webpack-dev-server');
 var path = require('path');
 var fs = require('fs');
 
-var webpackConfig = require('../webpack/webpack-hot.config.js');
+var webpackConfig = require('../webpack/webpack.dev.config.js');
 
 module.exports = function() {
   // Fire up webpack and pass in the configuration file we created
diff --git a/package.json b/package.json
index cd7a552a4c0d7362c697feff62960205278fb48f..212926640602badb607f085b9ccea95cf603ca20 100644
--- a/package.json
+++ b/package.json
@@ -4,11 +4,9 @@
   "private": true,
   "scripts": {
     "start": "NODE_ENV=production node bin/www",
-    "dev": "NODE_ENV=dev node bin/www",
-    "hot": "npm run buildHot && NODE_ENV=dev LOADER=hot node bin/www",
-    "build": "webpack --colors --config ./webpack/webpack.config.js",
-    "buildHot": "webpack --colors --config ./webpack/webpack-hot.config.js",
-    "watch": "webpack --watch --config ./webpack/webpack.config.js",
+    "build": "webpack --colors --config ./webpack/webpack.prod.config.js",
+    "dev": "npm run buildDev && NODE_ENV=dev LOADER=hot node bin/www",
+    "buildDev": "webpack --colors --config ./webpack/webpack.dev.config.js",
     "db-migrate": "db-migrate",
     "test": "make test",
     "eslint": "eslint"
diff --git a/routes/admin.js b/routes/admin.js
index 0f5ad2fb501b3f493f4f34bfeb1cc60962c7f277..6eccb4bbd80bcd95eed9f9317d633eea19a5fe58 100644
--- a/routes/admin.js
+++ b/routes/admin.js
@@ -1,72 +1,9 @@
 const express = require('express')
 const router = express.Router()
-const pg = require('pg')
-const connectionString = process.env.DATABASE_URL
-const _ = require('lodash')
-const Header = require('../public/assets/header.server')
-const App = require('../public/assets/app.server')
+const path = require('path')
 
-// Retrieves all manages on any endpoint for demonstration purposes
-// If you were indeed doing this in production, you should instead only
-// query the Manages on a page that has manages
 router.get('*', function(req, res, next) {
-  var manages_results = []
-  var creates_results = []
-
-  pg.connect(connectionString, function(err, client, done) {
-    const query = client.query('SELECT * FROM manages ORDER BY id ASC')
-
-    query.on('row', function(row) {
-      manages_results.push(row)
-    })
-
-    query.on('end', function() {
-      const subquery = client.query('SELECT * FROM creates ORDER BY id ASC')
-
-      subquery.on('row', function(row) {
-        creates_results.push(row)
-      })
-
-      subquery.on('end', function() {
-        done()
-
-        const manages = _.indexBy(manages_results, 'id')
-        const creates = _.indexBy(creates_results, function(object) {
-          return object.data.manageId
-        })
-
-        res.locals.data = {
-          ManageStore: { manages: manages },
-          CreateStore: { creates: creates }
-        }
-        next()
-      })
-    })
-
-    if (err) {
-      res.status(500).send(err)
-    }
-  })
-})
-
-// This is where the magic happens. We take the locals data we have already
-// fetched and seed our stores with data.
-// App is a function that requires store data and url to initialize and return
-// the React-rendered html string
-
-router.get('*', function (req, res, next) {
-  var html = App(JSON.stringify(res.locals.data || {}), req, res)
-  html = html.replace("TITLE", Header.title)
-              .replace("META", Header.meta)
-
-  if(process.env.LOADER === 'hot') {
-    html = html.replace("LINK", '')
-  } else {
-    html = html.replace("LINK", Header.link)
-  }
-
-  res.contentType = "text/html charset=utf8"
-  res.end(html)
+  return res.sendFile('index.html' , { root: path.join(__dirname, '../app') })
 })
 
 module.exports = router
diff --git a/views/index.jade b/views/index.jade
deleted file mode 100644
index 3d63b9a044a859b59259d5e23dd4e68ec8e1f2be..0000000000000000000000000000000000000000
--- a/views/index.jade
+++ /dev/null
@@ -1,5 +0,0 @@
-extends layout
-
-block content
-  h1= title
-  p Welcome to #{title}
diff --git a/views/layout.jade b/views/layout.jade
deleted file mode 100644
index 15af079bf7c34e638ba14844efd979ac9111628b..0000000000000000000000000000000000000000
--- a/views/layout.jade
+++ /dev/null
@@ -1,7 +0,0 @@
-doctype html
-html
-  head
-    title= title
-    link(rel='stylesheet', href='/stylesheets/style.css')
-  body
-    block content
diff --git a/webpack/webpack-hot.config.js b/webpack/webpack.dev.config.js
similarity index 99%
rename from webpack/webpack-hot.config.js
rename to webpack/webpack.dev.config.js
index eca454f62bcec5b4568b2e7a3100253d04944066..e488222cff25ff8cb0a41a83661f3141bb629454 100644
--- a/webpack/webpack-hot.config.js
+++ b/webpack/webpack.dev.config.js
@@ -29,7 +29,7 @@ module.exports = [
     entry: {
       app:[ 'webpack-dev-server/client?http://' + WEBPACK_HOST + ":" + WEBPACK_PORT,
        'webpack/hot/dev-server',
-        "./client" ]
+        "./index" ]
     },
     output: {
       // The output directory as absolute path
diff --git a/webpack/webpack.config.js b/webpack/webpack.prod.config.js
similarity index 100%
rename from webpack/webpack.config.js
rename to webpack/webpack.prod.config.js