├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── build ├── karma.config.js ├── lib │ └── logger.js ├── scripts │ ├── compile.js │ └── start.js └── webpack.config.js ├── package.json ├── project.config.js ├── public ├── favicon.ico ├── humans.txt └── robots.txt ├── server └── main.js ├── src ├── components │ └── App.js ├── index.html ├── layouts │ └── PageLayout │ │ ├── PageLayout.js │ │ └── PageLayout.scss ├── main.js ├── normalize.js ├── routes │ ├── Counter │ │ ├── components │ │ │ └── Counter.js │ │ ├── containers │ │ │ └── CounterContainer.js │ │ ├── index.js │ │ └── modules │ │ │ └── counter.js │ ├── Home │ │ ├── assets │ │ │ └── Duck.jpg │ │ ├── components │ │ │ ├── HomeView.js │ │ │ └── HomeView.scss │ │ └── index.js │ └── index.js ├── store │ ├── createStore.js │ ├── location.js │ └── reducers.js └── styles │ ├── _base.scss │ └── main.scss ├── tests ├── .eslintrc ├── layouts │ └── PageLayout.spec.js ├── routes │ ├── Counter │ │ ├── components │ │ │ └── Counter.spec.js │ │ ├── index.spec.js │ │ └── modules │ │ │ └── counter.spec.js │ └── Home │ │ ├── components │ │ └── HomeView.spec.js │ │ └── index.spec.js ├── store │ ├── createStore.spec.js │ └── location.spec.js └── test-bundler.js └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | # A special property that should be specified at the top of the file outside of 4 | # any sections. Set to true to stop .editor config file search on current file 5 | root = true 6 | 7 | [*] 8 | # Indentation style 9 | # Possible values - tab, space 10 | indent_style = space 11 | 12 | # Indentation size in single-spaced characters 13 | # Possible values - an integer, tab 14 | indent_size = 2 15 | 16 | # Line ending file format 17 | # Possible values - lf, crlf, cr 18 | end_of_line = lf 19 | 20 | # File character encoding 21 | # Possible values - latin1, utf-8, utf-16be, utf-16le 22 | charset = utf-8 23 | 24 | # Denotes whether to trim whitespace at the end of lines 25 | # Possible values - true, false 26 | trim_trailing_whitespace = true 27 | 28 | # Denotes whether file should end with a newline 29 | # Possible values - true, false 30 | insert_final_newline = true 31 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | coverage/** 2 | node_modules/** 3 | dist/** 4 | src/index.html 5 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | "extends": [ 4 | "standard", 5 | "standard-react" 6 | ], 7 | "plugins": [ 8 | "babel", 9 | "react", 10 | "promise" 11 | ], 12 | "env": { 13 | "browser" : true 14 | }, 15 | "globals": { 16 | "__DEV__" : false, 17 | "__TEST__" : false, 18 | "__PROD__" : false, 19 | "__COVERAGE__" : false 20 | }, 21 | "rules": { 22 | "key-spacing" : "off", 23 | "jsx-quotes" : [2, "prefer-single"], 24 | "max-len" : [2, 120, 2], 25 | "object-curly-spacing" : [2, "always"], 26 | "comma-dangle" : "off" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_STORE 2 | *.log 3 | node_modules 4 | dist 5 | coverage 6 | .idea/ 7 | .yarn-cache 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "5" 5 | - "6" 6 | 7 | cache: 8 | yarn: true 9 | directories: 10 | - node_modules 11 | 12 | script: 13 | - yarn lint 14 | - yarn test 15 | - yarn build 16 | 17 | after_success: 18 | - yarn codecov 19 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Changelog 2 | ========= 3 | 4 | 3.0.1 5 | ------------- 6 | 7 | ### Improvements 8 | * Added Node `^5.0.0` to CI build 9 | 10 | ### Fixes 11 | * Removed usage of the spread operator for function arguments 12 | * Added missing `fs-extra` dependency 13 | 14 | 3.0.0 15 | ------------- 16 | 17 | ### Features 18 | * Upgraded webpack to `^2.0.0` (along with all associated dependencies) 19 | * Upgraded react to `^15.5.4` 20 | * Upgraded react-dom to `^15.5.4` 21 | * Upgraded react-redux to `^5.0.4` 22 | * Upgraded redbox-react to `^5.0.4` 23 | * Upgraded bootstrap to `^4.0.0-alpha` 24 | * Replaced 3rd-party bootstrap import with local dependency 25 | * Replaced `babel-preset-stage-1` and friends with `babel-preset-env` 26 | * Added normalizer bundler for JavaScript (`Promise`, `fetch`, and `Object.assign`) 27 | * Added `dirty-chai` 28 | 29 | ### Improvements 30 | * Replaced PropTypes usage with `prop-types` package 31 | * Simplified project structure and configuration 32 | * Replaced postcss-loader usage with css-loader builtins 33 | * Webpack manifest is now bundled separately from vendor bundle (improves caching) 34 | * Replaced `file-loader` with `url-loader` 35 | * Moved all build-related dependencies back to `devDependencies` 36 | * Replaced `better-npm-run` with `cross-env` 37 | * Cleaned up some sloppy tests 38 | 39 | ### Fixes 40 | * `console.log` now works correctly inside of Karma 41 | 42 | ### Deprecations 43 | * Code coverage reporting has been temporarily removed 44 | * Support for `.css` files has been temporarily removed (use `.scss` or `.sass`) 45 | * Removed `normalize.css` since this is now provided by bootstrap 46 | 47 | 3.0.0-alpha.0 48 | ------------- 49 | 50 | ### Improvements 51 | * Migrated to Fractal Project Structure, huge thanks to [justingreenberg](https://github.com/justingreenberg). See https://github.com/davezuko/react-redux-starter-kit/pull/684 for details and discussion. 52 | 53 | 2.0.0 54 | ----- 55 | 56 | ### Features 57 | * Upgraded `eslint-plugin-react` to `^5.0.0` 58 | * Upgraded `fs-extra` to `^0.28.0` 59 | 60 | ### Improvements 61 | * Updated syntax used for `createStore` to match `redux@^3.1.0` 62 | * Cleaned up `connect` decorator in `HomeView` 63 | * Cleaned up flow types in `HomeView` 64 | 65 | 2.0.0-alpha.5 66 | ------------- 67 | 68 | ### Features 69 | * Upgraded `flow-bin` to `0.23.0` 70 | * Upgraded `fs-extra` to `^0.27.0` 71 | 72 | ### Improvements 73 | * Minor cleanup in Karma configuration 74 | * Added missing node-style index files in blueprints 75 | 76 | ### Fixes 77 | * Modified webpack manifest initialization to prevent syntax errors in some environments (https://github.com/davezuko/react-redux-starter-kit/issues/572) 78 | 79 | 2.0.0-alpha.4 80 | ------------- 81 | 82 | ### Features 83 | * Upgraded `react` to `^15.0.0` 84 | * Upgraded `react-dom` to `^15.0.0` 85 | * Upgraded `react-addons-test-utils` to `^15.0.0` 86 | * Upgraded `eslint-plugin-flow-vars` to `^0.3.0` 87 | 88 | ### Improvements 89 | * Updated `npm run deploy` to be environment agnostic (no longer forces `production`) 90 | * Added `npm run deploy:prod` (forces `production`, acts as old `npm run deploy`) 91 | * Added `npm run deploy:dev` (forces `development`) 92 | 93 | ### Fixes 94 | * Removed `strip_root` option in Flow to support Nuclide 95 | * Updated webpack development configuration to use correct `public_path` 96 | 97 | 98 | 2.0.0-alpha.3 99 | ------------- 100 | 101 | ### Features 102 | * Upgraded `flow-interfaces` to `^0.6.0` 103 | 104 | ### Improvements 105 | * Moved dependencies needed for production builds from devDependencies to regular dependencies 106 | 107 | ### Fixes 108 | * Production configuration now generates assets with absolute rather than relative paths 109 | 110 | ### Deprecations 111 | * Removed `eslint-loader` for performance reasons 112 | 113 | 2.0.0-alpha.2 114 | ------------- 115 | 116 | ### Features 117 | * Upgraded `eslint` to `^2.4.0` 118 | * Upgraded `babel-eslint` to `^6.0.0-beta.6` 119 | * Upgraded `better-npm-run` to `0.0.8` 120 | * Upgraded `phantomjs-polyfill` to `0.0.2` 121 | * Upgraded `karma-mocha-reporter` to `^2.0.0` 122 | * Upgraded `webpack` to `^1.12.14` 123 | * Upgraded `redux-thunk` to `^2.0.0` 124 | 125 | ### Improvements 126 | * Added `index.js` files for blueprints for convenient imports 127 | 128 | ### Fixes 129 | * Removed some `cssnano` options that caused potential conflicts with css modules 130 | * Updated flow to understand global webpack definitions 131 | 132 | 2.0.0-alpha.1 133 | ------------- 134 | 135 | ### Features 136 | * Upgraded `react-router-redux` from `^4.0.0-beta` to `^4.0.0` 137 | 138 | 2.0.0-alpha.0 139 | ------------- 140 | 141 | ### Features 142 | * Integrated with [redux-cli](https://github.com/SpencerCDixon/redux-cli) 143 | * Added support for [Flowtype](http://flowtype.org/) 144 | * Added `npm run flow:check` script 145 | * Added [chai-enzyme](https://github.com/producthunt/chai-enzyme) 146 | * Added `babel-plugin-transform-react-constant-elements` in production 147 | * Added `babel-plugin-transform-react-remove-prop-types` in production 148 | * Added `eslint-plugin-flowvars` 149 | * Added `better-npm-run` 150 | * Added loader for `.otf` files 151 | * Added `nodemon` for local server development 152 | * Added placeholder favicon, `humans.txt`, and `robots.txt` 153 | * Replaced `express` with `koa@^2.0.0-alpha` 154 | * Added `koa-proxy` with config support 155 | * Added `koa-conntect-history-api-fallback` 156 | * Upgraded `eslint` to `^2.0.0` 157 | * Upgraded `babel-eslint` to `^5.0.0` 158 | * Upgraded `eslint-plugin-react` to `^4.0.0` 159 | * Upgraded `yargs` to `^4.0.0` 160 | * Upgraded `html-webpack-plugin` from `^1.6.1` to `^2.7.1` 161 | * Upgraded `react-router` to `^2.0.0` 162 | * Replaced `redux-simple-router` with `react-router-redux` 163 | * Replaced `phantomjs` with `phantomjs-prebuilt` 164 | * Replaced Karma spec reporter with mocha reporter 165 | 166 | ### Improvements 167 | * Webpack optimization plugins are now correctly used only in production 168 | * Added ability to simultaneously use CSS modules and regular CSS 169 | * Added `karma-webpack-with-fast-source-maps` for selective and faster test rebuilds 170 | * Simplified environment-based webpack configuration 171 | * Fixed CSS being minified twice with both `cssnano` and `css-loader` 172 | * Updated `cssnano` to not use unsafe options by default 173 | * Redux devtools now looks for the browser extension if available 174 | * Added webpack entry point for tests to replace file globs in Karma 175 | * Made Webpack compiler script generic so it can accept any webpack configuration file 176 | * Added sample tests for counter redux module 177 | * Replaced `react-hmre` with `redbox-react` and `react-transform-hmr` 178 | * Disabled verbose uglify warnings during compilation 179 | * Updated route definition file to have access to the redux store 180 | * Updated server start message so link is clickable 181 | * `ExtractTextPlugin` is now correctly used whenever HMR is disabled 182 | * `npm run deploy` now cleans out `~/dist` directory 183 | * Miscellaneous folder structure improvements 184 | * Removed unnecessary `bin` file for Karma 185 | * Removed unnecessary `NotFoundView` 186 | * Re-enabled support for `.jsx` files 187 | * Specified compatible Node and NPM engines 188 | 189 | ### Fixes 190 | * Fixed some development-only code not being stripped from production bundles 191 | * Added rimraf for `~/dist` clearing to support Windows users 192 | * Fixed miscellaneous path issues for Windows users 193 | * Fixed source maps for Sass files 194 | * Updated server start debug message to display correct host 195 | 196 | ### Deprecations 197 | * Removed `redux-actions` 198 | * Removed `dotenv` 199 | * Removed `add-module-exports` babel plugin 200 | 201 | 1.0.0 202 | ----- 203 | 204 | ### Features 205 | * Upgraded from Babel 5 to Babel 6 :tada: 206 | * Added script to copy static assets from ~src/assets to ~/dist during compilation 207 | * Added CSS Modules (can be toggled on/off in config file) 208 | * Enabled source maps for CSS 209 | * Added `postcss-loader` 210 | * Added `debug` module to replace `console.log` 211 | * Added `json-loader` 212 | * Added `url-loader` for `(png|jpg)` files 213 | * Added `redux-actions` with demo 214 | * Upgraded `redux-devtools` from `^3.0.0-beta` to `^3.0.0` 215 | * Upgraded `redux-simple-router` from `^0.0.10` to `^1.0.0` 216 | * Upgraded `isparta` from `^2.0.0` to `^3.0.0` 217 | * Replaced `karma-sinon-chai` with `karma-chai-sinon` for peerDependencies fix 218 | * Added sample asynchronous action 219 | * Added example `composes` style to demo CSS modules in `HomeView` 220 | * Added `lint:fix` npm script 221 | * Added CONTRIBUTING document 222 | * Added placeholder favicon 223 | 224 | ### Improvements 225 | * Refactored application to follow ducks-like architecture 226 | * Improved how configuration determines when to apply HMR-specific Babel transforms 227 | * Replaced explicit aliases with `resolve.root` 228 | * Renamed karma configuration file to more widely-known `karma.conf` 229 | * Made `CoreLayout` a pure (stateless) component 230 | * Renamed debug namespace from `kit:*` to `app:*` 231 | * Standardized coding conventions 232 | * Added ability to easily specify environment-specific configuration overrides 233 | * Extended available configuration options 234 | * Improved miscellaneous documentation 235 | * Refactored webpack middleware in express server into separate files 236 | 237 | ### Fixes 238 | * Fixed DevTools imports so they are longer included in production builds 239 | * Added CSS best practices to root tag, node, and `core.scss` file 240 | * Disabled manifest extraction due to broken production builds 241 | * Updated Webpack dev server uses explicit publicPath during live development 242 | * Fixed Karma running tests twice after file change during watch mode 243 | 244 | ### Deprecations 245 | * Removed `eslint-config-airbnb` 246 | * Deprecated support for Node `^4.0.0` 247 | 248 | 0.18.0 249 | ----- 250 | 251 | ### Features 252 | * Replaces `webpack-dev-server` with `Express` and webpack middleware 253 | * Replaces `redux-router` with `redux-simple-router` 254 | * Use `postcss-loader` for autoprefixing rather than autoprefixer-loader 255 | * Configuration will now warn you of missing dependencies for vendor bundle 256 | * Upgrade `react-router` from `1.0.0-rc1` -> `^1.0.0` 257 | * Upgrade `css-loader` from `0.21.0` -> `0.23.0` 258 | * Upgrade `eslint-config-airbnb` from `0.1.0` to `^1.0.0` 259 | * Upgrade `karma-spec-reporter` from `0.0.21` to `0.0.22` 260 | * Upgrade `extract-text-webpack-plugin` from `^0.8.0` to `^0.9.0` 261 | 262 | ### Improvements 263 | * Compiled `index.html` is now minified 264 | * Content hashes are now injected directly into the filename rather than appended as query strings 265 | * Better reporting of webpack build status 266 | * Use object-style configuration for `sass-loader` rather than inline query string 267 | * Rename `test:lint` task to `lint:tests` 268 | * Various documentation improvements 269 | 270 | ### Fixes 271 | * Content hash is now longer duplicated in CSS bundle 272 | * Karma plugins are autoloaded now, rather than explicitly defined 273 | * Removes extraneous wrapping div in `Root` container 274 | * Fixes awkwardly named arguments to `createReducer` utility 275 | * Add missing alias to `~/src/store` 276 | 277 | 0.17.0 278 | ------ 279 | 280 | ### Features 281 | * Karma coverage now generates proper coverage reports 282 | * Added chai-as-promised 283 | * Added `npm run lint` script to lint all `~/src` code 284 | * Added `npm run test:lint` script to lint all `*.spec.js` files in `~/tests` 285 | * Updated `npm run deploy` to explicitly run linter on source code 286 | * Added `dotenv` (thanks [dougvk](https://github.com/dougvk)) 287 | 288 | ### Improvements 289 | * Renamed application entry point from `index.js` -> `app.js` (clarifies intent and helps with coverage reports) 290 | * Refactored sample counter constants and actions to their appropriate locations (thanks [kyleect](https://github.com/kyleect)) 291 | * Devtools in `npm run dev:nw` now take up the full window (thanks [jhgg](https://github.com/jhgg)) 292 | * Webpack no longer runs an eslint pre-loader (cleans up console messages while developing) 293 | * Moved tests into their own directory (alleviates lint/organization issues) 294 | * Renamed `stores` to `store` to be more intuitive 295 | * Webpack-dev-server now uses a configurable host (thanks [waynelkh](https://github.com/waynelkh)) 296 | * Sass-loader is now configured independently of its loader definition 297 | * Upgraded `redux-devtools` from `^2.0.0` -> `^3.0.0` 298 | * Upgraded `react-transform-catch-errors` from `^0.1.0` -> `^1.0.0` 299 | 300 | ### Fixes 301 | * Fix .editorconfig missing a setting that caused it to not be picked up in all IDE's 302 | * Cleans up miscellaneous lint errors. 303 | 304 | 305 | 0.16.0 306 | ------ 307 | 308 | ### Features 309 | * Adds redux-router (thanks to [dougvk](https://github.com/dougvk)) 310 | * Adds redux-thunk middleware 311 | * Adds loaders for font files (thanks to [nodkz](https://github.com/nodkz)) 312 | * Adds url loader 313 | * Upgrades React dependencies to stable `^0.14.0` 314 | * Upgrades react-redux to `^4.0.0` 315 | 316 | ### Improvements 317 | * Cleans up unused configuration settings 318 | * configureStore no longer relies on a global variable to determine whether or not to enable devtool middleware 319 | * Removes unused invariant and ImmutableJS vendor dependencies 320 | * Removes unused webpack-clean plugin 321 | * Tweaks .js loader configuration to make it easier to add json-loader 322 | * Updates counter example to demonstrate `mapDispatchToProps` 323 | * Force `components` directory inclusion 324 | * Documentation improvements 325 | 326 | 0.15.2 327 | ------ 328 | 329 | ### Fixes 330 | * Remove unused/broken "minify" property provided to HtmlWebpackPlugin configuration. 331 | 332 | 0.15.1 333 | ------ 334 | 335 | ### Fixes 336 | * Dev server now loads the correct Webpack configuration with HMR enabled. 337 | * Redbox-React error catcher is now loaded correctly in development. 338 | 339 | 0.15.0 340 | ------ 341 | 342 | ### Fixes 343 | * HMR is now longer enabled for simple compilations. You can now compile development builds that won't constantly ping a non-existent dev server. 344 | * react-transform-hmr now only runs when HMR is enabled. 345 | 346 | ### Improvements 347 | * Unit tests now only run in watch mode when explicitly requested. This makes it much more convenient to run tests on any environment without having to struggle with the `singleRun` flag in Karma. 348 | * There is now only a single webpack configuration (rather than one for the client and one for the server). As a result, configuration has once again been split into a base configuration which is then extended based on the current `NODE_ENV`. 349 | 350 | ### Deprecations 351 | * Removed Koa server (sad days). 352 | 353 | 0.14.0 354 | ------ 355 | 356 | #### Features 357 | * Replaces `react-transform-webpack-hmr` with its replacement `react-transform-hmr`. Thanks to [daviferreira](https://github.com/daviferreira). 358 | * Replaces `delicate-error-reporter` with `redbox-react`. Thanks to [bulby97](https://github.com/bulby97). 359 | * Created a `no-server` branch [here](https://github.com/davezuko/react-redux-starter-kit/tree/no-server) to make it easier for users who don't care about Koa. 360 | 361 | #### Improvements 362 | * Renames `client` directory to `src` to be more intuitive. 363 | * `inline-source-map` has been replaced by `source-map` as the default webpack devTool to reduce build sizes. 364 | * Refactors configuration file to focus on commonly-configured options rather than mixing them with internal configuration. 365 | * Swaps `dev` and `dev:debug` so debug tools are now enabled by default and can be disabled instead with `dev:no-debug`. 366 | * Repositions Redux devtools so they no longer block errors displayed by `redbox-react`. 367 | * Adds explicit directory references to some `import` statements to clarify which are from from `npm` and which are local. 368 | 369 | #### Fixes 370 | * Fixes naming in `HomeView` where `mapStateToProps` was incorrectly written as `mapDispatchToProps`. 371 | 372 | #### Deprecations 373 | * Removes local test utilities (in `~/src/utils/test`). 374 | 375 | 0.13.0 376 | ------ 377 | 378 | #### Features 379 | * Adds `react-transform-catch-errors` along with `delicate-error-reporter`. Thanks [bulby97](https://github.com/bulby97) for this! 380 | 381 | #### Fixes 382 | * ExtractTextPlugin is once again production only. This fixes an issue where styles wouldn't be hot reloaded with Webpack. 383 | 384 | 0.12.0 385 | ------ 386 | 387 | #### Features 388 | * Upgrades react-router to `^3.0.0`. This is the only reason for the minor-level version bump. 389 | * Webpack now uses OccurrenceOrderPlugin to produce consistent bundle hashes. 390 | 391 | #### Fixes 392 | * Adds `history` to vendor dependencies to fix HMR caused by upgrade to react-router `1.0.0-rc` 393 | 394 | #### Improvements 395 | * Server no longer modifies initial counter state by default. 396 | * Adds invariant error in route rendering method to enforce router state definition through props. 397 | 398 | 0.11.0 399 | ------ 400 | 401 | #### Features 402 | * Upgrades all React dependencies to `0.14.0-rc1` 403 | * Upgrades react-router to `1.0.0-rc` 404 | * Updates client and server rendering accordingly 405 | * Adds Sinon-Chai for improved assertions and function spies 406 | * Adds option to disable eslint when in development 407 | 408 | #### Improvements 409 | * Improved example unit tests using react-addons-test-utils and Sinon Chai 410 | 411 | 0.10.0 412 | ------ 413 | 414 | #### Features 415 | * Initial state can now be injected from the server (still WIP). 416 | * Adds react-addons-test-utils as a devDependency. 417 | 418 | #### Improvements 419 | * Eslint no longer prevents webpack from bundling in development mode if an error is emitted. 420 | * See: https://github.com/MoOx/eslint-loader/issues/23 421 | * Updates all `.jsx` files to `.js`. (https://github.com/davezuko/react-redux-starter-kit/issues/37) 422 | * Updates all React component file names to be ProperCased. 423 | 424 | 0.9.0 425 | ----- 426 | 427 | #### Features 428 | * Koa server now uses gzip middleware. 429 | 430 | #### Improvements 431 | * Switches out react-hot-loader in favor of [react-transform-webpack-hmr](https://github.com/gaearon/react-transform-webpack-hmr). 432 | * Eslint configuration now uses Airbnb's configuration (slightly softened). 433 | * Migrates all actual development dependencies to devDependencies in `package.json`. 434 | * Example store and view are now more intuitive (simple counter display). 435 | * CSS-loader dependency upgraded from `0.16.0` to `0.17.0`. 436 | 437 | #### Deprecations 438 | * Removes unnecessary object-assign dependency. 439 | 440 | 0.8.0 441 | ----- 442 | 443 | #### Improvements 444 | * All build-, server-, and client-related code is now ES6. 445 | * Significantly refactors how client and server webpack configs are built. 446 | * `reducers/index.js` now exports combined root reducer. 447 | * Client application code now lives in `~/client` instead of `~/src` in order to conform to Redux standards. 448 | 449 | #### Fixes 450 | * Redux store now explicitly handles HMR. 451 | 452 | #### Changes 453 | * Webpack compiler configurations are no longer merged on top of a base default configuration. This can become unwieldy and even though explicitly writing each configuration file out is more verbose, it ends up being more maintainable. 454 | 455 | #### Deprecations 456 | * Quiet mode has been removed (`npm run dev:quiet`). 457 | 458 | 0.7.0 459 | ----- 460 | #### New Features 461 | * Support for redux-devtools in separate window with `dev:debugnw` 462 | - Thanks to [mlusetti](https://github.com/mlusetti) 463 | 464 | #### Improvements 465 | * Upgrades react to `0.14.0-beta3` 466 | * Upgrades react to `0.14.0-beta3` 467 | * Upgrades redux to `^2.0.0` 468 | * Upgrades redux-devtools to `^2.0.0` 469 | * Upgrades react-redux to `^2.0.0` 470 | 471 | #### Fixes 472 | * Configuration file name trimming on Windows machines 473 | - Thanks to [nuragic](https://github.com/nuragic) 474 | 475 | 0.6.0 476 | ----- 477 | 478 | #### Fixes 479 | * Fixes potential spacing issues when Webpack tries to load a config file. 480 | - Thanks to [nuragic](https://github.com/nuragic) for his [PR](https://github.com/davezuko/react-redux-starter-kit/pull/32) 481 | 482 | #### Improvements 483 | * Upgrades koa to `1.0.0` 484 | * Upgrades react-redux to `1.0.0` 485 | * Upgrades object-assign to `0.4.0` 486 | 487 | 0.5.0 488 | ----- 489 | 490 | #### Improvements 491 | * Restructures src directory so filenames are more identifiable. 492 | 493 | #### Breaking Changes 494 | * Removes action-creators alias as it's unlikely to be used. 495 | 496 | 0.4.0 497 | ----- 498 | 499 | #### Improvements 500 | * Cleans up/removes example code per https://github.com/davezuko/react-redux-starter-kit/issues/20 501 | 502 | 0.3.1 503 | ----- 504 | 505 | #### Fixes 506 | * https://github.com/davezuko/react-redux-starter-kit/issues/19 507 | - Invalid initialStates from server-side router will now yield to the next middleware. 508 | 509 | 0.3.0 510 | ----- 511 | 512 | #### Improvements 513 | * Bumps Redux version to first major release. 514 | * Bumps Redux-devtools version to first major release. 515 | 516 | #### Fixes 517 | * Fixes broken hot-reload in `:debug` mode. 518 | - Temporarily fixed by moving `redux-devtools` into the vendor bundle. 519 | 520 | 0.2.0 521 | ----- 522 | 523 | #### Improvements 524 | * Weakens various eslint rules that were too opinionated. 525 | - notable: `one-var` and `key-spacing`. 526 | 527 | Thanks to [StevenLangbroek](https://github.com/StevenLangbroek) for the following: 528 | * Adds alias `utils` to reference `~/src/utils` 529 | * Adds `createConstants` utility. 530 | * Adds `createReducer` utility. 531 | * Refactors `todos` reducer to use a function map rather than switch statements. 532 | 533 | #### Fixes 534 | * Nested routes are now loaded correctly in react-router when using BrowserHistory. 535 | * Bundle compilation now fails if an eslint error is encountered when running a production build. 536 | - Thanks [clearjs](https://github.com/clearjs) 537 | * Upgrades all outdated dependencies. 538 | - Karma, eslint, babel, sass-loader, and a handful more. 539 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Some basic conventions for contributing to this project. 4 | 5 | ### General 6 | 7 | Please make sure that there aren't existing pull requests attempting to address the issue mentioned. Likewise, please check for issues related to update, as someone else may be working on the issue in a branch or fork. 8 | 9 | * Non-trivial changes should be discussed in an issue first 10 | * Develop in a topic branch, not master 11 | * Squash your commits 12 | 13 | ### Linting 14 | 15 | Please check your code using `npm run lint` before submitting your pull requests, as the CI build will fail if `eslint` fails. 16 | 17 | ### Commit Message Format 18 | 19 | Each commit message should include a **type**, a **scope** and a **subject**: 20 | 21 | ``` 22 | (): 23 | ``` 24 | 25 | Lines should not exceed 100 characters. This allows the message to be easier to read on github as well as in various git tools and produces a nice, neat commit log ie: 26 | 27 | ``` 28 | #271 feat(standard): add style config and refactor to match 29 | #270 fix(config): only override publicPath when served by webpack 30 | #269 feat(eslint-config-defaults): replace eslint-config-airbnb 31 | #268 feat(config): allow user to configure webpack stats output 32 | ``` 33 | 34 | #### Type 35 | 36 | Must be one of the following: 37 | 38 | * **feat**: A new feature 39 | * **fix**: A bug fix 40 | * **docs**: Documentation only changes 41 | * **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing 42 | semi-colons, etc) 43 | * **refactor**: A code change that neither fixes a bug or adds a feature 44 | * **test**: Adding missing tests 45 | * **chore**: Changes to the build process or auxiliary tools and libraries such as documentation 46 | generation 47 | 48 | #### Scope 49 | 50 | The scope could be anything specifying place of the commit change. For example `webpack`, 51 | `babel`, `redux` etc... 52 | 53 | #### Subject 54 | 55 | The subject contains succinct description of the change: 56 | 57 | * use the imperative, present tense: "change" not "changed" nor "changes" 58 | * don't capitalize first letter 59 | * no dot (.) at the end 60 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 David Zukowski 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deprecation Warning 2 | 3 | This project was started at the advent of the Redux ecosystem, and was intended to help users get up and running quickly. Since then, tooling and best practices have evolved tremendously. In order to get the most modern experience possible, I recommend checking out something like [create-react-app](https://github.com/facebookincubator/create-react-app) which is supported by many core React and Redux developers. 4 | 5 | You are welcome to use this project if it is a better fit for your needs, but if you are brand new to the ecosystem I highly recommend checking out something that has received more recent updates. 6 | 7 | Thank you to everyone who made this project possible over the past year(s). 8 | 9 | # React Redux Starter Kit 10 | 11 | [![Build Status](https://travis-ci.org/davezuko/react-redux-starter-kit.svg?branch=master)](https://travis-ci.org/davezuko/react-redux-starter-kit?branch=master) 12 | [![dependencies](https://david-dm.org/davezuko/react-redux-starter-kit.svg)](https://david-dm.org/davezuko/react-redux-starter-kit) 13 | [![devDependency Status](https://david-dm.org/davezuko/react-redux-starter-kit/dev-status.svg)](https://david-dm.org/davezuko/react-redux-starter-kit#info=devDependencies) 14 | [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) 15 | 16 | This starter kit is designed to get you up and running with a bunch of awesome front-end technologies. 17 | 18 | The primary goal of this project is to provide a stable foundation upon which to build modern web appliications. Its purpose is not to dictate your project structure or to demonstrate a complete real-world application, but to provide a set of tools intended to make front-end development robust, easy, and, most importantly, fun. Check out the full feature list below! 19 | 20 | Finally, This project wouldn't be possible without the help of our many contributors. What you see today is the product of hundreds changes made to keep up with an ever-evolving ecosystem. [Thank you](#thank-you) for all of your help. 21 | 22 | ## Table of Contents 23 | 1. [Requirements](#requirements) 24 | 1. [Installation](#getting-started) 25 | 1. [Running the Project](#running-the-project) 26 | 1. [Project Structure](#project-structure) 27 | 1. [Live Development](#local-development) 28 | * [Hot Reloading](#hot-reloading) 29 | * [Redux DevTools](#redux-devtools) 30 | 1. [Routing](#routing) 31 | 1. [Testing](#testing) 32 | * [dirty-chai](#dirty-chai) 33 | 1. [Building for Production](#building-for-production) 34 | 1. [Deployment](#deployment) 35 | 1. [Thank You](#thank-you) 36 | 37 | ## Requirements 38 | * node `^5.0.0` 39 | * yarn `^0.23.0` or npm `^3.0.0` 40 | 41 | ## Installation 42 | 43 | After confirming that your environment meets the above [requirements](#requirements), you can create a new project based on `react-redux-starter-kit` by doing the following: 44 | 45 | ```bash 46 | $ git clone https://github.com/davezuko/react-redux-starter-kit.git 47 | $ cd 48 | ``` 49 | 50 | When that's done, install the project dependencies. It is recommended that you use [Yarn](https://yarnpkg.com/) for deterministic dependency management, but `npm install` will suffice. 51 | 52 | ```bash 53 | $ yarn # Install project dependencies (or `npm install`) 54 | ``` 55 | 56 | ## Running the Project 57 | 58 | After completing the [installation](#installation) step, you're ready to start the project! 59 | 60 | ```bash 61 | $ yarn start # Start the development server (or `npm start`) 62 | ``` 63 | 64 | While developing, you will probably rely mostly on `yarn start`; however, there are additional scripts at your disposal: 65 | 66 | |`yarn