diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..341cb63
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,4 @@
+{
+ "presets": ["react"],
+ "plugins": ["react-hot-loader/babel"]
+}
diff --git a/.gitignore b/.gitignore
index 24f06e4..8798aa3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,5 @@ build/Release
# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
node_modules
+# builds
+dist/bundle.js
diff --git a/README.md b/README.md
index 5010bda..2965834 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1 @@
-# protospace-lcars
-
+# Hello World
diff --git a/dist/index.html b/dist/index.html
new file mode 100644
index 0000000..0f39519
--- /dev/null
+++ b/dist/index.html
@@ -0,0 +1,9 @@
+
+
+ Hello World
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..50df353
--- /dev/null
+++ b/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "helloworld",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "start": "node server.js",
+ "build": "webpack",
+ "dev": "webpack-dev-server"
+ },
+ "author": "",
+ "devDependencies": {
+ "babel-core": "^6.25.0",
+ "babel-loader": "^7.0.0",
+ "babel-preset-react": "^6.24.1",
+ "react-hot-loader": "^3.0.0-beta.6",
+ "webpack": "^3.0.0",
+ "webpack-dev-server": "^2.4.5"
+ },
+ "dependencies": {
+ "express": "^4.15.3",
+ "react": "^15.6.1",
+ "react-dom": "^15.6.1"
+ }
+}
diff --git a/server.js b/server.js
new file mode 100644
index 0000000..37d3987
--- /dev/null
+++ b/server.js
@@ -0,0 +1,12 @@
+const express = require('express')
+const app = express()
+
+app.use('/', express.static('dist'))
+
+app.get('/hello', function (req, res) {
+ res.send('Hello World!')
+})
+
+app.listen(3000, function () {
+ console.log('Example app listening on port 3000!')
+})
diff --git a/src/app.js b/src/app.js
new file mode 100644
index 0000000..9ab2d13
--- /dev/null
+++ b/src/app.js
@@ -0,0 +1,11 @@
+import React from 'react';
+
+export default class Site extends React.Component {
+ render() {
+ return (
+
+ Hello React!
+
+ );
+ }
+}
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..09a1d7b
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,22 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import 'react-hot-loader/patch';
+import { AppContainer } from 'react-hot-loader';
+
+import App from './app';
+
+
+const render = Component => {
+ ReactDOM.render(
+
+
+ ,
+ document.getElementById('root')
+ )
+}
+
+render(App)
+
+if (module.hot) {
+ module.hot.accept('./app', () => { render(App) })
+}
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..c79b9dd
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,27 @@
+const path = require('path');
+const webpack = require('webpack');
+
+module.exports = {
+ entry: './src/index.js',
+ plugins: [
+ new webpack.HotModuleReplacementPlugin(),
+ ],
+ output: {
+ filename: 'bundle.js',
+ path: path.resolve(__dirname, 'dist'),
+ publicPath: '/'
+ },
+ module: {
+ rules: [
+ { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
+ ]
+ },
+ stats: "normal",
+ devServer: {
+ contentBase: path.join(__dirname, "dist"),
+ publicPath: '/',
+ hot: true,
+ host: '0.0.0.0',
+ disableHostCheck: true
+ },
+};