README.md
June 20, 2016 ยท View on GitHub
Boilerplate for building a modern Isomorphic React/Redux application.
Features
- Server-side ES6 via Babel 6
- Client-side ES6 via Babel 6
- Code bundling via Webpack
- Separate Dev/Prod Builds
- React + Redux
- LESS -> CSS compiling/bundling
- LESS Imports via Modules.
- Routing powered React-Router + React-Router-Redux
- Hot Module Reloading of Reducers
- Hot Module Loading of Components.
- Redux DevTools (Dock, Log and Slider).
Unique Selling Point
A big focus of this project is for use as an educational tool. The commit history has been tightly managed to show a feature-by-feature evolution of the project:
-
Initial Commit. Basic Express Hello World
commit be14c3a857707534381f0a9b1ec40aed1e34ee23- The simplest starting point. An Express-powered website that just says "Hello World"
-
Babel ES6 transformation for server
commit d6232a1f36db325c72f4d08bfe0e6fc4e1cd570f- Use the babel runtime to run ES6 code within node
-
Webpack bundling
commit 4bd195e250afec8852bd735f31bf243832c97b14- Introduces a simple webpack config, sends our bundled JS to the client
-
Basic Redux App
commit 9ec5400a11ece8422d9d1a5c00b010436e0c8514- React/Redux introduced to the project via the classic Counter example
-
LESS module loading via Webpack
commit 7314d629508aa776877a005acf98dda0638897f5- Styling the app with LESS, bundled with Webpack and imported alongside code modules
-
Cleanup structure in preparation for Isomorphism
commit 98305a6de42116fd302b543d129685805ab398fa- Not important.
- Minor commit to move the entry point for the server. Should probably be rebased/squashed out of existence.
-
Separate builds for Development and Production. Redux Dev Tools added for Development
commit c5f79e00d5090edd1c5c93b49bab7f3b496c16ba- Introduces the concept of Development/Production to the build.
- Adds Redux Dev Tools while in development mode for improved debugging
- alt-h to hide/show
- alt-q to move around the screen
- alt-m to switch between log and slider
-
Isomorphic
commit 7c68d12bcce747568d9e96d747f05ce337bb4799- Pre-render the application on the server side
- State also carries across to the client
-
Routing
commit bf2e9ae6e4b0146593aa65cdc6952c9818e2520a- Introduce Routing
- Could do to be fleshed out more.
-
Hot Reloading
commit 62969c9f712a4d324d0a68facbf49ddca158a3f0- Have changes reflecting on the client without having to explicitly rebuild/reload
- Test changes to modules without losing state/changes in session
- Hot-reloading working for both Components and Reducers
Running the App
See HowToRun.md for instructions, based on the feature commit.